pt-diskstats
pt-diskstats:官方地址
說明
用途:用於監控GNU/Linux的I/O交互式工具。
語法:
pt-diskstats [OPTIONS] [FILES]
pt-diskstats打印GNU/Linux的磁盤I/O統計數據。它有點類似於iostat,但它是交互式的,而且更加詳細。它可以分析從另一臺機器上收集的數據。
默認情況下,通過讀取/proc/diskstats
文件中數據,然後通過分析展示。還有一種方式就是,通過分析/proc/diskstats
文件的備份樣本,可通過shell
腳本來定時備份/proc/diskstats
文件。
備份/proc/diskstats
文件的腳本
INTERVAL=1
while true; do
sleep=$(date +%s.%N | awk "{print $INTERVAL - (\$1 % $INTERVAL)}")
sleep $sleep
date +"TS %s.%N %F %T" >> diskstats-samples.txt
cat /proc/diskstats >> diskstats-samples.txt
done
在工具運行期間,可通過輸入q
推出命令,也可以輸入?
來交互式指定其他參數.
具體例子
默認情況下,直接輸入pt-diskstats即可。
[root@BigData ~]# pt-diskstats
#ts device rd_s rd_avkb rd_mb_s rd_mrg rd_cnc rd_rt wr_s wr_avkb wr_mb_s wr_mrg wr_cnc wr_rt busy in_prg io_s qtime stime
0.2 sda 0.0 0.0 0.0 0% 0.0 0.0 122.5 18.9 2.3 0% 1.1 9.1 32% 6 122.5 8.4 2.6
0.2 sda2 0.0 0.0 0.0 0% 0.0 0.0 122.5 18.9 2.3 0% 1.1 9.1 32% 6 122.5 8.4 2.6
0.2 dm-0 0.0 0.0 0.0 0% 0.0 0.0 147.0 21.1 3.0 0% 1.1 7.6 32% 6 147.0 7.2 2.2
1.0 sda 0.0 0.0 0.0 0% 0.0 0.0 188.0 26.9 4.9 17% 6.1 26.7 87% 3 188.0 25.5 3.8
1.0 sda2 0.0 0.0 0.0 0% 0.0 0.0 188.0 26.9 4.9 17% 6.1 26.7 87% 3 188.0 25.5 3.8
1.0 dm-0 0.0 0.0 0.0 0% 0.0 0.0 224.0 21.9 4.8 0% 7.7 34.3 87% 3 224.0 33.2 3.9
You can control this program by key presses:
------------------- Key ------------------- ---- Current Setting ----
A, D, S) Set the group-by mode A
c) Enter a Perl regex to match column names .
/) Enter a Perl regex to match disk names (none)
z) Set the sample size in seconds 1
i) Hide inactive disks yes
p) Pause the program
q) Quit the program
space) Print headers
------------------- Press any key to continue -----------------------
時間模式:
[root@BigData ~]# pt-diskstats --show-timestamps
#ts device rd_s rd_avkb rd_mb_s rd_mrg rd_cnc rd_rt wr_s wr_avkb wr_mb_s wr_mrg wr_cnc wr_rt busy in_prg io_s qtime stime
14:00:25 sda 0.0 0.0 0.0 0% 0.0 0.0 36.9 7.8 0.3 0% 0.1 2.2 8% 0 36.9 0.2 2.0
14:00:25 sda2 0.0 0.0 0.0 0% 0.0 0.0 36.9 7.8 0.3 0% 0.1 2.2 8% 0 36.9 0.2 2.0
14:00:25 dm-0 0.0 0.0 0.0 0% 0.0 0.0 36.9 7.8 0.3 0% 0.1 2.2 8% 0 36.9 0.2 2.0
列名解釋:
#ts
:此列的內容因工具的聚合模式而異。默認模式是,當每行包含關於單個磁盤的信息,但可能是在該磁盤的多個樣本之間進行聚合時,這一列以{花括號}的形式顯示包含在輸出行中的樣本數量。在顯示的示例中,每一行輸出彙總/proc/diskstats.的{1}樣本。而在時間模式下,則顯示的當前時間。device
:設備名稱。rd_s
:每秒讀取次數。計算公式:delta[field1] / delta[time]
rd_avkb
:平均讀取數據量大小,單位:kb。計算公式:2 * delta[field3] / delta[field1]
rd_mb_s
:每秒讀取的平均兆字節數。計算公式:2 * delta[field3] / delta[time]
rd_mrg
:在發送到物理設備之前,在隊列調度程序中合併在一起的讀請求的百分比。計算公式:100 * delta[field2] / (delta[field2] + delta[field1])
rd_cnc
:根據Little’s Law計算的讀操作的平均併發性。這是塊設備上的端到端併發性,而不是底層磁盤上的併發性。它包括在隊列中花費的時間。計算公式:delta[field4] / delta[time] / 1000 / devices-in-group
rd_rt
:讀取操作的平均響應時間(以毫秒爲單位)。這是端到端響應時間,包括在隊列中花費的時間。發出I/O請求的應用程序看到的是響應時間,而不是塊設備底層物理磁盤的響應時間。計算公式:delta[field4] / (delta[field1] + delta[field2])
wr_s
,wr_avkb
,wr_mb_s
,wr_mrg
,wr_cnc
,wr_rt
:對應於讀操作相關指標,請自行查看。busy
:該設備至少有一個請求正在進行的掛鐘時間的百分比;這就是iostat所稱的%util,實際上它是利用率,這取決於您如何定義利用率,但在通常的說法中,這有時是含糊不清的。也可以稱爲停留時間;至少一個請求駐留在系統中的時間。計算公式:100 * delta[field10] / (1000 * delta[time])
in_prg
:正在進行的請求數量。與讀寫組合不同,讀寫組合是由可靠的數字生成的平均值,這個數字是一個瞬時樣本,您可以看到它可能代表一個請求高峯,而不是真正的長期平均值。如果這個數字很大,本質上意味着設備負載很重。計算公式:field9
ios_s
:物理設備的平均吞吐量,以每秒I/O操作(IOPS)表示。本列顯示底層設備正在處理的IOPS總數。它是rd_s和wr_s的和。qtime
:平均排隊時間;也就是說,一個請求在發送到物理設備之前在設備調度程序隊列中花費的時間。這是讀寫的平均值。計算公式:delta[field11] / (delta[field1, 2, 5, 6] + delta[field9]) - delta[field10] / delta[field1, 2, 5, 6]
stime
:平均使用時間;也就是說,物理設備在請求在隊列中完成等待後處理請求所花費的時間。這是讀寫的平均值。由排隊理論利用公式U = SX計算得到S。計算公式:delta[field10] / (delta[field1, 2, 5, 6])