如何将一个 CPU 分配给一个进程,以便当具有该 PID 的进程在该 CPU 上运行时,其他任何进程都不能使用该 CPU?
答案1
从man taskset
:
任务集用于根据给定的 PID 设置或检索正在运行的进程的 CPU 亲和性,或启动具有给定 CPU 亲和性的新命令。CPU 亲和性是一种调度程序属性,它将进程“绑定”到系统上的一组给定 CPU。Linux 调度程序将遵守给定的 CPU 亲和性,并且进程不会在任何其他 CPU 上运行。请注意,Linux 调度程序还支持自然 CPU 亲和性:出于性能原因,调度程序会尝试尽可能长时间地将进程保持在同一个 CPU 上。因此,强制特定的 CPU 亲和性仅在某些应用程序中有用。
虽然这可以保证进程只在某个 CPU(或一组 CPU)上运行,但亲和性设置并不能保证没有其他进程在这些 CPU 上运行。为了实现这一点,我认为你可以更改友善(或者不错的水平) 到其最低值 (1) - 请参阅man nice
和man renice
了解详情。
设置最低的优先级别将保证进程在运行时不会将 CPU 交给另一个任务 - 但是,这种保证并不是 100% 的(例如,如果系统中有另一个具有相同优先级的进程,则两个进程都可能被安排共享 CPU)