Linux性能分析工具

CPU佔用:top  topasaix   prstatsun

磁盤利用:iostat               sar –d 1 10

內存狀態:free-/+ buffers/cache對應的free爲實際空閒內存)  vmstat 1 3  1秒統計一次,統計3次;

linux:/etc/rc.d # free

             total       used       free     shared    buffers     cached

Mem:       8082700    3882856    4199844    0      16980    2600376

-/+ buffers/cache:    1265500    6817200

Swap:      2096472          0    2096472

6817200 = 4199844 + 16980 + 2600376    ---free命令第二行對應的free爲空閒內存數量(字節)。

linux:/etc/rc.d # vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 5  0      0 4199588  16988 2600384    0    0     0    12   11   13  0  1 98  1  0

vmstat顯示的buffer、cache、free值與free命令的第一行相匹配。

top - 11:44:09 up 8 days,  2:20,  7 users,  load average: 0.00, 0.03, 0.04

Tasks: 155 total,   1 running, 154 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.4%us,  0.5%sy,  0.0%ni, 98.4%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   8082700k total,  3882356k used,  4200344k free,    18056k buffers

Swap:  2096472k total,        0k used,  2096472k free,  2600416k cached

top顯示的buffer、cache、free值與free命令的第一行相匹配。

1. vmstat

vmstatlinux執行結果:

procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0 582632 151717  14344 705264    0    1     6    25    9  11  4  3 93  0  0

  • Cpu性能:

r  In run queue

表示運行和等待cpu時間片的進程數,這個值如果長期大於系統CPU的個數,說明CPU不足,需要增加CPU

b  Blocked for resources (I/O, paging, etc.)

表示在等待資源的進程數,比如正在等待I/O、或者內存交換等,該值高說明IO或內存存在瓶頸。

us  user time, including nice time

顯示了用戶進程消耗的CPU時間百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,就需要考慮優化程序或算法。

sy  system time

顯示了內核進程消耗的CPU時間百分比。

根據經驗,us+sy的參考值爲80%,如果us+sy大於 80%說明可能存在CPU資源不足。

us+ys沒有超過30%b經常很大,表明正在等待I/O、或者內存交換等,看來是內存或者io出現了問題。

  • 內存性能

swpd

使用虛擬內存大小,單位KB,如果swpd的值不爲0,只要siso的值長期爲0,這種情況下一般不用擔心,不會影響系統性能。

Free

表示當前空閒的物理內存數量(以k爲單位)

Buff

表示buffers cache的內存數量,單位KB,一般對塊設備的讀寫才需要緩衝。

cache

表示page cached的內存數量,單位KB,一般作爲文件系統cached,頻繁訪問的文件都會被cached,如果cache值較大,說明cached的文件數較多,如果此時IObi比較小,說明文件系統效率比較好。

Si   Amount of memory swapped in from disk (/s).

表示由磁盤調入內存的頁數目

So  Amount of memory swapped out to disk (/s).

表示由內存調入磁盤。

一般情況下,siso的值都爲0,如果siso的值長期不爲0,則表示系統內存不足。需要增加系統內存。

In

中斷次數。

CS

進程切換次數。

2. sar

sar –w 1 100,可以分析系統中的交換區的活動情況。

swpin/s Number of process swapins per second;
swpot/s
Number of process swapouts per second;
bswin/s
Number of 512-byte units transferred for swapins per second;
bswot/s
Number of 512-byte units transferred for swapouts per second;
pswch/s
Number of process context switches per second.
對結果的分析:

如果swpin/s的值大於零,那麼swpot的值必須引起注意;

同時必須注意pswch/s的值,如果很大,說明進程切換頻繁。

sar –b 1 100,可以分析系統中的緩衝區的活動情況。

bread/s Number of physical reads per second from the disk (or other block devices) to the buffer cache;
bwrit/s
Number of physical writes per second from the buffer cache to the disk (or other block device);
lread/s
Number of reads per second from buffer cache;
lwrit/s
Number of writes per second to buffer cache;
%rcache
Buffer cache hit ratio for read requests e.g., 1 - bread/lread;
%wcache
Buffer cache hit ratio for write requests e.g., 1 - bwrit/lwrit;
pread/s
Number of reads per second from character device using the physio() (raw I/O) mechanism;
pwrit/s
Number of writes per second to character device using the physio() (i.e., raw I/O ) mechanism; mechanism.
對結果的分析:

如果%rcache列的值小於90%,並且%wcache列的值不在70-70%之間,我們必須觀察系統中什麼應用在做什麼樣的讀/寫操作,我們是否需要增加緩衝的大小。

sar –d 1 100我們可以分析系統中的每個磁盤和磁帶的活動情況。

device:設備名;
%busy
Portion of time device was busy servicing a request; statistics.
avque
Average number of requests outstanding for the device;
r+w/s
Number of data transfers per second (read and writes) from and to the device;
blks/s
Number of bytes transferred (in 512-byte units) from and to the device;
avwait
Average time (in milliseconds) that transfer requests waited idly on queue for the device;
avserv
Average time (in milliseconds) to service each transfer request (includes seek, rotational latency, and data transfer times) for the device.
對結果的分析:
await表示平均每次設備I/O操作的等待時間(以毫秒爲單位)。
svctm表示平均每次設備I/O操作的服務時間(以毫秒爲單位)。
%util表示一秒中有百分之幾的時間用於I/O操作。
對以磁盤IO性能,一般有如下評判標準:
     正常情況下svctm應該是小於await值的,而svctm的大小和磁盤性能有關,CPU、內存的負荷也會對svctm值造成影響,過多的請求也會間接的導致svctm值的增加。
     await值的大小一般取決與svctm的值和I/O隊列長度以及I/O請求模式,如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高於svctm的值,則表示I/O隊列等待太長,系統上運行的應用程序將變慢,此時可以通過更換更快的硬盤來解決問題。
     %util項的值也是衡量磁盤I/O的一個重要指標,如果%util接近100%,表示磁盤產生的I/O請求太多,I/O系統已經滿負荷的在工作,該磁盤可能存在瓶頸。長期下去,勢必影響系統的性能,可以通過優化程序或者通過更換更高、更快的磁盤來解決此問題。

3. iostat

iostat -x 1

Linux 2.6.32.12-0.7-default (linux)     08/06/13        _x86_64_

 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           4.10    0.00    3.12    0.35    0.00   92.42

 

Device:    rrqm/s   wrqm/s   r/s     w/s   rsec/s  wsec/s avgrq-sz avgqu-sz   await  svctm  %util

sda        0.10     8.93    0.46    3.81  22.06   93.00  26.93   0.06     13.61   5.12   2.19

IO設備每項數據的含義如下,

rrqm/s:   每秒進行 merge的讀操作數目。即 rmerge/s

wrqm/s:   每秒進行 merge的寫操作數目。即 wmerge/s

r/s:      每秒完成的讀 I/O設備次數。即 rio/s

w/s:      每秒完成的寫 I/O設備次數。即 wio/s

rsec/s:   每秒讀扇區數。

wsec/s:   每秒寫扇區數。

rkB/s:    每秒讀K字節數。是 rsect/s的一半,因爲每扇區大小爲512字節。

wkB/s:    每秒寫K字節數。是 wsect/s的一半。

avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)

avgqu-sz: 平均I/O隊列長度。即 aveq/1000 (因爲aveq的單位爲毫秒)

await:    平均每次設備I/O操作的等待時間 (毫秒)

svctm:    平均每次設備I/O操作的服務時間 (毫秒)

%util:   一秒中有百分之多少的時間用於 I/O操作,或者說一秒中有多少時間

如果 %util接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。

 

dd命令測試io速度:

dd bs=1024 count=10240 if=/dev/zero of=./tt          測試文件系統寫入速度

dd bs=1024 count=10240 if=/dev/zero of=./tt conv=fdatasync   測試物理磁盤寫入速度

dd bs=1024 count=10240 of=/dev/zero if=./tt               測試文件系統讀速度

 sysctl vm.block_dump=0/1         打開、關閉設備寫入操作日誌,日誌記錄到dmesg中。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章