怎樣才能快速的定位到並發高是由於磁碟io開銷大呢?可以通過三種方式:
第一種:用 top 命令 中的cpu 資訊觀察
Top可以看到的cpu資訊有:
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
具體的解釋如下:
Tasks: 29 total 進程總數
1 running 正在啟動並執行進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 殭屍進程數
Cpu(s):
0.3% us 使用者空間佔用CPU百分比
1.0% sy 核心空間佔用CPU百分比
0.0% ni 使用者進程空間內改變過優先順序的進程佔用CPU百分比
98.7% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
0.0% wa 的百分比可以大致的體現出當前的磁碟io請求是否頻繁。如果 wa的數量比較大,說明等待輸入輸出的的io比較多。
第二種:用vmstat
vmstat 命令報告關於線程、虛擬記憶體、磁碟、陷阱和 CPU 活動的統計資訊。由 vmstat 命令產生的報告可以用於平衡系統負載活動。系統範圍內的這些統計資訊(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。
輸入命令:
vmstat 2 5
如果發現等待的進程和處在非中斷睡眠狀態的進程數非常多,並且發送到塊裝置的塊數和從塊裝置接收到的塊數非常大,那就說明磁碟io比較多。
vmstat參數解釋:
Procs
r: 等待啟動並執行進程數 b: 處在非中斷睡眠狀態的進程數 w: 被交換出去的可啟動並執行進程數。此數由 linux 計算得出,但 linux 並不耗盡交換空間
Memory
swpd: 虛擬記憶體使用方式,單位:KB
free: 閒置記憶體,單位KB
buff: 被用來做為緩衝的記憶體數,單位:KB
Swap
si: 從磁碟交換到記憶體的交換頁數量,單位:KB/秒
so: 從記憶體交換到磁碟的交換頁數量,單位:KB/秒
IO
bi: 發送到塊裝置的塊數,單位:塊/秒
bo: 從塊裝置接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閑置時間
准測
更多vmstat使用資訊
第二種:用iostat
安裝:
Iostat 是 sysstat 工具集的一個工具,需要安裝。
Centos的安裝方式是:
yum install sysstat
Ubuntu的安裝方式是:
aptitude install sysstat
使用:
iostat -dx 顯示磁碟擴充資訊
root@fileapp:~# iostat -dx
r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒KB為單位顯示了讀和寫的資料量
如果這兩對資料值都很高的話說明磁碟io操作是很頻繁。