blkparse 命令

发布于 2025-02-21 22:33:20 字数 5763 浏览 8 评论 0

语法

blkparse [选项]

命令选项

$ blkparse
Usage: blkparse 

-i <file>           | --input=<file>   必填选项,选定 blktrace 的输出文件
[ -a <action field> | --act-mask=<action field> ]  过滤查看哪种 IO 类型
[ -A <action mask>  | --set-mask=<action mask> ] 通过 16 位掩码设置过滤哪种磁盘行为
[ -b <traces>       | --batch=<traces> ]  标准输入读取
[ -d <file>         | --dump-binary=<file> ]  二进制输出文件
[ -D <dir>          | --input-directory=<dir> ] blktrace 的输出文件的目录
[ -f <format>       | --format=<format> ] 输出的格式,可以自定义输出哪些列
[ -F <spec>         | --format-spec=<spec> ]  格式规范,可以自定义
[ -h                | --hash-by-name ] 按名字进行 hash
[ -o <file>         | --output=<file> ]  输出文件
[ -O                | --no-text-output ] 无文本输出
[ -q                | --quiet ] 静默输出
[ -s                | --per-program-stats ] 每个程序的统计信息
[ -t                | --track-ios ] 将告诉您请求排队、调度和完成所需的时间
[ -w <time>         | --stopwatch=<time> ] 仅分析给定时间间隔之间的数据(以秒为单位),如果未给定“start”,blkparse 默认开始时间为 0
[ -M                | --no-msgs  不将消息输出到二进制文件
[ -v                | --verbose ] 详细输出
[ -V                | --version ] 输出版本

-a 过滤查看哪种 IO 类型
-A 通过 16 位掩码设置过滤哪种磁盘行为
-b 标准输入读取
-d 二进制输出文件
-D blktrace 的输出文件的目录
-f 输出的格式,可以自定义输出哪些列
-F 格式规范,可以自定义
-h 按进程名字排序而不是 pid
-i 必填选项,选定 blktrace 的输出文件,或者加 - 跟 blktrace 命令行输出
-o 输出文件。如果未给出,则输出为标准输出
-O 无文本输出
-q 静默输出
-s 显示每个程序的 io 统计信息
-t 将告诉您请求排队、调度和完成所需的时间
-w 仅分析给定时间间隔之间的数据(以秒为单位),如果未给定“start”,blkparse 默认开始时间为 0
-M 不将消息输出到二进制文件
-v 详细输出
-V 输出版本

识别以下跟踪:

TRACEACTIONS
C完成 之前发出的请求已经完成。输出将详细说明该请求的部门和大小,以及成功或失败的情况。
D发出 之前位于块层队列或 I/O 调度器中的请求已经发送给驱动程序。
I插入 请求正在发送到 I/O 调度器,添加到内部队列中,稍后由驱动程序服务。此时请求已完全形成。
Q排队 记录计划在指定位置排队 I/O。此时尚未有实际请求存在。
B弹回 附加到此 bio 的数据页无法通过硬件访问,必须弹回到较低的内存位置。这会导致 I/O 性能的大幅下降,因为数据必须在内核缓冲区之间复制/传输。通常通过使用更好的硬件(如更好的 I/O 控制器或具有 IOMMU 的平台)来解决此问题。
M后合并 之前插入的请求在此 I/O 开始的边界上,因此 I/O 调度器可以将它们合并在一起。
F前合并 与后合并相同,只是此 I/O 在之前插入的请求开始处结束。
M前或后合并 上述任一合并。
G获取请求 要发送任何类型的请求到块设备,首先必须分配一个请求容器结构。
S睡眠 没有可用的请求结构,因此发出请求的方必须等待一个请求结构被释放。
P插入 当 I/O 被排队到一个先前为空的块设备队列时,Linux 会插入该队列,以便在数据被需要之前预期将来会有更多 I/O 被添加。
U弹出 当设备中已经排队了一些请求数据时,开始将请求发送给驱动程序。如果超时周期已过(见下文)或队列中已添加了多个请求,这通常会自动发生。
T由于定时器弹出 如果排队的 I/O 在插入队列后没有被请求,Linux 将在定义的时间段后自动弹出它。
X拆分 在 RAID 或设备映射器设置中,传入的 I/O 可能跨越一个设备或内部区域,需要将其分割成更小的部分进行服务。这可能表示由于 RAID/dm 设备设置不当而导致的性能问题,但也可能只是正常的边界条件。
dm在这方面特别糟糕,通常会克隆大量的 I/O。
A重映射 对于堆叠设备,传入的 I/O 会被重新映射到其下的设备。重映射动作将详细说明到底重映射了什么到什么设备。

输出说明

blkparse 的输出可以针对特定用途进行定制,特别是为了简化输出解析,和/或将输出字段限制为用户希望看到的字段。可输出的字段数据包括:

aAction, a (small) string (1 or 2 characters) -- see table below for more details
cCPU id
CCommand
dRWBS field, a (small) string (1-3 characters) -- see section below for more details
D7-character string containing the major and minor numbers of the event's device (separated by a comma).
eError value
mMinor number of event's device.
MMajor number of event's device.
nNumber of blocks
NNumber of bytes
pProcess ID
PDisplay packet data -- series of hexadecimal values
sSequence numbers
SSector number
tTime stamp (nanoseconds)
TTime stamp (seconds)
uElapsed value in microseconds (-t command line option)
UPayload unsigned integer

注意,用户可以选择指定字段显示宽度,也可以选择左对齐说明符。它们位于字段说明符之前,后跟 % 字符,后跟可选的左对齐说明符(-),后跟宽度(十进制数),然后是字段。

因此,要在左对齐的 12 个字符字段中指定命令: -f "%-12C"

指定每列输出

%  blkparse -f "%a %c %C %d  %n %p  %s %S %t  \n" -i myvda

%a 输出列中每个字母的含义

AIO was remapped to a different device
BIO bounced
CIO completion
DIO issued to driver
FIO front merged with request on queue
GGet request
IIO inserted onto request queue
MIO back merged with request on queue
PPlug request
QIO handled by request queue code
SSleep request
TUnplug due to timeout
UUnplug request
XSplit
  • %d 输出列中每个字母的含义
  • 这是一个小字符串,至少包含一个字符( R 表示读取, W 表示写入, D 表示块丢弃操作),以及可选的 B (表示屏障操作)或 S (表示同步操作)。
默认输出
标准标题包含下列标题:
"%D %2c %8s %5T.%9t %5p %2a %3d"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

上一篇:

下一篇:

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

木落

暂无简介

文章
评论
27 人气
更多

推荐作者

闻呓

文章 0 评论 0

深府石板幽径

文章 0 评论 0

mabiao

文章 0 评论 0

枕花眠

文章 0 评论 0

qq_CrTt6n

文章 0 评论 0

红颜悴

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文