GitHub ASM code: .endm
Email: BuddyZhang1 buddy.zhang@aliyun.com
目录
工具原理
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 工作流程
本教程安装基于 BiscuitOS 制作的 Linux 5.0 系统,其他平台参照安装。如需要安装基于 BiscuitOS
的 Linux 5.0 开发环境,请参考下面文章:
Linux 5.0 arm32 开发环境搭建教程
获取源码
首先从 blktrace 的站点获取相应的源码,源码地址如下:
blktrack: http://brick.kernel.dk/snaps/
从 blktrack 站点上根据需求下载一个版本,例如本教程中选择下载 “blktrace-1.2.0.tar.gz”。
将下载好的源码压缩包放到 BiscuitOS 项目的 dl 目录下,例如使用如下命令:
解压源码
由于本教程是基于 BiscuitOS 制作的 Linux 5.0 开发环境,因此参考如下命令进行操作:
编译源码
由于只需要 blktrace 和 blkparse 两个工具,开发者可以参考一下命令进行编译:
这里由于工具运行在 arm32 平台上,所以需要使用交叉编译工具,开发者根据实际情况进行调整。
工具安装
由于本教程是基于 BiscuitOS 制作的 Linux 5.0 开发环境,因此参考如下命令进行行安装:
更新 rootfs
接着更新 rootfs,并在 BiscuitOS 中使用这个工具,开发者根据实际情况进行更新,BiscuitOS
可以参考如下命令:
运行工具
附录
The GNU Assembler
Debugging on ARM Boot Stage
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
搭建高效的 Linux 开发环境
赞赏一下吧 🙂