![是否可以在我的 Linux 机器上运行仅使用 16 个 CPU 中的 2 个 CPU 的进程](https://linux22.com/image/108830/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%88%91%E7%9A%84%20Linux%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E8%BF%90%E8%A1%8C%E4%BB%85%E4%BD%BF%E7%94%A8%2016%20%E4%B8%AA%20CPU%20%E4%B8%AD%E7%9A%84%202%20%E4%B8%AA%20CPU%20%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
是否可以在我的 Linux 机器上运行仅使用 16 个 CPU 中的 2 个 CPU 的进程
我们有红帽机器版本 6,我们有 16 个 CPU
但是因为许可证需要花钱,如果我们限制脚本只能在 2 个 CPU 上运行,那么我们可以省钱
答案1
您可以将进程限制为在特定(一组)核心上运行:taskset
。
taskset 3 mycommand
(3
是一个位掩码,意味着mycommand
只能在内核 0 和 1 上运行。)
但是,这不会改变进程认为您拥有的 CPU 数量。它只是向内核发出的一条指令,不要在位掩码中列出的 CPU 之外的 CPU 上调度进程。因此,如果程序根据 CPU 数量进行许可证检查,这可能不会有帮助。
一个肯定可行的解决方案是在只有 2 个(虚拟)核心的虚拟机中运行该进程。然而,这可能会降低性能。
C组提供了一种限制进程可以使用的资源的中间方法。我不知道它是否可以有效地从进程中隐藏CPU,或者它是否只是像taskset
.