Percona-Toolkit系列(6) --- pt-diskstats

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])
发布了274 篇原创文章 · 获赞 65 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qianglei6077/article/details/98477583