如何为一个进程分配一个CPU?

noo*_*oob 3 process cpu

如何将一个 CPU 分配给一个进程,以便在具有该 PID 的进程在该 CPU 上运行时其他进程不能使用该 CPU?

Ser*_*gey 5

来自man taskset

taskset用于设置或检索正在运行的进程的 CPU 亲和性,或者使用给定的 CPU 亲和性启动新的命令。CPU 亲和性是一个调度程序属性,它将进程“绑定”到系统上的一组给定 CPU。Linux 调度程序将遵守给定的 CPU 关联性,并且该进程不会在任何其他 CPU 上运行。请注意,Linux 调度程序还支持自然 CPU 亲和性:出于性能原因,调度程序会尽可能将进程保持在同一 CPU 上。因此,强制特定的 CPU 关联仅在某些应用程序中有用。

虽然这保证了进程将只在某个 CPU(或一组 CPU)上运行,但关联性设置并不能保证没有其他进程将在这些 CPU 上运行。为了实现这一点,我认为您可以将过程的niceness(或nice level)更改为其最低值 (1) -有关详细信息,请参阅man niceman renice

设置最低的 nice 级别将保证该进程在运行时不会将 CPU 交给另一个任务——但是,保证不是 100%(例如,如果系统中有另一个具有相同优先级的进程,则这两个进程可能都是计划共享 CPU)