Linux下block层的监控工具blktrace

blktrace是块层IO路径监控和分析工具,使用它可以深入了解IO通路,对监控,性能调优都有很大帮助。
1. 架构
blktrace分内核空间和用户空间两部分实现,内核空间里面主要是给块层IO路径上的关键点添加tracepoint,然后借助于relayfs系统特性将收集到的数据写到buffer去,再从用户空间去收集。
用户空间还实现了几个小工具,blkparse,btt,用来分析收集到的数据.

2. 安装
内核空间部分的代码已经集成到主线代码里面去了,可以看看内核代码 block/blktrace.c文件是不是存在,编译的时候把对应的这个trace选项选择上就可以了。
用户空间需要的工具,在ubuntu9.04上直接
sudo apt-get install blktrace就可以了。安装完成后在/usr/share/doc/blktrace里面有几个pdf文档写的很详细,仔细看看。

3. 实现
主要是看看内核部分里面的代码是怎么实现的
1). 大部分实现代码都在blktrace文件里面。利用tracepoint的特性,注册了一些trace关键点,可以看看Documentation/tracepoint.txt文件。
2). 交互机制利用了relayfs特性,看看Documentation/filesystems/relay.txt.

4. 文档
1). /usr/share/doc/blktrace/btt.pdf,blktrace.pdf是用户手册
2).
http://www.gelato.org/pdf/apr2006/gelato_ICE06apr_blktrace_brunelle_hp.pdf
写的很好的一个介绍pdf。
3).
http://elinux.org/Kernel_Trace_Systems

5. 一些状态的对应关系
Act Description                                 SetPosition
A  IO was remapped to a different device   blk-core.c/trace_block_remap
B  IO bounced                              bounce.c/trace_block_bio_bounce
C  IO completion                           blk-core.c/trace_block_rq_complete
D  IO issued to driver                     elevator.c/trace_block_rq_issue
F  IO front merged with request on queue   blk-core.c/trace_block_bio_frontmerge
G  Get request                             blk-core.c/trace_block_getrq
I  IO inserted onto request queue          elevator.c/trace_block_rq_insert
M  IO back merged with request on queue    blk-core.c/trace_block_bio_backmerge
P  Plug request                            blk-core.c/trace_block_plug
Q  IO handled by request queue code        blk-core.c/trace_block_bio_queue
S  Sleep request                           blk-core.c/trace_block_sleeprq
T  Unplug due to timeout                   blk-core.c/trace_block_unplug_timer
U  Unplug request                          blk-core.c/trace_block_unplug_io
X  Split                                   bio.c/trace_block_split
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值