2021-05-12 14:32:11
使用dstat檢查Linux系統效能
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.
相關文章