处理器绑定
通过使用 bindprocessor 系统调用可将应用程序绑定至处理器。 该系统调用假定处理器编号方案从零 (0) 开始到 N-1 为止,其中 N 为联机 CPU 的数量。
N 通过读取 _system_configuration.ncpus 系统变量由程序来确定。 添加和除去处理器时,此变量将使用 动态逻辑分区递增和递减。
请注意,该编号方案不包括孔。 处理器始终被添加到第 N 个位置并从第 N-1 个位置被除去。 bindprocessor 系统调用所使用的编号方案不能被用来绑定到特定的逻辑处理器,因为任何处理器都可能被除去且不会在编号方案中被反映出来,因为总是释放第 N-1 个 CPU。 由于此原因,由 bindprocessor 系统调用使用的标识被称为绑定 CPU 标识。
对 _system_configuration.ncpus 系统变量的更改有以下隐含操作:
- 如果最后的处理器是在应用程序读取了该变量后被除去的,应用程序必须已准备好从 bindprocessor 系统调用接收错误。 此错误情况首先由 动态处理器释放 (缺陷处理器的运行时释放) 引入。
- 设计用于随处理器的数量而伸缩的应用程序必须在处理器的数量更改时重新读取 _system_configuration.ncpus 系统变量。
应用程序还可以使用名为 软件分区的 工作负载管理器 (WLM) 功能部件来绑定到一组处理器。 它假定基于逻辑 CPU 标识的编号方案也是从零 (0) 开始,到 N-1 为止。 然而,此例中的 N 为分区可在架构上支持的最大处理器数量。 该编号方案同时反映了联机和脱机的处理器。
因此,注意所使用的绑定类型很重要,以便在除去处理器时可以应用正确的补救方法。 bindprocessor 命令可被用于确定联机处理器的数量。 ps 命令也可被用于标识被绑定至最后的那个联机处理器的进程和线程。 在目标被标识后,可再次使用 bindprocessor 命令以定义新的连接。
与 WLM 有关的相关性可通过标识导致问题的特定软件分区来解析。 要解析该相关性,请执行下列操作:
注: 系统会调度围绕脱机或暂挂脱机处理器的绑定作业,因此如果特定软件分区具有另一个联机 CPU ,那么不需要进行任何更改。
- 使用 lsrset 命令以查看由 WLM 使用的软件分区组。
- 通过使用 lsclass 命令来标识这些软件分区。
- 通过使用 chclass 命令来标识使用这些软件分区的类组。
- 使用 wlmctrl 命令对系统重新分类。