开发者社区> 指尖的舞曲> 正文

linux系统分析工具之Blktrace

简介: Blktrace简介: blktrace是一个针对Linux内核中块设备I/O层的跟踪工具,用来收集磁盘IO信息中当IO进行到块设备层(block层,所以叫blk trace)时的详细信息(如IO请求提交,入队,合并,完成等等一些列的信息),是由 Linux内核块设备层的维护者开发的,目前已经集成到内核2.6.17及其之后的内核版本中。
+关注继续查看
Blktrace简介:
 blktrace是一个针对Linux内核中块设备I/O层的跟踪工具,用来收集磁盘IO信息中当IO进行到块设备层(block层,所以叫blk trace)时的详细信息(如IO请求提交,入队,合并,完成等等一些列的信息),是由
 Linux内核块设备层的维护者开发的,目前已经集成到内核2.6.17及其之后的内核版本中。通过使用这个工具,使用者可以获取I/O请求队列的各种详细的情况,包括进行读写的进程名称、进程号、执行时间、读写的物理
 块号、块大小等等,是一个Linux下分析I/O相关内容的很好的工具
 透过blktrace来观察io行为的时候,第一件事情需要选择目标设备,以便分析该设备的io行为。blktrace分为内核部分和应用部分,应用部分收到我们要捕捉的设备名单,传给内核。内核分布在block层的各个
 tracepoint就会开始工作,把相关的数据透过relayfs传递到blktrace的应用部分,应用部分把这些数据记到磁盘,以便后续分析。
 blktrace架构图参照:
 http://blog.yufeng.info/archives/2524
 block层位置图参照:
 http://blog.yufeng.info/archives/751
 blktrace是一个可以显示block的io详细信息的工具,但他的输出信息太专业了,很难看懂,可以同通过blkiomon、blkparse,btt等工具来查看
blktrace工作原理:
(1)blktrace测试的时候,会分配物理机上逻辑cpu个数个线程,并且每一个线程绑定一个逻辑cpu来收集数据
(2)blktrace在debugfs挂载的路径(默认是/sys/kernel/debug )下每个线程产生一个文件(就有了对应的文件描述符),然后调用ioctl函数(携带文件描述符, 
   _IOWR(0x12,115,struct blk_user_trace_setup),& blk_user_trace_setup三个参数),产生系统调用将这些东西给内核去调用相应函数来处理,由内核经由debugfs文件系统往此文件描述符写入数据 (3)blktrace需要结合blkparse来使用,由blkparse来解析blktrace产生的特定格式的二进制数据 (4)blkparse仅打开blktrace产生的文件,从文件里面取数据做展示以及最后做per cpu的统计输出,但blkparse中展示的数据状态(如 A,U,Q,详细见下)是blkparse在t->action & 0xffff之后自己
   把数值转换为“A,Q,U之类的状态”来展示的。
blktrace安装:
 $ sudo apt-get install blktrace
Debugfs挂载:
 由blktrace工作原理可知,blktrace需要借助内核经由debugfs文件系统(debugfs文件系统在内存中)来输出信息,所以用blktrace工具之前需要先挂载debugfs文件系统
$ sudo mount –t debugfs debugfs /sys/kernel/debug
blktrace语法:
 blktrace -d dev [ -r debugfs_path ] [ -o output ] [-k ] [ -w time ] [ -a action ] [ -A action_mask ] [ -v ]
blktrace选项:
 -A hex-mask			#设置过滤信息mask成十六进制mask
 -a mask			#添加mask到当前的过滤器
 -b size			#指定缓存大小for提取的结果,默认为512KB
 -d dev			#添加一个设备追踪
 -I file			#Adds the devices found in file as devices to trace
 -k			#杀掉正在运行的追踪
 -n num-sub			#指定缓冲池大小,默认为4个子缓冲区 
 -o file			#指定输出文件的名字
 -r rel-path			#指定的debugfs挂载点
 -V			#版本号 
 -w seconds			#设置运行的时间
输出方式:

 文件输出:
 $ blktrace –d /dev/sda –o test1
  #对/dev/sda的trace,输出文件名为test1. Blktrace.[0-cpu数-1](文件里面存的是二进制数据,需要blkparse来解析)(如之前在blktrace原理中提到,每个逻辑cpu都有一个线程,产生一个文件,
  故会产生cpu数目个文件)
 终端输出:
 $ blktrace –d /dev/sda –o - | blkparse  -i –
  #输出到终端用“-”表示,可是都是一堆二进制东西,没法看,所以需要实时blkparse来解析
  #Blkparse 的“-i”后加文件名,blktrace输出为“-“代表终端(代码里面写死了,就是用这个符号来代表终端),blkparse也用“-”来代表终端解析
几个例子:
blktrace -d /dev/sda -o - |blkparse -i -
此命令是将blktrace的结果输出到屏幕,然后blkparse将屏幕中的blktrace的结果作为分析的输入,最后将分析的结果同样输出到屏幕。这里需要指出的是,blkparse是基于blktrace的分析工具,
因为blktrace本身并不具有分析功能,它只是进行监测,其余的工作都是由blkparse来进行的。
blktrace -d /dev/sda |blkparse -i -
此命令是将blktrace的结果输出到本地文件夹,文件名为sda.blktrace.0和sda.blktrace.1,这里之所以有两个文件是因为运行机器有两个CPU的缘故,blktrace根据CPU的个数来生成文件,
对应每个CPU都有一个相应的监测数据文件。
blktrace -d /dev/sda -o trace |blkparse -i -
此命令是将blktrace的结果输出到已经事先指定好的文件trace中,注意这个trace文件必须在本地文件夹中存在,无需带有任何后缀。运行之后会产生两个新的文件叫做trace.blktrace.0和trace.blktrace.1。
blkparse -i trace
此命令是将trace文件作为blkparse的输入,blkparse的结果依然输出到屏幕
blkparse -i trace -o /root/trace.txt
此命令是将trace文件作为blkparse的输入,同时将分析结果输出到/root/trace.txt这个文件,以便人工进行更加深入的分析,因为

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
1020 0
CEGUI的事件系统分析
当客户向事件系统发送了一个事件之后,即是执行EventSet::fireEvent. EventSet::fireEvent首先执行了GlobalEventSet:: fireEvent,而后才执行其自身的一个方法EventSet::fireEvent_impl,该方法才是真正进行事件处理的方法,由该方法的后缀impl即可得知了.
1466 0
Linux中系统整体性能监控工具详细介绍
http://linux.chinaitlab.com/soft/524753.html
631 0
linux strace-跟踪进程的系统调用或是信号产生情况,lstrace-跟踪己丑年调用库函数情况,进程跟踪调试命令
本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程。 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。
1493 0
+关注
指尖的舞曲
目前在阿里巴巴搬砖
916
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载