如何确保在给定的处理器/核心上只有一个进程正在运行?

如何确保在给定的处理器/核心上只有一个进程正在运行?

我想这样做是为了能够准确地加速测试我的过程,并且能够有控制的感觉。

也许我想为特殊程序保留一个处理器。也许我想编写自己的进程优化器。谁知道呢。我脑子里有无限的可能性。

这在任何操作系统中都可能实现吗?如果不是,为什么不能?如果我们可以划分内存,为什么我们不能对处理器进行这样的控制?

谢谢。

答案1

在 Linux 上,处理器集应该为此而努力。

答案2

从理论上讲,这是可行的。实现这一目标的最简单方法是使用虚拟化平台,该平台允许您将特定 CPU/核心分配给特定 VM。然后,您可以在给定 VM 上只运行您想要的进程(当然,操作系统开销最少)。

答案3

最简单的方法是设置给定进程的处理器亲和性,或者告诉操作系统允许该进程在哪些逻辑 CPU(核心)上运行。如果在 Windows 任务管理器中右键单击某个进程并选择Set Affinity...,您将看到一个如下所示的窗口:

在 Windows 中设置处理器亲和性

在基于 Linux 的系统中,您可以taskset使用实用程序做同样的事情或者通过在进程的条目中设置适当的 CPU 掩码标志/proc

遗憾的是,没有简单的方法可以从某个处理器中删除所有进程,或者在进程启动时自动设置特定的掩码——您需要一个脚本来监视系统上的新进程并设置所需的适当亲和力。

相关内容