macOS 10.13.4 - `renice` 似乎没有效果

macOS 10.13.4 - `renice` 似乎没有效果

我正在尝试在 Mac 上测试该renice命令,但似乎没有效果。这就是我测试它的方式:

我有一个具有超线程功能的双核 CPU,因此我运行了 6 个实例node -e 'while(1){}',这些实例加起来就耗尽了我的 CPU。 (或者,while true; do echo running > /dev/null ; done如果没有节点,则运行。)

然后,我通过活动监视器应用程序或 获取节点进程之一的 PID pgrep,然后运行sudo renice -n 19 -p $PID​​。

通过查看活动监视器应用程序 或htop,所有节点进程的 CPU 使用率仍然相等:

在此输入图像描述

我的理解是,我的进程renice优先级较低,因此当有其他进程使用它时,不会使用大量的 CPU 时间。

我是否误解了什么renice?或者这是 macOS 中的一个错误?

答案1

运行一些基本测试我也在 10.13.4 上看到了这一点。

我编写了一个名为 Looper 的小型 C 程序,它在无限循环中执行一些基本数学运算:

#include <stdio.h>

int main(){
    unsigned long long prev = 0;
    unsigned long long current = 1;
    unsigned long long total = 0;

    while(1){
        total = current + prev;
        prev = current;
        current = total;
        printf("%llu\n", total);
    }
}

我在我的 FreeBSD 机器上运行了多个副本,并使用htop(1).使用renice(8)我可以看到 Nice 值正在增加,Priority 值正在增加,CPU 百分比正在减少——这是预期的行为。

我在 macOS 10.13.4 上运行相同的程序并重复该过程。虽然我可以看到 Nice 值在增加,但优先级值和 CPU 百分比保持一致。

我想知道这是否是一个错误,我之前没有理由如此仔细地观察 macOS 中的 Nice 值 - 该行为已经足够接近我的预期,因此我并没有倾向于调查。

如果您有开发者帐户,则值得向 Apple 报告此情况。

相关内容