經過man幫助,能夠看到官方對dstat的定義爲:多功能系統資源統計生成工具( versatile tool for generating system resource statistics)。在獲取的信息上有點相似於top、free、iostat、vmstat等多個工具的合集,官方解釋爲vmstat、iostat、ifstat等工具的多功能替代品,且添加了許多額外的功能(Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.);其結果能夠保持到csv文件,使用腳本或第三方工具對性能進行分析利用(如經過監控平臺監控,也能夠保持到數據庫)。在Centos 6.x系統上安裝基本服務器即默認安裝,而在其餘操做系統可能須要手動安裝。node
與許多命令同樣,dstat命令有默認選項,執行dstat命令不加任何參數,它默認會收集-cpu-、-disk-、-net-、-paging-、-system-的數據,一秒鐘收集一次。 默認輸入 dstat 等於輸入了dstat -cdngy 1或dstat -a 1。mysql
dstat的用法以下:ios
dstat [-afv] [options..] [delay [count]]算法
使用 dstat -h查看所有選項,這裏不逐一列舉,下面簡單介紹下經常使用選項sql
經常使用選項以下:數據庫
# 直接跟數字,表示#秒收集一次數據,默認爲一秒;dstat 5表示5秒更新一次服務器
-c,--cpu 統計CPU狀態,包括 user, system, idle(空閒等待時間百分比), wait(等待磁盤IO), hardware interrupt(硬件中斷), software interrupt(軟件中斷)等;網絡
-d, --disk 統計磁盤讀寫狀態工具
-D total,sda 統計指定磁盤或彙總信息post
-l, --load 統計系統負載狀況,包括1分鐘、5分鐘、15分鐘平均值
-m, --mem 統計系統物理內存使用狀況,包括used, buffers, cache, free
-s, --swap 統計swap已使用和剩餘量
-n, --net 統計網絡使用狀況,包括接收和發送數據
-N eth1,total 統計eth1接口彙總流量
-r, --io 統計I/O請求,包括讀寫請求
-p, --proc 統計進程信息,包括runnable、uninterruptible、new
-y, --sys 統計系統信息,包括中斷、上下文切換
-t 顯示統計時時間,對分析歷史數據很是有用
--fs 統計文件打開數和inodes數
以上這些就是最經常使用的選項,而通常都組合使用,我的比較經常使用的是:
Procs
內存夠用的時候,這2個值都是0,若是這2個值長期大於0時,系統性能會受到影響。磁盤IO和CPU資源都會被消耗。
us 的值比較高時,說明用戶進程消耗的CPU時間多,可是若是長期超過50% 的使用,那麼咱們就該考慮優化程序算法或者進行加速了(好比 PHP/Perl)
sys 的值高時,說明系統內核消耗的CPU資源多,這並非良性的表現,咱們應該檢查緣由。
dstat的功能很是強大,除了上述經常使用用法外,還有一些你們不經常使用的高級用法,以下:
--top-(io|bio|cpu|cputime|cputime-avg|mem) 經過這幾個選項,能夠看到具體是那個用戶那個進程佔用了相關係統資源,對系統調優很是有效。如查看當前佔用I/O、cpu、內存等最高的進程信息可使用dstat --top-mem --top-io --top-cpu:
dstat除了能夠獲取系統關鍵信息外,還能夠獲取其餘應用信息,如經過下列選項,能夠獲取到其餘一些經常使用應用信息:
--postfix 顯示postfix隊列大小
--sendmail 顯示sendmail隊列大小
--ntp 顯示ntp服務器時間
--nfs3 獲取nfs客戶端信息
--nfsd3 獲取nfs服務器信息,不過nfs服務器版本需爲第三版才能夠,該選項還有更多用法,能夠參考man幫助獲取
--mysql5-(cmds|conn|io|keys ) 獲取mysql5相關信息