如何仅使用 numactl 强制进程在单个线程上运行?

Oak*_*Oak 4 linux

我的本地机器有多个CPU,每个都有多个内核,每个都可以支持多线程。我有一个多线程进程,我想强制它只在单线程上运行。我明白numactrl可以这样做。

如何使用numactl强制进程仅在单个线程上运行?或者,是否有更简单的内置实用程序可以做到这一点?

Fra*_*mas 8

numactl --physcpubind=+1 /path/to/your/executable
Run Code Online (Sandbox Code Playgroud)

这应该在分配给您的芯片组的第二个核心/cpu 上运行您的进程(索引 1)。有关更多详细信息,请参阅手册页的示例部分:http : //linux.die.net/man/8/numactl

编辑:我应该指出,这意味着程序最多同时运行一个线程,但这并不意味着整个进程将只由一个线程组成。如果程序被编写为产生一个新线程,它会这样做,但它将与进程的其余部分在相同的核心/cpu 上执行。一个微小的区别,但可能很重要。