首頁 > 軟體

使用dstat檢查Linux系統效能

2020-06-16 16:40:35

Dstat提供了有關Linux系統效能的寶貴見解,幾乎取代了較舊的工具,如vmstat,netstat,iostat和ifstat。

想要對Linux系統進行快速效能檢查嗎? 您可能需要檢視dstat命令。 Dstat提供了有關Linux系統效能的寶貴見解,幾乎取代了一系列舊工具,如vmstat,netstat,iostat和ifstat,它們具有結合其功能的靈活而強大的命令。

使用這一個命令,您可以檢視虛擬記憶體,網路連線和介面,CPU活動,輸入/輸出裝置等。 在今天的貼文中,我們將檢查一些dstat命令,看看它們可以向您展示有關系統的內容。

Dstat選項和預設值

首先,讓我們從一個相當簡單的命令開始。 使用dstat -c(CPU)選項,dstat顯示CPU統計資訊。 在下面的範例中,我們要求兩秒間隔和六個報告。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -c 2 6
--total-cpu-usage--
usr sys idl wai stl
  4  2  94  0  0
 29  6  65  0  0
 26  14  60  0  0
 48  13  39  0  0
 68  20  13  0  0
 38  10  52  1  0

請注意,此報告中的第一行資料看起來與其他資料非常不同,它們為您提供自系統上次引導以來的平均值,並且無論指定的時間間隔如何都會立即返回。 在這個例子中,我們看到系統平均空閒(96%),但現在在使用者和系統處理任務之間忙著工作。

如果您沒有為dstat提供任何選項,該命令將使用預設設定(-cdngy)選項集。 這些包括:

  • c  -  cpu
  • d  - 磁碟
  • n  - 網路
  • g  - 分頁統計
  • y  - 系統統計資料

此命令的輸出將類似於您在下面看到的內容。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat 2 10
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  4  2  94  0  0| 220k  216k|  0    0 |4407B  27k| 129  662
 28  6  66  0  0|  0    0 |  0    0 |  0    0 | 431  1184
 50  17  33  0  0|2048B  12k|  0  193B|2048B    0 | 430  1507
 33  8  59  0  0|  0    0 |  0    0 |  0    0 | 440  1324
 31  11  58  0  0|2048B    0 |  0    0 |  0    0 | 410  1373
 26  4  69  1  0|4096B  28k|  0    0 |  0    0 | 354  1074
 63  34  4  0  0|  0  128k|  90B    0 |  0    0 | 302  2154
 32  10  58  0  0|  0  152k|  60B    0 |  0    0 | 402  1508
 16  14  69  0  0|  0    0 |  75B  45B|  0    0 | 495  1763
 15  6  79  0  0|  0    70k|  90B    0 |  0    0 | 263  931

您可能已經注意到上面顯示的輸出頂部附近的“您沒有選擇任何統計資訊”訊息。 要輕鬆解決這個問題,只需新增-a選項即可。 它將選擇預設選項並省略警告訊息。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -a 2 5
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  4  2  94  0  0| 218k  215k|  0    0 |4386B  26k| 130  663
  8  5  88  0  0|  0    24k|  30B    0 |  0    0 | 229  724
 27  5  68  0  0|  0    0 |  60B    0 |  0    0 | 372  993
 26  5  68  0  0|  0    0 |  60B    0 |  0    0 | 478  1410
 32  8  60  0  0|  0    0 |  30B    0 |  0    0 | 453  1585

 

在這種“無選項”方法中,您仍然可以設定每個時間間隔的時間(以秒為單位)以及要檢視的時間間隔數。 如果未指定間隔數,則命令將繼續執行,直到您使用^ c停止它。

這告訴你什麼?

在上面顯示的輸出中,我們看到了被查詢的系統相當繁忙的證據。 沒有報告空閒時間; CPU將所有時間都花在使用者和系統任務之間。 將此與報告進行比較,報告顯示系統閒置的時間是一半。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -a 2
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  4  2  94  0  0| 218k  215k|  0    0 |4369B  26k| 130  661
 16  7  77  0  0|  0    26k|  0    0 |  0    0 | 325  1159
 13  3  84  0  0|2048B 6144B|  0    0 |2048B    0 | 215  515
 64  13  23  0  0|2048B  10k|  0    0 |2048B    0 | 388  1576
 32  9  59  0  0|  0    0 |  0    0 |  0    0 | 496  1414

另一方面,磁碟一點也不繁忙,讀寫為零。

要想熟練地評估系統效能,一個關鍵就是定期執行這些命令——即使你不知道有必要質疑系統執行得有多好。如果您了解了伺服器的正常效能,您將更容易發現問題。

這是另一個例子,這個有一些磁碟活動:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -a 2 5
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  4  2  94  0  0| 214k  211k|  0    0 |4293B  26k| 130  656
  9  6  85  0  0|6144B    0 |  0    0 |  0    0 | 218  752
  6  2  92  0  0|  0    20k|  30B    0 |  0    0 | 141  355
  3  2  95  0  0|  0    0 |  60B    0 |  0    0 |  79  212
  2  1  97  0  0|  0    0 |  60B    0 |  0    0 |  72  194

在所有這些範例中,我們沒有看到任何分頁(將可執行映像載入到進程的虛擬記憶體中)活動。 有一個相當恆定的中斷和上下文切換正在進行,但數位都非常適度。

在下面的命令中,我們正在檢視記憶體使用情況報告。 請注意與正在使用的記憶體相比的可用記憶體量。 這個系統沒有受到挑戰。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -m 2 3
------memory-usage-----
 used  free  buff  cach
1389M  752M 69.1M  643M
1389M  752M 69.1M  643M
1389M  752M 69.1M  643M

在下一個命令中,我們正在檢視高階記憶體使用情況報告。 提供了一些額外的記憶體統計資訊

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat --mem-adv
-------------advanced-memory-usage-------------
total  used  free  buff  cach dirty shmem  recl
2912M 1392M  748M 69.3M  644M 32.0k 14.4M 71.8M
2912M 1392M  748M 69.3M  644M 32.0k 14.4M 71.8M
2912M 1392M  748M 69.3M  644M 44.0k 14.4M 71.8M
2912M 1392M  748M 69.3M  644M 44.0k 14.4M 71.8M
2912M 1392M  749M 69.3M  644M 44.0k 14.4M 71.8M
2912M 1391M  750M 69.3M  644M 44.0k 14.4M 71.8M
2912M 1391M  750M 69.3M  644M 44.0k 14.4M 71.8M
2912M 1391M  750M 69.3M  644M 44.0k 14.4M 71.8M

在下一個命令中,我們正在檢視正在使用的開啟檔案和inode。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat --fs
--filesystem-
files  inodes
10848  36964
10848  36964
10848  36964
10848  36964
10848  36964
10848  36964

在最後一個範例中,我們生成標準報告,但新增了一個。 我們還將報告寫入.csv檔案,以便可以在其他工具(如Excel)中使用。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat --output /tmp/stats.csv -a 2 5
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  4  2  94  0  0| 209k  207k|  0    0 |4229B  25k| 130  653
 20  7  73  0  0|  0    0 |  0    0 |  0    0 | 359  1001
 15  5  80  0  0|  0    16k|  0    0 |  0    0 | 222  744
  3  1  96  0  0|  0    0 |  0    0 |  0    0 |  93  270
  1  2  96  1  0|  0  6144B|  0    0 |  0    0 |  80  243

這是csv檔案的樣例:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ cat /tmp/stats.csv
"Dstat 0.7.3 CSV output"
"Author:","Dag Wieers <dag@wieers.com>",,,,"URL:","http://dag.wieers.com/home-made/dstat/"
"Host:","linuxidc",,,,"User:","linuxidc"
"Cmdline:","dstat --output /tmp/stats.csv -a 2 5",,,,"Date:","29 Dec 2018 17:11:59 CST"
"total cpu usage",,,,,"dsk/total",,"net/total",,"paging",,"system",
"usr","sys","idl","wai","stl","read","writ","recv","send","in","out","int","csw"
4.491,1.789,93.600,0.121,0,214501.354,212192.427,0,0,4229.474,25991.368,130.227,653.321
20.207,6.736,73.057,0,0,0,0,0,0,0,0,359,1000.500
15.464,4.639,79.897,0,0,0,16384,0,0,0,0,222,744
3.046,1.015,95.939,0,0,0,0,0,0,0,0,92.500,269.500
1.015,2.030,96.447,0.508,0,0,6144,0,0,0,0,79.500,242.500

什麼是dstat?

如前所述,dstat是一個很好的工具,可用於檢視系統效能的所有方面。 但是這個問題的另一個答案是它是一個Python指令碼,如果你想看看它是如何工作的,你可以自由地閱讀它。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ which dstat
/usr/bin/dstat
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ file /usr/bin/dstat
/usr/bin/dstat: Python script, ASCII text executable
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ more /usr/bin/dstat | head -6
#!/usr/bin/env python2

### This program is free software; you can redistribute it and/or
### modify it under the terms of the GNU General Public License
### as published by the Free Software Foundation; either version 2
### of the License, or (at your option) any later version.


IT145.com E-mail:sddin#qq.com