1. 程式人生 > 其它 >一天一個 Linux 命令(39):dstat 命令

一天一個 Linux 命令(39):dstat 命令

一、簡介

Linux下的dstat是一個全能系統資訊統計工具的命令,用來替換vmstat、iostat、netstat、nfsstat和ifstat這些命令。dstat克服了這些命令的侷限並增加了一些另外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統執行狀況並用於基準測試和排除故障。

dstat將以列表的形式提供選項資訊並清晰地告訴你是在何種幅度和單位顯示輸出。這樣更好地避免了資訊混亂和誤報。更重要的是,它可以更容易編寫外掛來收集你想要的資料資訊,以從未有過的方式進行擴充套件。

dstat支援即時重新整理,譬如輸入dstat 3即每三秒收集一次,但最新的資料都會每秒重新整理顯示。和sysstat相同的是,dstat也可以收集指定的效能資源,譬如dstat -c即顯示CPU的使用情況。

如果系統沒有安裝,可以通過sudo yum install dstat來安裝。

二、格式說明

dstat [-afv] [options..] [delay [count]]
dstat [引數]

Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
  -c, --cpu              enable cpu stats
     -C 0,3,total           include cpu0, cpu3 and total
  -d, --disk             enable disk stats
     -D total,hda           include hda and total
  -g, --page             enable page stats
  -i, --int              enable interrupt stats
     -I 5,eth2              include int5 and interrupt used by eth2
  -l, --load             enable load stats
  -m, --mem              enable memory stats
  -n, --net              enable network stats
     -N eth1,total          include eth1 and total
  -p, --proc             enable process stats
  -r, --io               enable io stats (I/O requests completed)
  -s, --swap             enable swap stats
     -S swap1,total         include swap1 and total
  -t, --time             enable time/date output
  -T, --epoch            enable time counter (seconds since epoch)
  -y, --sys              enable system stats

  --aio                  enable aio stats
  --fs, --filesystem     enable fs stats
  --ipc                  enable ipc stats
  --lock                 enable lock stats
  --raw                  enable raw stats
  --socket               enable socket stats
  --tcp                  enable tcp stats
  --udp                  enable udp stats
  --unix                 enable unix stats
  --vm                   enable vm stats

  --plugin-name          enable plugins by plugin name (see manual)
  --list                 list all available plugins

  -a, --all              equals -cdngy (default)
  -f, --full             automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat           equals -pmgdsc -D total

  --bits                 force bits for values expressed in bytes
  --float                force float values on screen
  --integer              force integer values on screen

  --bw, --blackonwhite   change colors for white background terminal
  --nocolor              disable colors (implies --noupdate)
  --noheaders            disable repetitive headers
  --noupdate             disable intermediate updates
  --output file          write CSV output to file
  --profile              show profiling statistics when exiting dstat

三、選項說明

-a  此為預設選項,等同於-cdngy。
-c	顯示CPU系統佔用,使用者佔用,空閒,等待,中斷,軟體中斷等資訊
-d	顯示磁碟讀寫資料大小
-n	顯示網路狀態
-l	顯示系統負載情況
-m	顯示記憶體使用情況,包括used,buffer,cache,free值
-g	顯示頁面使用情況
-p	顯示程序狀態
-s	顯示交換分割槽使用情況
-t  將當前時間顯示在第一行
-r	I/O請求情況
-y	系統狀態
–fs 顯示檔案系統統計資料(包括檔案總數量和inodes值)
--ipc 顯示ipc訊息佇列,訊號等資訊
--socket 顯示網路統計資料,用來顯示tcp udp埠狀態
–tcp 顯示常用的TCP統計
–udp 顯示監聽的UDP介面及其當前用量的一些動態資料

--disk-util 顯示某一時間磁碟的忙碌狀況

--freespace 顯示當前磁碟空間使用率

--proc-count 顯示正在執行的程式數量

--top-bio 指出塊I/O最大的程序

--top-cpu 圖形化顯示CPU佔用最大的程序

--top-io 顯示正常I/O最大的程序

--top-mem 顯示佔用最多記憶體的程序

四、命令功能

一個全能系統資訊統計工具

五、常見用法

5.1 顯示cpu、disk、net、page、system資訊

# dstat

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0  99   0   0   0| 244B   38k|   0     0 |   0     0 | 758  1156 
  0   0 100   0   0   0|   0     0 | 150B  228B|   0     0 | 787  1285 
  0   0 100   0   0   0|   0     0 |  96B  372B|   0     0 | 690  1143 
  0   0 100   0   0   0|   0     0 |  54B  212B|   0     0 | 673  1104 
  0   0 100   0   0   0|   0     0 | 138B  270B|   0     0 | 757  1235 
  0   1  99   0   0   0|   0    40k| 702B 1151B|   0     0 | 942  1421 
  0   0  99   0   0   0|   0     0 |2170B 3495B|   0     0 | 908  1417 

CPU狀態:CPU的使用率。這項報告更有趣的部分是顯示了使用者,系統和空閒部分,這更好地分析了CPU當前的使用狀況。如果你看到"wait"一欄中,CPU的狀態是一個高使用率值,那說明系統存在一些其它問題。當CPU的狀態處在"waits"時,那是因為它正在等待I/O裝置(例如記憶體,磁碟或者網路)的響應而且還沒有收到。

磁碟統計(dsk):磁碟的讀寫操作,這一欄顯示磁碟的讀、寫總數。

網路統計(net):網路裝置傳送和接受的資料,這一欄顯示的網路收、發資料總數。

分頁統計(paging):系統的分頁活動。分頁指的是一種記憶體管理技術用於查詢系統場景,一個較大的分頁表明系統正在使用大量的交換空間,或者說記憶體非常分散,大多數情況下你都希望看到page in(換入)和page out(換出)的值是0 0。

系統統計(system):這一項顯示的是中斷(int)和上下文切換(csw)。這項統計僅在有比較基線時才有意義。這一欄中較高的統計值通常表示大量的程序造成擁塞,需要對CPU進行關注。你的伺服器一般情況下都會執行執行一些程式,所以這項總是顯示一些數值。

預設情況下,dstat每秒都會重新整理資料。如果想退出dstat,你可以按"CTRL+C"鍵。

需要注意的是報告的第一行,通常這裡所有的統計都不顯示數值的。

5.2 每3秒收集一次 cpu、disk、net、page、system 資訊

# dstat 3

5.3 顯示CPU系統佔用,使用者佔用,空閒,等待,中斷,軟體中斷等資訊

# dstat -c

5.4 顯示磁碟讀寫資料大小

# dstat -d

5.5 顯示網路狀態

# dstat -n

5.6 檢視全部記憶體都有誰在佔用

# dstat -g -l -m -s --top-mem

5.7 顯示CPU資源損耗的資料

# dstat -c -y -l --proc-count --top-cpu

5.8 輸出一個csv檔案

dstat –output /tmp/dstat.csv -tpcdrmgln

5.9 找出佔用資源最高的程序和使用者

dstat --top-mem --top-io --top-cpu