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


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

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

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

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

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

关联性设置必须与 程序一起设计,才能实现良好的行为。

7.1. 处理器关联性

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

在系统中调优操作的实际情况是确定运行应用程序所需的内核数量,然后隔离这些内核。这可以通过 Tuna 工具或 shell 脚本修改位掩码值来实现。

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

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat