第 9 章 RHEL for Real Time 中的关联性


在实时中,系统中的每个线程和中断源都有一个处理器关联性属性。操作系统调度程序使用此信息来确定在哪些 CPU 上运行哪些线程和中断。

实时的 Affinity 以位掩码表示,掩码中的每个位代表一个 CPU 内核。如果位设置为 1,则线程或中断可在该内核上运行;如果 0,线程或中断将排除在核心上运行。关联性位掩码的默认值为所有,这意味着线程或中断可以在系统的任意核心上运行。

默认情况下,进程可以在任何 CPU 上运行。但是,可以通过更改进程的关联性,指示进程在预先确定的 CPU 上运行。子进程继承其父进程的 CPU 相关性。

一些更典型的关联性设置包括:

  • 为所有系统进程保留一个 CPU 内核,并允许应用程序在内核的其余部分上运行。
  • 在同一 CPU 上允许线程应用程序和给定内核线程(如网络 softirq 或驱动程序线程)。
  • 对每个 CPU 上的生成者和消费者线程配对。
注意

关联性设置必须与程序结合使用,以获得良好的预期行为。

9.1. 处理器关联性

在实时中,进程默认可在任何 CPU 上运行。但是,您可以通过更改进程的关联性,将进程配置为在预先确定的 CPU 上运行。子进程继承其父进程的 CPU 相关性。

在系统上调优关联性的实时做法是确定运行应用程序所需的内核数,然后隔离这些内核。这可以通过 Tuna 工具或 shell 脚本修改 bitmask 值来实现。

taskset 命令可用于更改进程的关联性,并修改 /proc/ 文件系统条目会更改中断的关联性。使用带有 a -p or- pid 选项和 进程的进程标识符(PID)的 taskset 命令,检查进程的关联性。

-c or -cpu-list 选项显示内核的数字列表,而不是显示为位掩码。可以通过指定要绑定特定进程的 CPU 数量来设置关联性。例如,对于之前使用 CPU 0 或 CPU 1 的进程,您可以更改关联性,使其只能在 CPU 1 上运行。除了 taskset 命令外,您还可以使用 sched_setaffinity () 系统调用来设置处理器关联性。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat