1、前言
在linux下開發程式,為了追求高性能,經常需要測試程式的性能,包括cpu、記憶體、io、網絡等等使用情況。liunx下提供了衆多指令友善檢視各種資源的使用情況。經常用的有ps、top、free、mpstat、iostat、vmstat、netstat。
2、ps、top、free指令
ps用于檢視系統中程序的情況,top能夠實時顯示系統中各個程序的資源占用狀況,free指令可以顯示linux系統中空閑的、已用的實體記憶體及swap記憶體,及被核心使用的buffer。
3、mpstat指令
用于擷取 cpu 相關統計資訊,指令執行結果如下圖所示:
%user 表示處理使用者程序所使用 cpu 的百分比。
%nice 表示使用 nice 指令對程序進行降級時 cpu 的百分比。nice 指令更改程序的優先級。
%system 表示核心程序使用的 cpu 百分比
%iowait 表示等待進行 i/o 所使用的 cpu 時間百分比
%irq 表示用于處理系統中斷的 cpu 百分比
%soft 表示用于軟體中斷的 cpu 百分比
%idle 顯示 cpu 的空閑時間
4、iostat指令
性能評估的一個主要部分就是磁盤性能,iostat 指令提供了存儲接口的性能名額。執行結果下圖所示:
tps 每秒的傳輸數量,例如,每秒的 i/o 操作數。注:這隻是 i/o 操作的數量;每個操作可能非常大,也可能非常小。
blk_read/s 每秒從該裝置讀取的塊數。通常,塊的大小為 512 位元組。這是一個磁盤使用率較好的值。
blk_wrtn/s 每秒寫入該裝置的塊數
blk_read 到目前為止從該裝置讀取的塊數。注意,這并不是正在發生的情況。很多塊已經從該裝置讀取。可能現在什麼也沒有讀取。觀察一段時間,看是否有變化。
blk_wrtn 寫入該裝置的塊數。
5、vmstat指令
顯示所有與記憶體和程序相關資訊的指令,執行結果如下所示:
procs 顯示程序數
r 等待運作的程序。系統上的負載越多,等待運作 cpu 周期的程序數量越多。
b 不可中斷睡眠的程序,也稱為“被阻塞”的程序。這些程序最有可能等待 i/o,但也可能等待其他事情。
wpd,free,buff,cache顯示了記憶體值班
wpd 虛拟記憶體或交換記憶體的數量(以 kb 為機關)
free 可用實體記憶體的數量(以 kb 為機關)
buff 用作緩沖區的記憶體數量(以 kb 為機關)
cache 用作緩存的實體記憶體數量(以 kb 為機關)
si so 顯示了交換活動:
si 将記憶體從磁盤交換回實體 ram 的速率(以 kb/秒為機關)
so 将記憶體從實體 ram 交換到磁盤的速率(以 kb/秒為機關)
bi,bo顯示了 i/o 活動:
bi 系統向塊裝置發送資料的速率(以塊/秒為機關)
bo 系統從塊裝置中讀取資料的速率(以塊/秒為機關)
in,cs 顯示了系統相關活動:
in 系統每秒接收到的中斷數
cs 在程序空間中切換上下文的速率(以數量/秒為機關)
us,sy,id,wa 顯示了 cpu 負載的資訊:
us 顯示花費在使用者程序中的 cpu 百分比。oracle 程序屬于這一類。
sy 系統程序(如所有根程序)使用的 cpu 百分比
id 可用 cpu 百分比
wa 花費在“等待 i/o”上的百分比
6、netstat指令
用于顯示各種網絡相關資訊,如網絡連接配接,路由表,接口狀态 (interface statistics),masquerade 連接配接,多點傳播成員 (multicast memberships) 等等。