第 25 章 使用 tuned-profiles-real-time 隔离 CPU
要为应用程序线程提供最可能执行时间,您可以隔离 CPU。因此,尽可能从 CPU 中删除尽可能多的任务。隔离 CPU 通常涉及:
- 删除所有用户空间线程。
- 删除所有 unbound 内核线程。与内核相关的绑定线程链接到特定 CPU,且无法移动。
-
通过修改系统中每个中断请求(IRQ)编号
N
的/proc/irq/N/smp_affinity
属性来删除中断。
通过使用 tuned-profiles-realtime
软件包的 isolated_cores=cpulist
配置选项,您可以自动执行操作来隔离 CPU。
先决条件
- 有管理员特权。
25.1. 选择要隔离的 CPU 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
选择要隔离的 CPU 需要仔细考虑系统的 CPU 拓扑。不同的用例需要不同的配置:
- 如果您有一个多线程应用程序,线程需要通过共享缓存相互通信,则需要在同一 NUMA 节点或物理套接字上保留它们。
- 如果您运行多个不相关的实时应用程序,请将 CPU 与 NUMA 节点或套接字分离。
hwloc
软件包提供用于获取 CPU 信息的工具,包括 lstopo-no-graphics
和 numactl
。
先决条件
-
已安装
hwloc
软件包。
流程
查看物理软件包中可用 CPU 的布局:
lstopo-no-graphics --no-io --no-legend --of txt
# lstopo-no-graphics --no-io --no-legend --of txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 图 25.1. 使用 lstopo-no-graphics 显示 CPU 布局
此命令对多线程应用程序很有用,因为它显示有多少内核和套接字可用,以及 NUMA 节点的逻辑距离。
另外,
hwloc-gui
软件包提供了lstopo
工具,它生成图形输出。查看 CPU 的更多信息,如节点之间的距离:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow