5.2. 识别性能瓶颈
识别 VDO 性能中的瓶颈对于优化系统效率至关重要。您可以采取的一个主要步骤是确定瓶颈是否存在于 CPU、内存或后备存储的速度中。在找出最慢的组件后,您可以开发策略来增强性能。
为确保低性能的根本原因不是硬件问题,请在存储堆栈中运行带有和不带有 VDO 的测试。
VDO 中的 journalQ
线程是一个自然瓶颈,特别是在 VDO 卷处理写操作时。请注意,另一个线程类型有比 journalQ
线程更高的使用率,您可以通过添加更多此类型的线程来修复这个问题。
5.2.1. 使用 top 分析 VDO 性能 复制链接链接已复制到粘贴板!
您可以使用 top
工具检查 VDO 线程的性能。
top
等工具无法区分生产 CPU 周期和因缓存或内存延迟而停滞的周期。这些工具将缓存争用和内存访问解释为实际工作。在节点间移动线程可能会减少 CPU 使用率,同时增加每秒的操作。
流程
显示单个线程:
top -H
$ top -H
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 按 f 键显示字段管理器。
-
使用 (↓) 键导航到
P = Last Used Cpu (SMP)
字段。 -
按空格选择
P = Last Used Cpu (SMP)
字段。 -
按 q 键关闭字段管理器。
top
工具现在显示单个核的 CPU 负载,并指示每个进程或线程最近使用了哪个 CPU。您可以通过按 1 切换到每个 CPU 统计信息。
5.2.2. top 结果的解释 复制链接链接已复制到粘贴板!
在分析 VDO 线程的性能时,请使用下表来解释 top
工具的结果。
值 | 描述 | 建议 |
---|---|---|
线程或 CPU 使用率超过 70% | 线程或 CPU 过载。高使用率可能导致 VDO 线程调度到没有实际工作的 CPU 上。这可能是由于大量的硬件中断、内存冲突或资源竞争而造成的。 | 增加运行此核的线程类型的数量。 |
低 | 核正在积极处理任务。 | 不需要任何操作。 |
低 | 核正在执行标准的处理工作。 | 添加更多的核来提高性能。避免 NUMA 冲突。 |
| 核被过度使用。 | 将内核线程和设备中断处理重新分配到不同的核。 |
| VDO 始终使存储系统忙于 I/O 请求。如果存储系统可以处理多个请求,或者请求处理高效,则这非常有用。 | 如果 CPU 使用率非常低,则减少 I/O 提交线程的数量。 |
|
VDO 有比其需要的更多的 |
减少 |
每个 I/O 请求的高 CPU 使用率。 | 每个 I/O 请求的 CPU 使用率随着线程的增加而增加。 | 检查 CPU、内存或锁争用。 |
5.2.3. 使用 perf 分析 VDO 性能 复制链接链接已复制到粘贴板!
您可以使用 perf
工具检查 VDO 的 CPU 性能。
先决条件
-
perf
软件包已安装。
流程
显示性能配置文件:
perf top
# perf top
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过解释
perf
结果来分析 CPU 性能:Expand 表 5.2. 解释 perf 结果 值 描述 建议 vdo:bioQ
线程花费大量的周期来获取自旋锁在 VDO 下的设备驱动程序中可能会发生太多竞争
减少
vdo:bioQ
线程的数量高 CPU 使用率
NUMA 节点之间的争用。
如果处理器支持,请检查
stalled-cycles-backend
、cache-misses
和node-load-misses
等计数器。高丢失率可能导致停滞,类似于其他工具中的高 CPU 使用率,表示可能的争用。为 VDO 内核线程实现 CPU 亲和性或为中断处理程序实现 IRQ 亲和性,来将处理工作限制到单个节点。
5.2.4. 使用 sar 分析 VDO 性能 复制链接链接已复制到粘贴板!
您可以使用 sar
工具创建有关 VDO 性能的定期报告。
并非所有块设备驱动程序都可以提供 sar
工具所需的数据。例如:MD RAID 等设备不报告 %util
值。
先决条件
安装
sysstat
工具:dnf install sysstat
# dnf install sysstat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
以 1 秒的间隔显示磁盘 I/O 统计信息:
sar -d 1
$ sar -d 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过解释
sar
结果分析 VDO 性能:Expand 表 5.3. 解释 sar 结果 值 描述 建议 -
底层存储设备的
%util
值远低于 100% 。 - VDO 处于 100% 繁忙状态。
-
bioQ
线程在使用大量 CPU 时间。
对于快速设备,VDO 有太少的
bioQ
线程。添加更多的
bioQ
线程。请注意,当由于自旋锁争用而添加
bioQ
线程时,某些存储驱动程序可能会减慢。-
底层存储设备的