閱讀460 返回首頁    go 阿裏雲 go 技術社區[雲棲]


sar usage

Linux統計/監控工具SAR詳細介紹:要判斷一個係統瓶頸問題,有時需要幾個 sar 命令選項結合起來使用,例如:

懷疑CPU存在瓶頸,可用 sar -u 和 sar -q deng 等來查看    

懷疑內存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看    

懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看

 


注釋: sar -q 用於查詢 cpu 隊列信息
02時50分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
03時00分01秒         0       132      0.00      0.00      0.00

信息來源於 /proc/loadavg
 cat /proc/loadavg
0.00 0.00 0.00 1/132 1976
run-sz 隊列中占用 cpu 的任務
plist-sz  cpu 隊列中任務個數

 

 

用 /usr/lib/sa/ 中的三個工具實現的:

  • sa1 :收集並存儲每天係統動態信息到一個二進製的文件中,用作 sadc 的前端程序
  • sa2 :收集每天的係統活躍信息寫入總結性的報告,用作 sar 的前端程序
  • sadc :係統動態數據收集工具,收集的數據被寫入一個二進製的文件中,它被用作 sar 工具的後端

在 CentOS 係統的默認設置中,以如下的方式使用這三個工具:

  1. 在守護進程 /etc/rc.d/init.d/sysstat 中使用 /usr/lib/sa/sadc -F -L - 命令創建當日記錄文件,文件為 /var/log/sa/saDD,其中 DD 為當天的日期。當係統重新啟動後,會向文件 /var/log/sa/saDD 輸出類似 11:37:16 AM LINUX RESTART 這樣的行信息。
  2. 在 cron 任務 /etc/cron.d/sysstat 中每隔10分鍾執行一次 /usr/lib/sa/sa1 1 1 命令,將信息寫入文件 /var/log/sa/saDD
  3. 在 cron 任務 /etc/cron.d/sysstat 中每天 23:53 執行一次 /usr/lib/sa/sa2 -A 命令,將當天的匯總信息寫入文件 /var/log/sa/saDD

您可以修改 /etc/cron.d/sysstat 以適合您的需要。

另外,文件 /var/log/sa/saDD 為二進製文件,不能使用 more、less 等文本工具查看,必須用 sar 或 sadf 命令查看。

 

在使用 Linux 係統時,常常會遇到各種各樣的問題,比如係統容易死機或者運行速度突然變慢,這時我們常常猜測:是否硬盤空間不足,是否內存不足,是否 I/O 出現瓶頸,還是係統的核心參數出了問題?這時,我們應該考慮使用 sar 工具對係統做一個全麵了解,分析係統的負載狀況。

sar(System Activity Reporter)是係統活動情況報告的縮寫。sar 工具將對係統當前的狀態進行取樣,然後通過計算數據和比例來表達係統的當前運行狀態。它的特點是可以連續對係統取樣,獲得大量的取樣數據;取樣數據和分析的結果都可以存入文件,所需的負載很小。 sar 是目前 Linux 上最為全麵的係統性能分析工具之一,可以從多方麵對係統的活動進行報告,包括:文件的讀寫情況、係統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。為了提供不同的信息,sar 提供了豐富的選項、因此使用較為複雜。

 

sar 的命令格式為:

sar  [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
     [ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
     [ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
     [ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ] 
     [ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
     [ -o [ filename ] | -f [ filename ] ]
     [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] 
     [ interval [ count ] ]

其中:

  • interval : 為取樣時間間隔
  • count : 為輸出次數,若省略此項,默認值為 1

常用選項:

選項 說明
-A 等價於 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL
-b 顯示I/O和傳送速率的統計信息
-B 輸出內存頁麵的統計信息
-c 輸出進程統計信息,每秒創建的進程數
-d 輸出每一個塊設備的活動信息
-i interval 指定間隔時長,單位為秒
-p 顯示友好設備名字,以方便查看,也可以和-d 和-n 參數結合使用,比如 -dp 或-np
-q 輸出進程隊列長度和平均負載狀態統計信息
-r 輸出內存和交換空間的統計信息
-R 輸出內存頁麵的統計信息
-t 讀取 /var/log/sa/saDD 的數據時顯示其中記錄的原始時間,如果沒有這個參數使用用戶的本地時間
-u 輸出CPU使用情況的統計信息
-v 輸出inode、文件和其他內核表的統計信息
-V 輸出版本號信息
-w 輸出係統交換活動信息
-W 輸出係統交換的統計信息
-y 輸出TTY設備的活動信息
-n {DEV|EDEV|NFS|NFSD|SOCK|ALL} 分析輸出網絡設備狀態統計信息。
    DEV 報告網絡設備的統計信息
    EDEV 報告網絡設備的錯誤統計信息
    NFS 報告 NFS 客戶端的活動統計信息
    NFSD 報告 NFS 服務器的活動統計信息
    SOCK 報告網絡套接字(sockets)的使用統計信息
    ALL 報告所有類型的網絡活動統計信息
-x {pid|SELF|ALL} 輸出指定進程的統計信息。
    pid 用 pid 指定特定的進程
    SELF 表示 sar 自身
    ALL 表示所有進程
-X {pid|SELF|ALL} 輸出指定進程的子進程的統計信息
-I {irq|SUM|ALL|XALL} 輸出指定中斷的統計信息。
    irq 指定中斷號
    SUM 指定輸出每秒接收到的中斷總數
    ALL 指定輸出前16個中斷
    XALL 指定輸出全部的中斷信息
-P {cpu|ALL} 輸出指定 CPU 的統計信息
    -o filename 將輸出信息保存到文件 filename
    -f filename 從文件 filename 讀取數據信息。filename 是使用-o 選項時生成的文件。
-s hh:mm:ss 指定輸出統計數據的起始時間
-e hh:mm:ss 指定輸出統計數據的截至時間,默認為18:00:00

 

 

1、輸出CPU使用情況的統計信息

[root@cnetos5 ~]# sar
[root@cnetos5 ~]# sar -u
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       all      0.02      0.00      0.14      0.01      0.00     99.84
12:20:01 AM       all      0.02      0.00      0.12      0.01      0.00     99.86
12:30:01 AM       all      0.01      0.00      0.12      0.01      0.00     99.86
Average:          all      0.03      0.00      0.13      0.01      0.00     99.84

輸出項說明:

CPU all 表示統計信息為所有 CPU 的平均值。
%user 顯示在用戶級別(application)運行使用 CPU 總時間的百分比。
%nice 顯示在用戶級別,用於nice操作,所占用 CPU 總時間的百分比。
%system 在核心級別(kernel)運行所使用 CPU 總時間的百分比。
%iowait 顯示用於等待I/O操作占用 CPU 總時間的百分比。
%steal 管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。
%idle 顯示 CPU 空閑時間占用 CPU 總時間的百分比。

 

 

 

  1. 若 %iowait 的值過高,表示硬盤存在I/O瓶頸
  2. 若 %idle 的值高但係統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量
  3. 若 %idle 的值持續低於 10,則係統的 CPU 處理能力相對較低,表明係統中最需要解決的資源是 CPU。

 

 

 

2、顯示I/O和傳送速率的統計信息

[root@cnetos5 ~]# sar -b
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM      1.58      0.00      1.58      0.00     16.71
12:20:01 AM      1.09      0.00      1.09      0.00     10.85
12:30:01 AM      1.08      0.00      1.08      0.00     10.74
Average:         1.24      0.00      1.24      0.00     12.70

輸出項說明:

tps 每秒鍾物理設備的 I/O 傳輸總量
rtps 每秒鍾從物理設備讀入的數據總量
wtps 每秒鍾向物理設備寫入的數據總量
bread/s 每秒鍾從物理設備讀入的數據量,單位為 塊/s
bwrtn/s 每秒鍾向物理設備寫入的數據量,單位為 塊/s

 

 

 

3、輸出內存頁麵的統計信息

[root@cnetos5 ~]# sar -B
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s
12:10:01 AM      0.00      4.17      9.74      0.00
12:20:01 AM      0.00      2.71      2.24      0.00
12:30:01 AM      0.00      2.69      2.25      0.00
Average:         0.00      3.17      4.07      0.00
 
注: RHEL6 sar -B 顯示如下
 
02時50分01秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
03時00分01秒      0.64      0.15      9.76      0.01      4.04      0.00      0.00      0.00      0.00
03時10分01秒      4.44      0.56     40.55      0.04     11.82      0.00      0.00      0.00      0.00
 

輸出項說明:

pgpgin/s 每秒鍾從磁盤讀入的係統頁麵的 KB 總數
pgpgout/s 每秒鍾向磁盤寫出的係統頁麵的 KB 總數
fault/s 係統每秒產生的頁麵失效(major + minor)數量
majflt/s 係統每秒產生的頁麵失效(major)數量

 

 

 

4、輸出每秒創建的進程數的進程統計信息  [注:rhel6 該參數已經取消]

[root@cnetos5 ~]# sar -c
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM    proc/s
12:10:01 AM      0.05
12:20:01 AM      0.03
12:30:01 AM      0.03
Average:         0.03

輸出項說明:

proc/s 每秒鍾創建的進程數

 

 

 

5、輸出網絡設備狀態的統計信息

[root@cnetos5 ~]# sar -n DEV |grep eth0
12:00:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM      eth0      0.59      0.92     41.57    893.98      0.00      0.00      0.00
12:20:01 AM      eth0      0.55      0.88     37.50    859.56      0.00      0.00      0.00
12:30:01 AM      eth0      0.55      0.86     38.17    871.98      0.00      0.00      0.00
Average:         eth0      0.29      0.42     21.05    379.29      0.00      0.00      0.00

輸出項說明:

IFACE 網絡設備名
rxpck/s 每秒接收的包總數
txpck/s 每秒傳輸的包總數
rxbyt/s 每秒接收的字節(byte)總數
txbyt/s 每秒傳輸的字節(byte)總數
rxcmp/s 每秒接收壓縮包的總數
txcmp/s 每秒傳輸壓縮包的總數
rxmcst/s 每秒接收的多播(multicast)包的總數

 

 

 

 

6、輸出網絡設備狀態的統計信息(查看網絡設備故障)

[root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE'
12:00:01 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
12:10:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:20:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:30:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

輸出項說明:

IFACE 網絡設備名
rxerr/s 每秒接收的壞包總數
txerr/s 傳輸包時每秒發生錯誤的總數
coll/s 傳輸包時每秒發生衝突(collision)的總數
rxdrop/s 接收包時,由於缺乏緩存,每秒丟棄(drop)包的數量
txdrop/s 傳輸包時,由於缺乏緩存,每秒丟棄(drop)包的數量
txcarr/s 傳輸包時,每秒發生的傳輸錯誤(carrier-error)的數量
rxfram/s 接收包時,每秒發生幀校驗錯誤(frame alignment error)的數量
rxfifo/s 接收包時,每秒發生隊列(FIFO)一出錯誤的數量
txfifo/s 傳輸包時,每秒發生隊列(FIFO)一出錯誤的數量

 

 

 

 

7、輸出進程隊列長度和平均負載狀態統計信息

[root@cnetos5 ~]# sar -q
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:10:01 AM         0        85      0.02      0.01      0.00
12:20:01 AM         0        85      0.01      0.00      0.00
12:30:01 AM         0        85      0.03      0.01      0.00
Average:            0        85      0.01      0.00      0.00

輸出項說明:

runq-sz 運行隊列的長度(等待運行的進程數)
plist-sz 進程列表中進程(processes)和線程(threads)的數量
ldavg-1 最後1分鍾的係統平均負載(System load average)
ldavg-5 過去5分鍾的係統平均負載
ldavg-15 過去15分鍾的係統平均負載

 

 

 

 

8、輸出內存和交換空間的統計信息

[root@cnetos5 ~]# sar -r
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
12:10:01 AM    262068    253408     49.16     43884    156456   1048568         0      0.00         0
12:20:01 AM    261572    253904     49.26     44580    156448   1048568         0      0.00         0
12:30:01 AM    260704    254772     49.42     45124    156472   1048568         0      0.00         0
Average:       259551    255925     49.65     46453    156470   1048568         0      0.00         0

輸出項說明:

kbmemfree 可用的空閑內存數量,單位為 KB
kbmemused 已使用的內存數量(不包含內核使用的內存),單位為 KB
%memused 已使用內存的百分數
kbbuffers 內核緩衝區(buffer)使用的內存數量,單位為 KB
kbcached 內核高速緩存(cache)數據使用的內存數量,單位為 KB
kbswpfree 可用的空閑交換空間數量,單位為 KB
kbswpused 已使用的交換空間數量,單位為 KB
%swpused 已使用交換空間的百分數
kbswpcad 交換空間的高速緩存使用的內存數量

 

 

 

 

9、輸出內存頁麵的統計信息

[root@cnetos5 ~]# sar -R
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM   frmpg/s   bufpg/s   campg/s
12:10:01 AM     -0.10      0.23      0.01
12:20:01 AM     -0.21      0.29     -0.00
12:30:01 AM     -0.36      0.23      0.01
Average:        -0.21      0.22      0.00

輸出項說明:

frmpg/s 每秒係統中空閑的內存頁麵(memory page freed)數量
bufpg/s 每秒係統中用作緩衝區(buffer)的附加內存頁麵(additional memory page)數量
campg/s 每秒係統中高速緩存的附加內存頁麵(additional memory pages cached)數量

 

 

 

 

10、輸出inode、文件和其他內核表的信息

[root@cnetos5 ~]# sar -v
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM dentunusd   file-sz  inode-sz  super-sz %super-sz  dquot-sz %dquot-sz  rtsig-sz %rtsig-sz
12:10:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00
12:20:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00
12:30:01 AM      7253       576      5126         0      0.00         0      0.00         0      0.00
Average:         7253       589      5125         0      0.00         0      0.00         0      0.00
 
注: rhel6 顯示如下
02時50分01秒 dentunusd   file-nr  inode-nr    pty-nr
03時00分01秒      2913       416      7783         2
03時10分01秒      3195       416      7985         2
 

輸出項說明:

dentunusd 目錄高速緩存中未被使用的條目數量
file-sz 文件句柄(file handle)的使用數量
inode-sz i節點句柄(inode handle)的使用數量
super-sz 由內核分配的超級塊句柄(super block handle)數量
%super-sz 已分配的超級塊句柄占總超級塊句柄的百分比
dquot-sz 已經分配的磁盤限額條目數量
%dquot-sz 分配的磁盤限額條目數量占總磁盤限額條目的百分比
rtsig-sz 已排隊的 RT 信號的數量
%rtsig-sz 已排隊的 RT 信號占總 RT 信號的百分比

 

 

 

 

11、輸出係統交換活動信息

[root@cnetos5 ~]# sar -w
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM   cswch/s
12:10:01 AM     44.74
12:20:01 AM     44.41
12:30:01 AM     44.41
Average:        44.50
 
注: rhel6 顯示如下
 
02時50分01秒    proc/s   cswch/s
03時00分01秒      0.03      6.52
03時10分01秒      0.12      7.65
 

輸出項說明:

cswch/s 每秒的係統上下文切換數量

 

 

 

 

12、 輸出係統交換的統計信息

[root@cnetos5 ~]# sar -W
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM  pswpin/s pswpout/s
12:10:01 AM      0.00      0.00
12:20:01 AM      0.00      0.00
12:30:01 AM      0.00      0.00
Average:         0.00      0.00

輸出項說明:

pswpin/s 每秒係統換入的交換頁麵(swap page)數量
pswpout/s 每秒係統換出的交換頁麵(swap page)數量

 

 

 

 

13、輸出TTY設備的活動信息

[root@cnetos5 ~]# sar -y
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

12:00:01 AM       TTY   rcvin/s   xmtin/s framerr/s prtyerr/s     brk/s   ovrun/s
12:10:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00
12:20:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:20:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00
12:30:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:30:01 AM         1      0.00      0.00      0.00      0.00      0.00      0.00
………………
Average:            0      0.00      0.00      0.00      0.00      0.00      0.00
Average:            1      0.00      0.00      0.00      0.00      0.00      0.00

輸出項說明:

TTY TTY 串行設備號
rcvin/s 每秒接收的中斷數量
xmtin/s 每秒傳送的中斷數量
framerr/s 每秒發生的幀錯誤數(frame error)量
prtyerr/s 每秒發生的奇偶校驗錯誤(parity error)數量
brk/s 每秒發生的暫停(break)數量
ovrun/s 每秒發生的溢出錯誤(overrun error)數量

 

 

 

 

14、顯示全麵的累計統計信息

# sar -A

 

 

 

15、默認配置不提供的累計統計信息

[root@cnetos5 ~]# sar -d
Requested activities not available in file
[root@cnetos5 ~]# sar -x ALL
Requested activities not available in file
[root@cnetos5 ~]# sar -X ALL
Requested activities not available in file

 

 

 

  1. 默認情況下,為了防止統計數據文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 沒有記錄每個塊設備的統計信息。
  2. 可以在 -d -x -X 參數後添加取樣參數獲得即時統計信息。
  3. 帶有 -x -X 選項的 sar 命令從來不能記錄到二進製統計數據文件 。

 注: rhel6 會記錄 io 信息 (sar -d)

02時50分01秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03時00分01秒    dev8-0      0.05      1.28      0.29     31.47      0.00      7.10      5.20      0.03
03時10分01秒    dev8-0      0.31      8.88      1.12     31.91      0.00      7.80      6.21      0.19

另外, sar -x -X 功能已經取消


 

 

 

1、使用取樣選項查看即時統計信息

例如:每30秒取樣一次,連續取樣5次

# sar -n DEV 30 5
# sar -u  30 5

 

2、輸出和讀取統計信息文件

例如:

# sar -u  30 5 -o sar-dump-001
# sar -u -f  sar-dump-001

 

3、輸出每一個塊設備的活動信息

# sar -dp 5 2
Linux 2.6.18-53.el5 (cnetos5)   01/22/2008

07:12:11 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07:12:16 AM       sda      0.40      0.00     17.56     44.00      0.00      1.00      1.00      0.04
07:12:16 AM       sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

07:12:16 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07:12:21 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:12:21 AM       sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:          sda      0.20      0.00      8.78     44.00      0.00      1.00      1.00      0.02
Average:          sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

輸出項說明:

DEV 正在監視的塊設備
tps 每秒鍾物理設備的 I/O 傳輸總量
rd_sec/s 每秒從設備讀取的扇區(sector)數量
wr_sec/s 每秒向設備寫入的扇區(sector)數量
avgrq-sz 發給設備請求的平均扇區數
avgqu-sz 發給設備請求的平均隊列長度
await 設備 I/O 請求的平均等待時間(單位為毫秒)
svctm 設備 I/O 請求的平均服務時間(單位為毫秒)
%util 在 I/O 請求發送到設備期間,占用 CPU 時間的百分比。用於體現設備的帶寬利用率。

 

 

 

  1. avgqu-sz 的值較低時,設備的利用率較高。
  2. 當 %util 的值接近 100% 時,表示設備帶寬已經占滿。

 

 

 

 

iostat 用於輸出CPU和磁盤I/O相關的統計信息。命令格式為:

iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ]  | ALL ] 
  [ -p [ device | ALL ] ] [ interval [ count ] ]

其中:

  • interval : 為取樣時間間隔
  • count : 為輸出次數,若指定了取樣時間間隔且省略此項,將不斷產生統計信息

常用選項:

選項 說明
-c 僅顯示CPU統計信息。與-d選項互斥。
-d 僅顯示磁盤統計信息。與-c選項互斥。
-k 以KB為單位顯示每秒的磁盤請求數。默認單位塊。
-m 以MB為單位顯示每秒的磁盤請求數。默認單位塊。
-p {device|ALL} 用於顯示塊設備及係統分區的統計信息。與-x選項互斥。
-t 在輸出數據時,打印搜集數據的時間。
-V 打印版本號信息。
-x 輸出擴展信息。

 

下麵給出幾個例子:

# 顯示一條包括所有的CPU和設備吞吐率的統計信息
# iostat
Linux 2.6.18-53.el5 (cnetos5)   01/21/2008

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.04    0.37    0.07    0.00   99.42

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1.44        16.79        10.58     800430     504340
sdb               0.01         0.07         0.00       3314          8
sdc               0.86         8.56         0.00     407892         24

# 每隔5秒顯示一次設備吞吐率的統計信息(單位為 塊/s)
# iostat -d 5

# 每隔5秒顯示一次設備吞吐率的統計信息(單位為 KB/s),共輸出3次
# iostat -dk 5 3

# 每隔2秒顯示一次 sda 及上麵所有分區的統計信息,共輸出5次
# iostat -p sda 2 5

# 每隔2秒顯示一次 sda 和 sdb 兩個設備的擴展統計信息,共輸出6次
# iostat -x sda sdb 2 6
Linux 2.6.18-53.el5 (cnetos5)   01/21/2008

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.04    0.37    0.07    0.00   99.42

Device:     rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda           0.17     0.84  0.96  0.47    16.67    10.56    19.01     0.01    7.11   1.25   0.18
sdb           0.00     0.00  0.01  0.00     0.07     0.00     5.16     0.00    0.22   0.19   0.00

…………

 

注: iostat -x  必須到 2.5 內核以上才能夠使用, 因此數據來自  /proc/diskstats

 

avg-cpu 部分輸出項說明:

%user 在用戶級別運行所使用的 CPU 的百分比。
%nice nice 操作所使用的 CPU 的百分比。
%system 在核心級別(kernel)運行所使用 CPU 的百分比。
%iowait CPU 等待硬件 I/O 所占用 CPU 的百分比。
%steal 當管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。
%idle CPU 空閑時間的百分比。

 

Device 部分基本輸出項說明:

tps 每秒鍾物理設備的 I/O 傳輸總量。
Blk_read 讀入的數據總量,單位為塊。
Blk_wrtn 寫入的數據總量,單位為塊。
kB_read 讀入的數據總量,單位為KB。
kB_wrtn 寫入的數據總量,單位為KB。
MB_read 讀入的數據總量,單位為MB。
MB_wrtn 寫入的數據總量,單位為MB。
Blk_read/s 每秒從驅動器讀入的數據量,單位為 塊/s。
Blk_wrtn/s 每秒向驅動器寫入的數據量,單位為 塊/s。
kB_read/s 每秒從驅動器讀入的數據量,單位為KB/s。
kB_wrtn/s 每秒向驅動器寫入的數據量,單位為KB/s。
MB_read/s 每秒從驅動器讀入的數據量,單位為MB/s。
MB_wrtn/s 每秒向驅動器寫入的數據量,單位為MB/s。

 

Device 部分擴展輸出項說明:

rrqm/s 將讀入請求合並後,每秒發送到設備的讀入請求數。
wrqm/s 將寫入請求合並後,每秒發送到設備的寫入請求數。
r/s 每秒發送到設備的讀入請求數。
w/s 每秒發送到設備的寫入請求數。
rsec/s 每秒從設備讀入的扇區數。
wsec/s 每秒向設備寫入的扇區數。
rkB/s 每秒從設備讀入的數據量,單位為 KB/s。
wkB/s 每秒向設備寫入的數據量,單位為 KB/s。
rMB/s 每秒從設備讀入的數據量,單位為 MB/s。
wMB/s 每秒向設備寫入的數據量,單位為 MB/s。
avgrq-sz 發送到設備的請求的平均大小,單位為扇區。
avgqu-sz 發送到設備的請求的平均隊列長度。
await I/O請求平均執行時間。包括發送請求和執行的時間。單位為毫秒。
svctm 發送到設備的I/O請求的平均執行時間。單位為毫秒。
%util 在I/O請求發送到設備期間,占用CPU時間的百分比。用於顯示設備的帶寬利用率。當這個值接近100%時,表示設備帶寬已經占滿。

 

 

注 rhel6 增加 pidstat 工具, 能夠分析每個進程當前 cpu 占用情況

04時14分26秒       PID    %usr %system  %guest    %CPU   CPU  Command
04時14分26秒         1    0.00    0.01    0.00    0.02     0  init
04時14分26秒         4    0.00    0.00    0.00    0.00     0  ksoftirqd/0
04時14分26秒         7    0.00    0.00    0.00    0.00     0  events/0

 

 

mpstat 輸出每一個 CPU 的運行狀況,為多處理器係統中的 CPU 利用率提供統計信息。命令格式為:

mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]

其中:

  • interval : 為取樣時間間隔。指定0則輸出自係統啟動後的一個統計信息。
  • count : 為輸出次數。若指定了取樣時間間隔且省略此項,將不斷產生統計信息。

常用選項:

選項 說明
-P {cpu|ALL} 指定 CPU。用 CPU-ID 指定,CPU-ID 是從0開始的,即第一個CPU為0。ALL 表示所有CPU。
-V 輸出版本號信息。

 

下麵給出幾個例子:

# 輸出所有 CPU 使用情況的統計信息。
# mpstat
Linux 2.6.18-53.el5 (cnetos5)   01/21/2008

10:39:06 AM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
10:39:06 AM  all    0.10    0.04    0.31    0.06    0.04    0.01    0.00   99.45   1012.99

# 輸出第一個 CPU 使用情況的統計信息。
# mpstat -P 0
Linux 2.6.18-53.el5 (cnetos5)   01/21/2008

10:41:03 AM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
10:41:03 AM    0    0.09    0.02    0.40    0.09    0.08    0.01    0.00   99.32   1012.79

# 每隔2秒輸出所有CPU的統計信息,共輸出5次。
# mpstat 2 5

# 每隔2秒輸出一次所有CPU的統計信息,共輸出5次。
# mpstat -P ALL 2 5

# 每隔2秒輸出一次第二個CPU的統計信息,共輸出5次。
# mpstat -P 1 2 5

 

CPU 在多CPU係統裏,每個CPU有一個ID號,第一個CPU為0。all表示統計信息為所有CPU的平均值。
%user 顯示在用戶級別運行所占用CPU總時間的百分比。
%nice 顯示在用戶級別,用於nice操作,所占用CPU總時間的百分比。
%sys 顯示在kernel級別運行所占用CPU總時間的百分比。注意:這個值並不包括服務中斷和softirq。
%iowait 顯示用於等待I/O操作時,占用CPU總時間的百分比。
%irq 顯示用於中斷操作,占用CPU總時間的百分比。
%soft 顯示用於softirq操作,占用CPU總時間的百分比。
%steal 管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。
%idle 顯示CPU在空閑狀態,占用CPU總時間的百分比。
intr/s 顯示CPU每秒接收到的中斷總數。

最後更新:2017-04-03 21:30:11

  上一篇:go 有關Android中Service實現UI更新(Binder的運用)
  下一篇:go 學習android兩年後有感