第 27 章 使用 tuned-profiles-realtime 隔离 CPU
要为应用程序线程提供尽可能的执行时间,您可以隔离 CPU。因此,从 CPU 中删除尽可能多的额外任务。隔离 CPU 通常涉及:
- 删除所有用户空间线程。
- 删除任何未绑定内核线程(绑定内核线程与特定的 CPU 绑定,且无法移动)。
-
通过修改系统中每个 Interrupt Request(IRQ)的
/proc/irq/
属性来移除中断。N
/smp_affinity
本节演示了如何使用 tuned-profiles-realtime
软件包的 isolated_cores=cpulist
配置选项自动进行这些操作。
先决条件
- 管理员特权。
27.1. 选择要隔离的 CPU
选择 CPU 进行隔离需要仔细考虑系统的 CPU 拓扑。不同的用例可能需要不同的配置:
- 如果您的应用程序有一个多线程应用程序,其中线程需要通过共享缓存相互通信,则可能需要在同一 NUMA 节点或物理套接字中保存。
- 如果您运行多个不相关的实时应用程序,可将 CPU 除以 NUMA 节点或套接字进行隔离。
hwloc
软件包提供有助于获取 CPU 信息的实用程序,包括 lstopo-no-graphics
和 numactl
。
先决条件
-
必须安装
hwloc
软件包。
流程
查看物理软件包中可用 CPU 的布局:
# lstopo-no-graphics --no-io --no-legend --of txt
图 27.1. 使用 lstopo-no-graphics 显示 CPU 布局
此命令对多线程应用程序很有用,因为它显示可用的内核和套接字数量以及 NUMA 节点的逻辑距离。
此外,
hwloc-gui
软件包提供lstopo
实用程序,它会生成图形输出。查看有关 CPU 的更多信息,如节点之间的距离:
# numactl --hardware available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 node 0 size: 16159 MB node 0 free: 6323 MB node 1 cpus: 4 5 6 7 node 1 size: 16384 MB node 1 free: 10289 MB node distances: node 0 1 0: 10 21 1: 21 10
其他资源
- hwloc(7) man page