您好,登錄后才能下訂單哦!
Unix系統性能監控工具之--SAR
系統環境:
操作系統: AIX 5.3.9
Oracle: Oracle 10gR2
SAR可用于監控Unix系統性能,幫助我們分析性能瓶頸。sar工具的使用方式為”sar [選項] intervar [count]”,其中interval為統計信息采樣時間,count為采樣次數。
下文將說明如何使用sar獲取以下性能分析數據:
整體CPU使用統計
各個CPU使用統計
內存使用情況統計
整體I/O情況
各個I/O設備情況
網絡統計
常用的選項包括:
-b:報告I/O使用情況以及傳輸速率。(只適用于2.5及之前的內核,所以新內核有可能不支持這個選項) -B:報告“頁”使用情況 -c:報告進程創建情況 -d:報告每一個塊設備的使用情況 (當你使用時,你會發現在DEV列有類似dev1-7格式的字符串, 其中1代表設備的主序號,n代表設備的從序號, 而且rd_sec/s列和wr_sec/s列的單位都是512bytes,也就是512B,也就是0.5KB) -I:匯報中斷情況 -n:匯報網絡情況 -P:設定CPU -q:匯報隊列長度和負載信息 -r:匯報內存和交換區使用情況 -R:匯報內存情況 -u:匯報CPU使用情況 -v:匯報i節點、文件和其他內核表信息 -w:匯報系統上下文切換情況 -x:可以針對某個特定PID給出統計信息, 可以直接指定進程ID號; 也可以指定為SELF,這樣就是檢測sar進程本身; 如果設定為ALL,則表示匯報所有系統進程信息。 -X:匯報特定PID的子進程的信息 -y:設定TTY設備的信息。
案例分析:
1、系統環境
[root@aix211 /]#lspv
hdisk0 00040f8aaa29d28e rootvg active hdisk1 000e1a6ce663b4af asmvg active
[root@aix211 /]#lsvg -l asmvg
asmvg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT lv_asm1 jfs 64 64 1 open/syncd N/A lv_asm2 jfs 64 64 1 open/syncd N/A lv_asm3 jfs 64 64 1 open/syncd N/A lv_asm4 jfs 64 64 1 open/syncd N/A
SQL> set linesize 120
SQL> select group_number,name,state from v$asm_diskgroup;
GROUP_NUMBER NAME STATE ------------ ------------------------------ ----------- 1 DG1 MOUNTED 2 RCY1 MOUNTED
SQL> select GROUP_NUMBER,DISK_NUMBER,STATE,NAME,PATH from v$asm_disk;
GROUP_NUMBER DISK_NUMBER STATE NAME PATH ------------ ----------- -------- ------------------------------ ------------------------ 1 0 NORMAL DG1_0000 /dev/rlv_asm1 1 1 NORMAL DG1_0001 /dev/rlv_asm2 2 0 NORMAL RCY1_0000 /dev/rlv_asm3 2 1 NORMAL RCY1_0001 /dev/rlv_asm4
在hdisk1磁盤上建立ASMVG磁盤組,并建立邏輯卷;在邏輯卷的基礎上,建立ASM disk;
2、數據庫環境
SQL> set linesize 120
SQL> select file_id,file_name,tablespace_name from dba_data_files
FILE_ID FILE_NAME TABLESPACE_NAME ---------- -------------------------------------------------- --------------------------- 6 +DG1/prod/datafile/tbs2.265.853498689 TBS2 4 +DG1/prod/datafile/users.261.848857443 USERS 3 +DG1/prod/datafile/sysaux.258.848857287 SYSAUX 2 +DG1/prod/datafile/undotbs1.260.848857407 UNDOTBS1 1 +DG1/prod/datafile/system.257.848857161 SYSTEM 5 +DG1/prod/datafile/example.259.848857363 EXAMPLE
SQL> select file_id,file_name,tablespace_name from dba_temp_files;
FILE_ID FILE_NAME TABLESPACE_NAME ---------- -------------------------------------------------- --------------------------- 2 +DG1/prod/tempfile/temp.262.848858041 TEMP
SQL> col member for a50
SQL> select group#,member from v$logfile order by 1;
GROUP# MEMBER ---------- -------------------------------------------------- 5 +DG1/prod/onlinelog/group_5.263.848858213 5 +RCY1/prod/onlinelog/group_5.256.848858217 6 +DG1/prod/onlinelog/group_6.264.848858253 6 +RCY1/prod/onlinelog/group_6.257.848858259
SQL> show parameter log
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_1 string location=/arch/arch_prod
2、案例(執行數據插入)
SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE EMP1 TABLE DEPT1 TABLE 6 rows selected. SQL> create table t1 (id int); Table created. SQL> begin 2 for i in 1..100000 loop 3 execute immediate 'insert into t1 values ('||i||')'; 4 end loop; 5 end; 6 / PL/SQL procedure successfully completed.
3、監控系統性能
1)topas監控系統整體性能
[root@aix211 /]#topas
Topas Monitor for host: aix211 EVENTS/QUEUES FILE/TTY Mon Jul 21 15:36:07 2014 Interval: 2 Cswitch 137 Readch 1250 Syscall 5825 Writech 8473 CPU User% Kern% Wait% Idle% Reads 9 Rawin 0 ALL 50.2 0.2 3.2 46.2 Writes 3 Ttyout 281 Forks 0 Igets 0 Network KBPS I-Pack O-Pack KB-In KB-Out Execs 0 Namei 20 en0 0.6 4.5 1.0 0.3 0.4 Runqueue 3.5 Dirblk 0 lo0 0.1 1.0 1.0 0.0 0.0 Waitqueue 0.0 en1 0.0 0.0 0.0 0.0 0.0 PAGING MEMORY Disk Busy% KBPS TPS KB-Read KB-Writ Faults 11 Real,MB 4096 hdisk1 24.0 1.1K 13.0 0.0 1.1K Steals 0 % Comp 37.7 hdisk0 0.0 0.0 0.0 0.0 0.0 PgspIn 0 % Noncomp 24.4 hdisk3 0.0 0.0 0.0 0.0 0.0 PgspOut 0 % Client 21.1 hdisk2 0.0 0.0 0.0 0.0 0.0 PageIn 0 cd0 0.0 0.0 0.0 0.0 0.0 PageOut 0 PAGING SPACE Sios 0 Size,MB 4096 Name PID CPU% PgSp Owner % Used 0.0 oracle 544852 49.9 10.6 oracle NFS (calls/sec) % Free 100.0 java 331954 0.1 20.3 root ServerV2 0 topas 344118 0.1 1.5 root ClientV2 0 Press: ocssd.bi 364724 0.0 27.6 oracle ServerV3 0 "h" for help oracle 418002 0.0 9.4 oracle ClientV3 0 "q" to quit oracle 389330 0.0 13.9 oracle pnsd 311512 0.0 0.5 root gil 49176 0.0 0.1 root oracle 196688 0.0 10.5 oracle nfsd 151682 0.0 0.3 root oracle 327908 0.0 7.5 oracle java 295068 0.0 36.6 root rpc.lock 237718 0.0 0.2 root oracle 377064 0.0 7.4 oracle oracle 503854 0.0 12.4 oracle xntpd 192620 0.0 0.4 root oracle 446498 0.0 12.3 oracle oracle 356372 0.0 8.0 oracle oracle 409802 0.0 7.3 oracle oracle 380952 0.0 8.0 oracle
可以看到,oracle用戶消耗了大部分資源
2)分別查看cpu的資源使用(2個cpu)
[root@aix211 /]#sar -P 0 2 2
AIX aix211 3 5 00040F8A4C00 07/21/14 System configuration: lcpu=2 mode=Capped 15:37:09 cpu %usr %sys %wio %idle 15:37:11 0 0 1 9 90 15:37:13 0 0 1 21 78 Average 0 1 1 15 84
[root@aix211 /]#sar -P 1 2 2
AIX aix211 3 5 00040F8A4C00 07/21/14 System configuration: lcpu=2 mode=Capped 15:37:20 cpu %usr %sys %wio %idle 15:37:22 1 99 1 0 0 15:37:24 1 99 1 0 0 Average 1 100 0 0 0 以上主要的統計項的解析如下: %user: 用戶態下CPU使用時間比率 %system: 內核態下CPU使用時間比率 %iowait: CPU等待I/O占用時間比率 %idle: CPU空閑時間比率
3)查看磁盤I/O
[root@aix211 /]#sar -d 2 2
AIX aix211 3 5 00040F8A4C00 07/21/14 System configuration: lcpu=2 drives=5 mode=Capped 15:37:49 device %busy avque r+w/s Kbs/s avwait avserv 15:37:51 hdisk0 0 0.0 0 0 0.0 0.0 hdisk2 0 0.0 0 0 0.0 0.0 hdisk3 0 0.0 0 0 0.0 0.0 hdisk1 7 0.0 4 47 12.2 17.0 cd0 0 0.0 0 0 0.0 0.0 15:37:53 hdisk0 0 0.0 0 0 0.0 0.0 hdisk2 0 0.0 0 0 0.0 0.0 hdisk3 0 0.0 0 0 0.0 0.0 hdisk1 24 1.1 13 1033 169.4 18.3 cd0 0 0.0 0 0 0.0 0.0 Average hdisk0 0 0.0 0 0 0.0 0.0 hdisk2 0 0.0 0 0 0.0 0.0 hdisk3 0 0.0 0 0 0.0 0.0 hdisk1 15 0.6 8 540 90.8 17.7 cd0 0 0.0 0 0 0.0 0.0
[root@aix211 /]#sar -b 2 2
AIX aix211 3 5 00040F8A4C00 07/21/14 System configuration: lcpu=2 mode=Capped 15:18:49 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 15:18:51 0 0 0 0 0 0 0 13 15:18:53 0 0 0 0 0 0 0 0 Average 0 0 0 0 0 0 0 6 以上各列的含義為: tps: 每秒向磁盤設備請求數據的次數,包括讀、寫請求,為rtps與wtps的和。出于效率考慮,每一次IO下發后并不是立即處理請求,而是將請求合并(merge),這里tps指請求合并后的請求計數。 rtps: 每秒向磁盤設備的讀請求次數 wtps: 每秒向磁盤設備的寫請求次數 bread: 每秒從磁盤讀的bytes數量 bwrtn: 每秒向磁盤寫的bytes數量
[root@aix211 /]#iostat 2 2
System configuration: lcpu=2 drives=5 paths=1 vdisks=0 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.0 29.0 49.7 1.0 35.8 13.5 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.0 0.0 0.0 0 0 hdisk2 0.0 0.0 0.0 0 0 hdisk3 0.0 0.0 0.0 0 0 hdisk1 29.0 1214.0 15.0 0 2428 cd0 0.0 0.0 0.0 0 0 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.0 260.5 49.7 0.8 49.5 0.0 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.0 0.0 0.0 0 0 hdisk2 0.0 0.0 0.0 0 0 hdisk3 0.0 0.0 0.0 0 0 hdisk1 0.0 0.0 0.0 0 0 cd0 0.0 0.0 0.0 0 0
[root@aix211 /]#iostat -D
System configuration: lcpu=2 drives=5 paths=1 vdisks=0 hdisk0 xfer: %tm_act bps tps bread bwrtn 1.0 34.1K 2.6 7.4K 26.7K read: rps avgserv minserv maxserv timeouts fails 1.1 4.1 0.1 95.6 0 0 write: wps avgserv minserv maxserv timeouts fails 1.5 8.8 0.4 83.4 0 0 queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull 18.9 0.0 679.0 0.0 0.0 0.9 hdisk2 xfer: %tm_act bps tps bread bwrtn 0.0 0.0 0.0 0.0 0.0 read: rps avgserv minserv maxserv timeouts fails 0.0 0.0 0.0 0.0 0 0 write: wps avgserv minserv maxserv timeouts fails 0.0 0.0 0.0 0.0 0 0 queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull 0.0 0.0 0.0 0.0 0.0 0.0 hdisk3 xfer: %tm_act bps tps bread bwrtn 0.0 0.0 0.0 0.0 0.0 read: rps avgserv minserv maxserv timeouts fails 0.0 0.0 0.0 0.0 0 0 write: wps avgserv minserv maxserv timeouts fails 0.0 0.0 0.0 0.0 0 0 queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull 0.0 0.0 0.0 0.0 0.0 0.0 hdisk1 xfer: %tm_act bps tps bread bwrtn 9.1 1.1M 49.6 1.0M 66.5K read: rps avgserv minserv maxserv timeouts fails 46.1 0.6 0.2 39.9 0 0 write: wps avgserv minserv maxserv timeouts fails 3.4 18.1 3.8 85.5 0 0 queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull 12.1 0.0 5.8S 0.3 0.0 49.6 cd0 xfer: %tm_act bps tps bread bwrtn 0.0 0.0 0.0 0.0 0.0 --------------------------------------------------------------------------------
4)查看內存使用情況
[root@aix211 /]#sar -r 2 2
AIX aix211 3 5 00040F8A4C00 07/21/14 System configuration: lcpu=2 mem=4096MB mode=Capped 15:38:12 slots cycle/s fault/s odio/s 15:38:14 1046571 0.00 44.00 0.00 15:38:16 1046571 0.00 13.00 0.00 Average 1046571 0 28 0 上面輸出的內存單位為”kb”
@有以上案例可以看出,I/O的資源都在hdisk1上,hdisk1為datafile和redolog的存儲磁盤(ASM磁盤組),所以在做DML操作時,產生了大量的I/O.
備注:
SAR怎么控制信息輸出的時間間隔和次數?
有兩個參數非常非常常用,就是“時間間隔”和“輸出次數”。
時間間隔表示兩次信息輸出之間的時間間隔,單位是秒。如果這個值被設置為0,則表示所輸出的信息是從開機到現在為止的信息平均值。如果不是0,sar計算就都是從當前開始的信息的平均值。
輸出次數表示輸出系統信息的次數,默認是1次。如果這個值被設置為0,則會永遠的輸出下去。
比如:sar 60 5 表示每60秒輸出一次,共輸出5次。
怎么把sar輸出的這些有用信息存到文件中去呢?
sar專門提供了一個選項-o filename,你只要使用它,就可以嘍!
比如 sar 5 6 -o sys_info
不過,不幸的是,當你用cat看sys_info時發現全都是亂碼,呵呵,別著急,sar為你準備了-f filename選項,你只要用-f設定要讀取的信息存儲文件,就可以清晰地讀出信息了。
比如sar -f sys_info。
如果你覺得這種格式有些不利于處理,試試加上-h選項,你將獲得不一樣的體驗。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。