Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862359
  • 博文数量: 581
  • 博客积分: 7803
  • 博客等级: 少将
  • 技术积分: 3653
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-27 08:21
文章分类

全部博文(581)

文章存档

2013年(7)

2012年(414)

2011年(159)

2009年(1)

分类:

2012-02-25 18:11:51

原文地址:blktrace 学习笔记 作者:ChaoYe89

  知道blktrace纯属偶然,自己也是刚刚认识不久,不敢说了解,在此仅仅把自己所了解的东西写出来,做个参考罢了。
    先介绍一个blktrace吧,由于是援引文档,还是直接贴出来比较好:
blktrace is a block layer IO tracing mechanism which provides detailed informa-tion about request queue operations up to user space.
    注意下是Block Layer IO,了解存储和文件系统的应该明白了。不明白的,问Google老师吧!闲话就不多少了,开始安装blktrace吧!我使用的是Fedora 13,Yum跟Rpm包,都会提供给大家,至于其他的发行版,我只能提供源码了。
yum install -y blktrace.i686
    Yum安装的是blktrace-1.0.1-4.fc13.i686,我查了一下Upstream,最新的是blktrace-1.0.1。没有比较过Fedora仓库和Upstream的区别。
    也可以通过git,话说现在采用git的越来越多了!
[derek@Derek-Laptop Source]$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git blktrace
Cloning into blktrace...
remote: Counting objects: 2801, done.
remote: Compressing objects: 100% (1725/1725), done.
remote: Total 2801 (delta 1865), reused 1721 (delta 1074)
Receiving objects: 100% (2801/2801), 1.15 MiB | 104 KiB/s, done.
Resolving deltas: 100% (1865/1865), done.
[derek@Derek-Laptop Source]$ cd blktrace/
[derek@Derek-Laptop blktrace]$ git checkout
    剩下的就是自己手动编译了!
    安装完成后,就可以试试blktrace跟blkparse这二个命令了^_^
    1) 开启一个终端,以debugfs模式挂载
[root@Derek-Laptop derek]# mount -t debugfs debugfs /sys/kernel/debug/
    debugfs的挂载,我自己也不是很清除,具体的信息还是man mount比较妥当。默认的debugfs是挂载到/sys/kernel/debug/的,当然了,你也可以手动指定另外一个挂载点,使用-r参数即可。
    2) 开始trace,例如我需要跟踪/dev/sdb的IO,那么这条命令就可以了,需要注意的是,默认情况下信息量会非常非常大!
[root@Derek-Laptop derek]# blktrace /dev/sda -o trace
    3) 开始trace之后,为了测试用,开启另外一个终端,我做了一个dd,命令如下:
[root@Derek-Laptop derek]# dd if=/dev/zero of=/dev/sdb
^C记录了290729+0 的读入
记录了290729+0 的写出
148853248字节(149 MB)已复制,6.06593 秒,24.5 MB/秒
    这个时候,我Ctrl+C了blktrace,输出保存为trace文件。
    4) 开始分析。分析所使用的工具为blkparse,命令如下:
[root@Derek-Laptop derek]# blkparse trace.blktrace.0 > parse
    我把输出保存成了文件,方便看。当然,你也可以随便怎么操作!可能会有的同学发现,当前目录下有好几个trace.blktrace.X,那是你的CPU关系。我有二个:
[root@Derek-Laptop derek]# ls
Books      Downloads  Pictures  Source     Test              Videos
Desktop    Music      Public    Study      trace.blktrace.0
Documents  parse      rpmbuild  Templates  trace.blktrace.1
[root@Derek-Laptop derek]# lscpu
Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                2
Thread(s) per core:    1
Core(s) per socket:    2
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              6
CPU MHz:               1000.000
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
    输出为文件后就可以查看分析了,选择你喜欢的文本编辑器,欢迎命令行控^_^因为刚刚我做的是dd,所以直接搜索dd相关的就可以了:
......
  8,0    1        1     0.310016063  4885  Q   R 213680 + 8 [dd]
  8,0    1        0     0.310034152     0  m   N cfq4885 alloced
  8,0    1        2     0.310035898  4885  G   R 213680 + 8 [dd]
  8,0    1        3     0.310040857  4885  I   R 213680 + 8 [dd]
  8,0    1        0     0.310043162     0  m   N cfq4885 insert_request
  8,0    1        0     0.310045117     0  m   N cfq4885 add_to_rr
  8,0    1        4     0.310050984  4885  U   N [dd] 43
......
    于是,发现了这几条。213680表示磁盘的Sector,其他的大家仔细看看文档吧,我也没弄的太明白。在文件的最后,有一些信息,可以看看:
Throughput (R/W): 0KiB/s / 38,461KiB/s
Events (trace): 4,397 entries
Skips: 0 forward (0 -   0.0%)
Input file trace.blktrace.0 added
Input file trace.blktrace.1 added
    这就是我这二天学习到的东西了,有新的资料会跟大家分享的:-)

Tips:
照往常一样,一些文档提供给大家:
1) 如果你是Fedora用户,那么这条命令会帮你发现众多文档:
ls /usr/share/doc/blktrace-1.0.1/
2) blktrace.pdf 这个是最新的文档,讲解的非常详细
3) 的Upstream站点
阅读(1885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~