• 欢迎访问DBA的辛酸事儿,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 欢迎大家关注博主公众号:DBA的辛酸事儿
  • 博文中若有错误的地方,请大家指正,大家的指正是我前进的动力

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats

Percona-toolkit SEian.G 5年前 (2019-05-16) 1657次浏览 已收录 0个评论

Percona-toolkit工具包系列文章

pt-diskstats是一个perl语言写的脚本,功能和iostat类似,给出磁盘的I/O统计信息。那么它和iostat又有什么不同呢?最大区别在于pt-diskstats可交互,输出信息更加详细,pt-diskstats可以按照不同方式聚合后输出。

pt-diskstats实质上是对/proc/diskstats做snapshot,然后进行相关计算后输出。那么/proc/diskstats又是什么东东呢。我们来捣鼓捣鼓 /proc/diskstats吧,随意取一份主机上的 /proc/diskstats文件下来。

pt-diskstats可以工作在两种模式下:

第一是工作在交互模式下,该模式下我们可以动态控制pt-diskstats的输出,立刻看到结果;

第二种是先收集/proc/diskstats的信息,存到一个文件里面,采集一段时候后再通过pt-diskstats来计算。

采集分析

这种模式下无人值守,用一个脚本再后台定时采集/proc/diskstats,采集完后我们用工具分析最终结果好了,最后我们可以得出该段时间内的整体IO性能,而不是瞬间的性能指标。

采集脚本如下:

#!/bin/bash
INTERVAL=1
LOOPS=10
INT=1
echo `date`
while (( $INT <= $LOOPS )) 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
        let INT=INT+1
done
echo `date`

/*采集时间自己改改LOOPS就好了,采集间隔修改INTERVAL即可,10代表10s*/

采集完后,生成一个很小的文本文件,这是我们可以使用pt-diskstats来对该输出做一些分析,统计出该段时间内,查看每块磁盘的IO活动(–group-disk)

脚本执行完成后,会生成一个diskstats-samples.txt的文件,下面就是用工具来分析这个文件中的内容

[root@VM_54_118_centos scripts]# pt-diskstats --group-by disk diskstats-samples.txt 

  #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
  {9} vda        0.0     0.0     0.0     0%    0.0     0.0     1.1    15.6     0.0    74%    0.0     0.1   0%      0     1.1    0.1   0.0
  {9} vda1       0.0     0.0     0.0     0%    0.0     0.0     1.1    15.6     0.0    74%    0.0     0.1   0%      0     1.1    0.1   0.0
  {9} vdb        0.0     0.0     0.0     0%    0.0     0.0     0.2    14.0     0.0    71%    0.0     0.0   0%      0     0.2    0.0   0.0

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats

输出说明:

#ts:如果按照disk聚合,该值代表到run的总时间,如果按照sample聚合,该值也代表当前run的时间,如果按照all聚合,代表两个快照间时间间隔。关于聚合,后面解释。

device:设备名

rd_s:实际发送到物理设备的读请求次数,该值一般情况下比实际应用请求次数小,因为在IO队列中,很多IO都被合并掉了。

rd_avkb:平均每次读请求的字节,单位KB/s,也就是单词次读数据量

rd_mb_s:该设备上的读取带宽,单位MB/s。ps: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请求数目,如果该值不为0或者很大,那么你的设备负载很重

io_s:IOPS。ps:rd_s+wr_s=ios_s

qtime:IO请求排队时间(IO请求实际发到物理设备前有个排队过程)

stime:物理设备实际做物理读写所耗费的时间

知道每个字段什么意思了,我们现在想查看sdb-sdc两块盘在采集的时间段内的整体IO平均负载情况。

[root@VM_54_118_centos ~]# pt-diskstats --group-by disk --devices-regex vd[a-b] /wjqdata/mysql/scripts/diskstats-samples.txt 

  #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
  {9} vda        0.0     0.0     0.0     0%    0.0     0.0     1.1    15.6     0.0    74%    0.0     0.1   0%      0     1.1    0.1   0.0
  {9} vda1       0.0     0.0     0.0     0%    0.0     0.0     1.1    15.6     0.0    74%    0.0     0.1   0%      0     1.1    0.1   0.0
  {9} vdb        0.0     0.0     0.0     0%    0.0     0.0     0.2    14.0     0.0    71%    0.0     0.0   0%      0     0.2    0.0   0.0

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats

我还想查看该段时间内sdb的iops变化情况

[root@VM_54_118_centos ~]# pt-diskstats --group-by sample --devices-regex vd[b] --columns-regex io_s /wjqdata/mysql/scripts/diskstats-samples.txt  
  #ts device    io_s
  1.0 vdb        0.0
  2.0 vdb        0.0
  3.0 vdb        0.0
  4.0 vdb        0.0
  5.0 vdb        2.0
  6.0 vdb        0.0
  7.0 vdb        0.0
  8.0 vdb        0.0
  9.0 vdb        0.0
[root@VM_54_118_centos ~]# pt-diskstats --devices-regex vd[a-z] --group-by sample 
  #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.7 {3}        0.0     0.0     0.0     0%    0.0     0.0    11.8    11.0     0.1    64%    0.0     0.6   1%      0    11.8    0.0   0.6
  1.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  2.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  3.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  4.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  5.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  6.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     8.0    19.0     0.1    79%    0.0     0.0   0%      0     8.0    0.0   0.0
  7.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     2.0     4.0     0.0     0%    0.0     0.0   0%      0     2.0    0.0   0.0
  8.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  9.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
 10.7 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats

查看帮助文档

按?就可以看到帮助文档,这些动作可以在改工具运行过程中调整具体配置,而不用停工具,在线调整。很棒吧

[root@VM_54_118_centos ~]# pt-diskstats --devices-regex vd[a-z] --group-by sample
  #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.4 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  1.4 {3}        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  2.4 {3}        0.0     0.0     0.0     0%    0.0     0.0    10.0    12.8     0.1    69%    0.0     0.2   0%      0    10.0    0.2   0.1
   You can control this program by key presses:
   ------------------- Key ------------------- ---- Current Setting ----
   A, D, S) Set the group-by mode              S
   c) Enter a Perl regex to match column names .
   /) Enter a Perl regex to match disk names   vd[a-z]
   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 -----------------------

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats

关于pt-diskstats的使用详细参考官方文档说明:

https://www.percona.com/doc/percona-toolkit/3.0/pt-diskstats.html

【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats


如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats
喜欢 (3)
SEian.G
关于作者:
用心去记录工作,用心去感受生活,用心去学着成长;座右铭:苦练七十二变,笑对八十一难
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址