热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqlptdiskstats_【Perconatoolkit系列】PerconaToolkit工具之ptdiskstats

pt-diskstats是一个perl语言写的脚本,功能和iostat类似,给出磁盘的IO统计信息。那么它和iostat又有什么不同呢?最

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 <&#61; $LOOPS )) do Sleep&#61;$(date &#43;%s.%N | awk "{print $INTERVAL - (\$1 % $INTERVAL)}") sleep $Sleep date &#43;"TS %s.%N %F %T" >> diskstats-samples.txt

cat /proc/diskstats >> diskstats-samples.txt

let INT&#61;INT&#43;1

done

echo &#96;date&#96;

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

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

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

[root&#64;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

a72ce61186e342c6c59a26b5df790959.png

输出说明&#xff1a;

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

device:设备名

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

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

rd_mb_s:该设备上的读取带宽&#xff0c;单位MB/s。ps:rd_s*rd_avkb&#61;rd_mb_s

rd_mrg:被合并的读请求数占总的读请求数的百分比&#xff0c;越高越好

rd_cnc:读请求并发性

rd_rt:读请求平均响应时间

wr_s, wr_avkb, wr_mb_s, wr_mrg, wr_cnc, wr_rt和读请求一样&#xff0c;不赘述

busy:人们习惯称为设备的繁忙程度&#xff0c;暂且这么理解吧

in_prg:当前正在向底层物流设备提交的IO请求数目&#xff0c;如果该值不为0或者很大&#xff0c;那么你的设备负载很重

io_s:IOPS。ps:rd_s&#43;wr_s&#61;ios_s

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

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

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

[root&#64;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

bfd21bea0f297db03938a674bfd98741.png

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

[root&#64;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&#64;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

1bc5f223e99306616d1fed0b9cc183fa.png

查看帮助文档

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

[root&#64;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 -----------------------

6921f781ec7459ed71d1e35fa7a626cd.png

关于pt-diskstats的使用详细参考官方文档说明&#xff1a;

3ee62fbdbd294952ea971c2167becd8a.png

如果您觉得本站对你有帮助&#xff0c;那么可以收藏和推荐本站&#xff0c;帮助本站更好地发展&#xff0c;在此谢过各位网友的支持。

转载请注明原文链接&#xff1a;【Percona-toolkit系列】Percona Toolkit工具之pt-diskstats



推荐阅读
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • 1、PLSQLDeveloper记住登陆密码在使用PLSQLDeveloper时,为了工作方便希望PLSQLDeveloper记住登录Oracle的用户名和密码&#x ... [详细]
  • 2021年最详细的Android屏幕适配方案汇总
    1Android屏幕适配的度量单位和相关概念建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章 ... [详细]
  • jqueryajax怎么通过header传递参数?
    /这个是全局的ajax请求头设置,所有的ajax请求都会加上这个请求头 ... [详细]
author-avatar
WYZ的小舟于SZ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有