Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299943
  • 博文数量: 40
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-17 14:08
文章分类

全部博文(40)

文章存档

2011年(1)

2010年(10)

2009年(29)

我的朋友

分类: LINUX

2009-06-02 14:00:11

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).  写的很好的一个介绍pdf。
3).
 
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
阅读(5315) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~