似乎可以通过该cpuset(1)
实用程序将进程固定到特定的内核。可以告诉调度程序在所有其他进程(当前进程和未来进程)中都避免使用该特定内核吗?
您可以在FreeBSD操作系统的“进程管理”中阅读旧的调度程序。
FreeBSD 5中引入了“新” ULE调度程序,但是直到7.1才默认启用。您可以在此处找到描述它的论文。这样可以很好地了解调度程序的工作方式。
提示:在使用CPU亲和性时,最好了解CPU拓扑:
$ sysctl kern.sched.topology_spec
提示: 带有-S标志的procstat也有助于概述所使用的cpuset:
$ procstat -a -S
是的-您可以通过管理“ cpusets”来告诉调度程序“避免”使用内核。看一下手册页中cpuset(1)的示例。Cpuset 1是默认设置。您只需修改该集合。
从手册页:
修改cpuset,默认情况下所有线程都在其中以仅包含前4个CPU,其余的保持空闲:
cpuset -l 0-3 -s 1
如果我们想象有8个CPU,我们现在将默认cpuset中的所有线程都移到了第4个。当我们修改默认集(通过默认进程在set 1中启动)时,这将避免剩余的内核处于空闲状态。
您可以为其余的CPU创建一个新的cpuset(即编号2),然后在要使用它们时分配它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句