不幸的是,原始海报是正确的,而 SEB 并不完全正确。
在不同的操作系统上,处理调度优先级的工作方式可能不同。
例如,在 Windows 上,如果优先级较高的进程要求足够的 CPU,则它们能够排除优先级较低的进程。例如,在四核系统上,以“正常”优先级运行的 4 个 CPU 绑定进程(或线程)可以完全排除“低于正常”或“低”优先级的 CPU 绑定进程,但“低”优先级进程可以获得如果没有其他人想要它,则 100% 的 CPU。我喜欢这种行为,因为我可以以“低”优先级运行受 CPU 限制的进程,只要我的所有其他(交互式)进程以“正常”优先级运行,我什至不会注意到它的存在。(假设没有一个进程占用太多 RAM --- 那是另一回事)。
在我使用过的所有 Unix 系统(包括 Linux)上,唯一可用的“优先级”方案是“nice”值,它比 Windows 上的系统不那么苛刻:具有高“nice”值的进程可以获得 100% CPU 没有别的东西在使用 CPU,但它们会逐渐减少 CPU 并获得更高的友好度,但它们永远不会被完全排除在外。例如,根据我的经验,如果我有一个 4 核系统和 8 个 CPU 密集型进程,那么如果它们都具有相同的不错价值,那么每个进程几乎都能获得一个内核的 50%。但是,如果 4 是非 nice 并且 4 是 nice ,那么“nice'd” 将获得越来越少的 CPU 和越来越高的 nice ,但它们永远不会完全排除:即使在 19 的最大 nice 值(或在某些系统上为 20),它们仍将获得每个内核的至少 30-40%,而非 nice 的平均获得约 60-70%。这与 Windows 不同,但仍然合理。
另一方面,据我所知,在 MacOS 上“nice”绝对没有。我有一个 4 核的 Mac,如果我运行 8 个进程,其中一半是好的......他们每个人获得的 CPU 数量绝对没有区别。这是愚蠢的。MacOS 在这里完全搞砸了,即使他们有一个“不错”的程序,即使 OS 告诉我们不错的价值是什么(“ps -l”)。在我看来,他们应该诚实并完全删除功能,或者添加功能,以便“好”的价值实际上意味着什么。
注意:如果有人能指出我错了,我会欣喜若狂,并告诉我是否有办法真正降低我想在后台运行的进程的 CPU 优先级。