知道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) |