控制处理器使用

此部分描述如何控制处理器在多处理器系统上的使用。

在多处理器系统上,可以通过下面的方式控制处理器的使用:
  • 用户能够强制进程或者内核线程在特定的处理器上运行。

绑定进程和内核线程

用户可以强制他们的进程运行在给定的处理器上;此操作称为绑定。 系统管理员可以绑定任何进程。 从命令行使用 bindprocessor 命令控制绑定。

进程本身并未被绑定,而是其内核线程被绑定。 在内核线程被绑定之后,始终调度它们在所选的处理器上运行,否则它们稍后会被解除绑定。 当新的内核线程被创建时,它具有与其创建程序相同的绑定属性。

此情况适用于 fork 子例程创建的新进程中的初始线程; 新线程继承调用 fork 子例程的线程的绑定属性。 当调用 exec 子例程时,绑定属性保持不变。 在进程被绑定到处理器后,如果没有执行其他的绑定或者解除绑定操作,所有的子进程将被绑定到同一个处理器。

只能使用逻辑处理器数将进程绑定到已启用的处理器。 要列示可用的逻辑处理器数,请使用 bindprocessor -q 命令。 对于有四个已启用处理器的系统,此命令产生的输出与下面类似:
The available processors are: 0 1 2 3

也可以使用 bindprocessor 子例程在程序中控制绑定,这允许程序员绑定进程中的单个内核线程或所有内核线程。 程序员也能解除对进程中单个内核线程或者所有的内核线程的绑定。