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