gpt4 book ai didi

macos - "nice"命令在 macOS 上不起作用

转载 作者:行者123 更新时间:2023-12-02 03:02:41 24 4
gpt4 key购买 nike

我正在尝试使用 nice 运行一个使用所有处理器时间的特定进程:

sudo nice -n 20 someProcess

不幸的是,这并没有改变任何东西。在 Activity Monitor 中,它仍然固定在 99% 的 CPU 上。

我怀疑这可能是因为没有太多事情发生,所以它完全能够使用那么多时间,所以我尝试了压力测试:

是 >/dev/null & 是 >/dev/null & 是 >/dev/null & 是 >/dev/null &

即使使用 nice -n 20,有问题的进程也使用了 99% 的 CPU,将四个"is"进程从 99% 降低到每个进程的 60% 左右。

我应该注意,我也尝试过类似地将“nice”与一个“yes”进程一起使用,并发现它根本没有区别……“yes”进程使用的处理器时间与所有其他进程一样多。

这是怎么回事? “好”坏了吗?这是在 macOS 10.12.5 上完成的。

最佳答案

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

关于macos - "nice"命令在 macOS 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com