iostat命令被用於監視系統輸入輸出設備和CPU的使用情況。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。
- iostat
[root@0705-1 logs]# iostat -x -k -d 1
標示 | 說明 |
---|---|
Device | 監測設備名稱 |
rrqm/s | 每秒需要讀取需求的數量 |
wrqm/s | 每秒需要寫入需求的數量 |
r/s | 每秒實際讀取需求的數量 |
w/s | 每秒實際寫入需求的數量 |
rsec/s | 每秒讀取數據數量(kb爲單位) |
wsec/s | 每秒寫入數據量(kB爲單位) |
rkB/s | 每秒實際讀取的大小,單位爲KB |
wkB/s | 每秒實際寫入的大小,單位爲KB |
avgrq-sz | 平均每次IO操作的數據量 |
avgqu-sz | 平均等待處理的IO請求隊列長度 |
await | 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒爲單位) |
svctm | 平均每次IO請求的處理時間(毫秒爲單位) |
%util | 採用週期內用於IO操作的時間比率,即IO隊列非空的時間比率 |
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
idle小於70% IO壓力就較大了,一般讀取速度有較多的wait。
同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所佔用的CPU時間的百分比,高過30%時IO壓力高)
- top
[root@localhost ~]# top
top - 12:13:22 up 167 days, 20:47, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 272 total, 1 running, 271 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65759080 total, 58842616 free, 547908 used, 6368556 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 64264884 avail Mem
................
對上面第三行的解釋:
標示 | 說明 |
---|---|
us(user cpu time) | 用戶態使用的cpu時間比。該值較高時,說明用戶進程消耗的 CPU 時間比較多,比如,如果該值長期超過 50%,則需要對程序算法或代碼等進行優化。 |
sy(system cpu time) | 系統態使用的cpu時間比。 |
ni(user nice cpu time) | 用做nice加權的進程分配的用戶態cpu時間比 |
id(idle cpu time) | 空閒的cpu時間比。如果該值持續爲0,同時sy是us的兩倍,則通常說明系統則面臨着 CPU 資源的短缺。 |
wa(io wait cpu time) | cpu等待磁盤寫入完成時間。該值較高時,說明IO等待比較嚴重,這可能磁盤大量作隨機訪問造成的,也可能是磁盤性能出現了瓶頸。 |
hi(hardware irq) | 硬中斷消耗時間 |
si(software irq) | 軟中斷消耗時間 |
st(steal time) | 虛擬機偷取時間 |
- vmstat
[root@localhost ~]# vmstat
procs -----------memory---------------------swap-------io---------system--------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 1639792 724280 4854236 0 0 4 34 4 0 19 45 35 0 0
解釋說明:
procs部分的解釋
標示 | 說明 |
---|---|
r | 列表示運行和等待cpu時間片的進程數,如果長期大於1,說明cpu不足,需要增加cpu。 |
b | 列表示在等待資源的進程數,比如正在等待I/O、或者內存交換等。 |
cpu部分的解釋
標示 | 說明 |
---|---|
us | 列顯示了用戶方式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序。 |
sy | 列顯示了內核進程所花費的cpu時間的百分比。這裏us + sy的參考值爲80%,如果us+sy 大於 80%說明可能存在CPU不足。 |
wa | 列顯示了IO等待所佔用的CPU時間的百分比。這裏wa的參考值爲30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。 |
id | 列顯示了cpu處在空閒狀態的時間百分比 |
system部分的解釋
標示 | 說明 |
---|---|
in | 列表示在某一時間間隔中觀測到的每秒設備中斷數。 |
cs | 列表示每秒產生的上下文切換次數,如當 cs 比磁盤 I/O 和網絡信息包速率高得多,都應進行進一步調查。 |
----------------------------- |
memory部分的解釋
標示 | 說明 |
---|---|
swpd | 切換到內存交換區的內存數量(k表示)。如果swpd的值不爲0,或者比較大,比如超過了100m,只要si、so的值長期爲0,系統性能還是正常 |
free | 當前的空閒頁面列表中內存數量(k表示) |
buff | 作爲buffer cache的內存數量,一般對塊設備的讀寫才需要緩衝。 |
cache | 作爲page cache的內存數量,一般作爲文件系統的cache,如果cache較大,說明用到cache的文件較多,如果此時IO中bi比較小,說明文件系統效率比較好。 |
swap部分的解釋
標示 | 說明 |
---|---|
si | 由內存進入內存交換區數量。 |
so | 由內存交換區進入內存數量。 |
IO部分的解釋
標示 | 說明 |
---|---|
bi | 從塊設備讀入數據的總量(讀磁盤)(每秒kb)。 |
bo | 塊設備寫入數據的總量(寫磁盤)(每秒kb) |