Menu Close
Settings Close

Language and Page Formatting Options

第 32 章 影响 I/O 和文件系统性能的因素

存储和文件系统性能的适当设置高度依赖于存储目的。

I/O 和文件系统性能可能会受到以下任意因素的影响:

  • 数据写入或读取特征
  • 顺序或随机
  • buffered 或 Direct IO
  • 数据与底层 geometry 保持一致
  • 块大小
  • 文件系统大小
  • 日志大小和位置
  • 记录访问时间
  • 确保数据可靠性
  • 预抓取数据
  • 预分配磁盘空间
  • 文件碎片
  • 资源争用

32.1. 监控和诊断 I/O 和文件系统问题的工具

以下工具包括在 Red Hat Enterprise Linux 9 中用于监控系统性能并诊断与 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)
  • 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 按进程显示文件读取和写入。
    • ext4slowernfsslowerxfsslower 是显示文件系统操作比特定阈值慢的工具,默认值为 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 :每次在指定主设备或次要设备上更改属性时,均会打印可执行文件名称、进程标识符和属性。

其他资源