防止调度程序在 FreeBSD 上使用某些内核

防止调度程序在 FreeBSD 上使用某些内核

似乎可以通过该cpuset(1)实用程序将进程固定到特定的核心。是否可以告诉调度程序避免使用所有其他进程(当前和未来的进程)的特定核心?

答案1

您可以阅读老的调度程序在FreeBSD 操作系统中的进程管理

新的”ULE调度器在 FreeBSD 5 中引入,但直到 7.1 才默认启用。你可以找到一篇描述它的论文这里。这将使您更好地理解调度程序的工作原理。

提示:在研究 CPU 关联性时,最好了解 CPU 拓扑:

  $ sysctl kern.sched.topology_spec

提示: 程序统计使用 -S 标志也有助于概述所使用的 cpuset:

 $ procstat -a -S

是的 - 您可以告诉调度程序通过管理“cpusets”来“避免”核心。查看手册页中的示例中央处理器组(1)。 CPUset 1 是默认设置。您只需修改该集合即可。

来自男人页:

修改默认情况下所有线程所在的 cpuset 仅包含前 4 个 CPU,其余空闲:

cpuset -l 0-3 -s 1

如果我们想象我们有 8 个 CPU,我们现在已将默认 cpuset 中的所有线程移至前 4 个。当我们修改默认集(默认进程在集 1 中启动)时,这将避免剩余的核心处于空闲状态。

您可以为剩余的 CPU 创建一个新的 cpuset(即编号 2),然后在需要使用它们时进行分配。

相关内容