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])