5.2. 识别性能瓶颈


识别 VDO 性能中的瓶颈对于优化系统效率至关重要。您可以采取的一个主要步骤是确定瓶颈是否位于 CPU、内存或后备存储的速度上。在确定最慢的组件后,您可以制定策略来增强性能。

要确保低性能的根本原因不是硬件问题,请在存储堆栈中使用和不使用 VDO 运行测试。

VDO 中的 journalQ 线程是一个自然瓶颈,特别是在 VDO 卷处理写操作时。如果您注意到另一个线程类型比 journalQ 线程有更高的使用率,您可以通过添加更多那种类型的线程来修复此问题。

5.2.1. 使用 top 分析 VDO 性能

您可以使用 top 工具检查 VDO 线程的性能。

注意

top 等工具无法区分生产 CPU 周期和因缓存或内存延迟而卡住的周期。这些工具将缓存争用和低内存访问速度解释为实际工作。在节点间移动线程可能看起来减少了 CPU 使用率,同时增加了每秒的操作。

流程

  1. 显示单个线程:

    $ top -H
  2. f 键显示字段管理器。
  3. 使用 (↓) 键导航到 P = Last Used Cpu (SMP) 字段。
  4. 按空格栏选择 P = Last Used Cpu (SMP) 字段。
  5. q 键关闭字段管理器。top 工具现在显示单个核的 CPU 负载,并指示每个进程或线程最近使用的 CPU。您可以通过按 1 切换到每个 CPU 统计信息。

其他资源

5.2.2. top 结果的解释

在分析 VDO 线程的性能时,请使用下表来解释 top 工具的结果。

表 5.1. 解释 top 结果
描述建议

线程或 CPU 使用率超过 70%

线程或 CPU 过载。高使用率可以导致 VDO 线程调度到没有实际工作的 CPU 上。这可能因为过多的硬件中断、内存冲突或资源竞争而发生。

增加运行此核的线程类型的数量。

%id%wa

核正在积极处理任务。

不需要任何操作。

%hi

核正在执行标准的处理工作。

添加更多核来提高性能。避免 NUMA 冲突。

  • %hi[a]
  • 只有一个线程被分配给核
  • %id 为零
  • %wa 值为零

核被过度使用。

将内核线程和设备中断处理重新分配给不同的核。

  • kvdo:bioQ 线程通常处于 D 状态。

VDO 始终使存储系统忙于 I/O 请求。 [b]

如果 CPU 使用率非常低,则减少 I/O 提交线程的数量。

kvdo:bioQ 线程通常处于 S 状态。

VDO 有比它需要的多的 kvdo:bioQ 线程。

减少 kvdo:bioQ 线程的数量。

每个 I/O 请求的高 CPU 使用率。

每个 I/O 请求的 CPU 使用率随着线程的增加而增加。

检查 CPU、内存或锁争用。

[a] 超过几个百分点
[b] 如果存储系统可以处理多个请求,或者请求处理效率高,则这是很好的。

5.2.3. 使用 perf 分析 VDO 性能

您可以使用 perf 工具检查 VDO 的 CPU 性能。

先决条件

  • perf 软件包已安装。

流程

  1. 显示性能配置文件:

    # perf top
  2. 通过解释 perf 结果来分析 CPU 性能:

    表 5.2. 解释 perf 结果
    描述建议

    kvdo:bioQ 线程花费大量需要 spin 锁的周期

    VDO 下的设备驱动程序中可能会出现太多争用

    减少 kvdo:bioQ 线程的数量

    高 CPU 使用率

    NUMA 节点之间的争用。

    如果处理器支持,请检查 stalled-cycles-backendcache-missesnode-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. 以 1 秒的间隔显示磁盘 I/O 统计信息:

    $ sar -d 1
  2. 通过解释 sar 结果分析 VDO 性能:

    表 5.3. 解释 sar 结果
    描述建议
    • 底层存储设备的 %util 值在 100% 下为良好。
    • VDO 100% 忙碌。
    • bioQ 线程使用大量 CPU 时间。

    对于快速设备,VDO 有太少的 bioQ 线程。

    添加更多 bioQ 线程。

    请注意,当您由于 spin 锁争用而添加 bioQ 线程时,某些存储驱动程序可能会减慢。

其他资源

  • 您系统上的 sar (1) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.