CPU佔用:top topas(aix) prstat(sun)
磁盤利用: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
vmstat在linux執行結果:
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,只要si、so的值長期爲0,這種情況下一般不用擔心,不會影響系統性能。
Free
表示當前空閒的物理內存數量(以k爲單位)
Buff
表示buffers cache的內存數量,單位KB,一般對塊設備的讀寫才需要緩衝。
cache
表示page cached的內存數量,單位KB,一般作爲文件系統cached,頻繁訪問的文件都會被cached,如果cache值較大,說明cached的文件數較多,如果此時IO中bi比較小,說明文件系統效率比較好。
Si Amount of memory swapped in from disk (/s).
表示由磁盤調入內存的頁數目
So Amount of memory swapped out to disk (/s).
表示由內存調入磁盤。
一般情況下,si、so的值都爲0,如果si、so的值長期不爲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中。