第 33 章 影响 I/O 和文件系统性能的因素
存储和文件系统性能的适当设置高度依赖于存储目的。
I/O 和文件系统性能可能会受到以下任意因素的影响:
- 数据写入或读取特征
- 顺序或随机
- buffered 或 Direct IO
- 数据与底层 geometry 保持一致
- 块大小
- 文件系统大小
- 日志大小和位置
- 记录访问时间
- 确保数据可靠性
- 预抓取数据
- 预分配磁盘空间
- 文件碎片
- 资源争用
33.1. 监控和诊断 I/O 和文件系统问题的工具
以下工具包括在 Red Hat Enterprise Linux 8 中用于监控系统性能并诊断与 I/O、文件系统及其配置相关的性能问题:
-
vmstat
工具报告整个系统的进程、内存、分页、块 I/O、中断和 CPU 活动。它可帮助管理员确定 I/O 子系统是否负责任何性能问题。如果使用vmstat
进行分析显示,I/O 子系统负责降低性能,管理员可以使用iostat
工具来确定负责的 I/O 设备。 -
iostat
报告您系统中的 I/O 设备负载。它由sysstat
软件包提供。 -
blktrace
提供有关 I/O 子系统花费时间的详细信息。比较实用程序blkparse
读取来自blktrace
的原始输出,并生成由blktrace
记录的输入和输出操作的人类可读摘要。 btt
分析blktrace
输出并显示 I/O 堆栈各个区域所花费的时间,从而更轻松地发现 I/O 子系统中的瓶颈。该实用程序作为blktrace
软件包的一部分提供。由blktrace
机制跟踪并由btt
分析的一些重要事件有:-
I/O 事件队列 (
Q
) -
I/O 的发送至驱动程序事件 (
D
) -
完成 I/O 事件 (
C
)
-
I/O 事件队列 (
-
iowatcher
可以使用blktrace
输出来随着时间的推移图形 I/O。它关注磁盘 I/O 的逻辑块地址 (LBA) 、每秒吞吐量每秒的吞吐量、每秒寻道数数、I/O 操作数。这有助于识别何时达到设备的操作每秒限值。 BPF Compiler Collection(BCC)是一个库,可帮助创建扩展的 Berkeley Packet Filter(
eBPF
)程序。eBPF
程序在事件中触发,如磁盘 I/O、TCP 连接和进程创建。BCC 工具安装在/usr/share/bcc/tools/
目录中。以下bcc-tools
可帮助分析性能:-
biolatency
总结了块设备 I/O(磁盘 I/O)中延迟的问题。这允许研究发行版,包括用于设备缓存命中以及缓存未命中的两种模式,以及延迟延迟。 -
biosnoop
是基本的块 I/O 追踪工具,用于显示每个 I/O 事件以及发出的进程 ID,以及 I/O 延迟。使用这个工具,您可以调查磁盘 I/O 性能问题。 -
biotop
用于内核中的块 i/o 操作。 -
filelife
工具跟踪stat()
系统调用。 -
fileslower
跟踪文件同步的读写速度比较慢。 -
filetop
按进程显示文件读取和写入。 ext4slower
、nfsslower
和xfsslower
是显示文件系统操作比特定阈值慢的工具,默认值为10ms
。如需更多信息,请参阅使用 BPF Compiler Collection 分析系统性能。
-
-
bpftace
是用于分析性能问题的eBPF
追踪语言。它还提供类似 BCC 的 trace 工具,用于调查 I/O 性能问题。 以下
SystemTap
脚本在诊断存储或文件系统性能问题可能很有用:-
disktop.stp
:每 5 秒检查一次读取或写入磁盘的状态,并在该期间输出前 10 个条目。 -
iotime.stp
: 显示读和写操作上花费的时间长度,以及读取和写入的字节数。 -
traceio.stp
:根据所观察到的累积 I/O 流量打印前十大可执行文件。 -
traceio2.stp
: 将可执行名称和进程标识符作为读写操作发生。 -
Inodewatch.stp
:每次对指定主设备或次要设备中的指定内节点进行读或写时,均会打印可执行文件名称和进程标识符。 -
inodewatch2.stp
:每次在指定主设备或次要设备上更改属性时,均会打印可执行文件名称、进程标识符和属性。
-
其他资源
-
vmstat (8) 、
iostat (1) 、
blktrace (8) 、
blkparse (1) 、
btt (1) 、
bpftrace
和iowatcher (1)
man page - 使用 BPF Compiler Collection 分析系统性能