PERCONA-TOOLKIT : pt-ioprofile分析IO情况

针对IO密集型应用做系统调优的时候,我们通常都需要知道系统cpu  内存  io 网络等系统性能 和 使用率,结合应用本身的访问量,以及 mysql的性能指标来综合分析。比如说:我们将系统压力情况分为三个阶段:从用户端开始到web server,再到mysql。

1. 客户量:我们可以从web app的访问log,查看访问量(通常会记录时间),

2. 系统指标: 对比dstat、 iostat/ mpstat pidstat 等搜集对应的系统性能指标,

3. mysql: 使用mysql status ,或者 mycheckpoint等工具搜集mysql的cache , query等数据。

但是问题来了,我们很容易搜集到了系统层、设备层的IO数据,但是缺少一个体贴的工具来告诉你应用打开了多少文件,文件读写比例,执行了多少次fsync,是随机读写还是顺序读写,另外,mysql是一个庞大而精心设计的系统,使用了一些列的方案如table cache, thread cache 等来提升IO,我们比较容易获得他的缓存量,命中率,文件数,但是却不好直观的知道它到底对物理IO设备读写了多少数据。

ioprofile就是这样一个工具,提供了直观的量化的数据来描述进程对io设备的真实读写量。

由于实现方式是使用strace注入到线程中,所以运行时需要sudo,方法如下:

sudo ./pt-ioprofile -p 8534 -c count

sudo ./pt-ioprofile -p 8534 -c sizes

2015年 04月 23日 星期四 17:55:35 CST
Tracing process ID 8534
     total       read     pwrite      fsync       open      close filename
    613878     613878          0          0          0          0 /redmine/mysql/data/mycheckpoint/sv_diff.frm
    406924     406924          0          0          0          0 /redmine/mysql/data/mycheckpoint/sv_sample.frm
     18432          0      18432          0          0          0 /redmine/mysql/data/ib_logfile1
      3029       3029          0          0          0          0 /redmine/mysql/data/mycheckpoint/custom_query_view.frm

sudo ./pt-ioprofile -p 8534 -c times

2015年 04月 23日 星期四 17:54:09 CST
Tracing process ID 8534
     total     pwrite      fsync filename
  0.100162   0.000271   0.099891 /redmine/mysql/data/ibdata1
  0.003826   0.000000   0.003826 /redmine/mysql/data/ib_logfile0

sudo ./pt-ioprofile -p 8534 -c sizes -g filename

有人在生产环境中使用ioprofile时出现导致mysql挂起的现象,虽然是4年前了,但还是请谨慎使用。

以上数据输出中的 read write  fread fwrite  fsync 等指标分别是指什么呢? 多大的量才算正常?

read/write/fsync:

1. linux底层操作;

2. 内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作。

fread/fwrite/fflush:

1. c语言标准规定的io流操作,建立在read/write/fsync之上
2. 在用户层, 又增加了一层缓冲机制,用于减少内核调用次数,但是增加了一次内存拷贝。

关系参看下图:

1. 对于输入设备,调用fsync/fflush将清空相应的缓冲区,其内数据将被丢弃;

2. 对于输出设备或磁盘文件,fflush只能保证数据到达内核缓冲区,并不能保证数据到达物理设备, 因此应该在调用fflush后,调用fsync(fileno(stream)),确保数据存入磁盘。

参考:

1. http://blog.yufeng.info/archives/995

2. http://blog.csdn.net/ybxuwei/article/details/22727565

时间: 2024-08-02 02:17:36

PERCONA-TOOLKIT : pt-ioprofile分析IO情况的相关文章

Percona Toolkit 安装

Percona Toolkit(pt工具)是一组用于维护数据库的命令行工具, 大部分是Perl脚本, 其连接数据库, 需要DBI和DBD::mysql的支持. 直接使用yum安装这两个软件包就行. # yum install perl-DBI perl-DBD-MySQL 安装pt工具的依赖后, 就是安装pt本身了(percona-toolkit-3.0.3_x86_64.tar.gz), 这里指定其安装的目录. # perl Makefile.PLPREFIX=/usr/local/perco

Percona Toolkit 学习(四)(heartbeat, index-usage,ioprofile,killmextmysql-summary)

seconds_behind_master含义及不足 seconds_behind_master的值是通过将salve服务器当前的时间戳与二进制日志中的事件的时间戳相比得到的,所以只有执行事件时才会报告延迟. 1.1 如果备库复制线程没有运行,就会报延迟为null.1.2 一些错误比如网络不稳定可能导致复制中断或停止复制线程,但是seconds_behind_master将显示为0,而不是显示错误1.3 即使备库线程正在运行,备库有时候可能无法计算延时,如果发生这种情况,备库会报0或者null.

pt(Percona Toolkit)工具详解:(一)安装

pt(Percona Toolkit)工具是由Percona公司开发的一个用perl语言编写的工具集,包含很多功能,例如在线更改数据表结构,校验主从数据,检查数据库状态,分析慢查询等这些靠人手做起来比较麻烦的事情,功能强大,操作简单. 安装 既然是perl语言开发的工具集,那当然是先安装perl相关依赖包了 yum install -y perl perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl-Digest-MD5 然后,就到下面这个

Percona Toolkit mysql辅助利器

1 PT介绍 Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在线DDL等,DBA熟悉掌握后将极大提高工作效率. 2 PT 安装 下载地址 :https://www.percona.com/downloads/percona-toolkit/ 下载完上传到linux 服务器 安装PT [[email protected] ~]# yum -y install p

Percona Toolkit 的安装与使用(安装篇)

Percona Toolkit 是一个相当好用的mysql管理工具.这里记录下最简单的安装方法.比源码安装要方便多了. wget https://www.percona.com/downloads/percona-toolkit/2.2.17/RPM/percona-toolkit-2.2.17-1.noarch.rpm   yum install percona-toolkit-2.2.17-1.noarch.rpm 这样就安装好了.够简单了吧 如果你习惯用rpm包来安装的话,可能要手动解决依

px,dp,dip,sp,in,mm,pt详细分析

px,dp,dip,sp,in,mm,pt详细分析 px   :(pixels),屏幕的像素点,不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip  :(device independent pixels),设备独立像素,这个和设备硬件有关,一般我们为了支持WCGA.HVGA和QVGA推荐使用这个,不依赖于像素.等同于dp. dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px. sp   :(scaled pixels—

Centos 安装Percona Toolkit工具集

1.下载 下载地址:   https://www.percona.com/downloads/percona-toolkit/LATEST/ [[email protected] ~]# wget https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-re85ce15-el7-x86_64-bundle.tar 2.安装 [[email prot

Percona Toolkit 2.2.12 发布,MySQL 管理工具

Percona Toolkit 2.2.12 发布了, Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务. 改进内容包括: New Features: pt-stalk now gathers dmesg output from up to 60 seconds before the triggering event. Bugs Fixed: Fixed bug 1376561 : pt-archiver was not able to archive a

Linux服务器用iotop命令分析服务器磁盘IO情况

Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦.如果会systemtap, 或者blktrace这些事情难不到大家, 但是没专用工具总不是很舒服的. 幸运的是Linux 2.6.20内核以后提供了基于每个进程的IO记账功能,所以就有了类似iotop这样方便的工具.可以通过iotop工具进行分析,查看哪个进程占有读写比较高. 官网地址: http://guichaz.free.fr/iotop/ Iot