我正在尝试renice
在我的 Mac 上测试该命令,它似乎没有任何效果。这就是我测试它的方式:
我有一个带超线程的双核 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 中的错误?
运行一些基本测试我也在 10.13.4 上看到了这一点。
我写了一个名为 looper 的小 C 程序,它在无限循环中做了一些基本的数学运算:
我在我的 FreeBSD 机器上运行了多个副本,并使用
htop(1)
. 使用renice(8)
我可以看到 Nice 值正在增加,Priority 值正在增加,并且 CPU 百分比降低 - 预期行为。我在 macOS 10.13.4 上运行了相同的程序并重复了该过程。虽然我可以看到 Nice 值在增加,但 Priority 值和 CPU 百分比保持一致。
我想知道这是否是一个错误,我之前没有理由仔细研究 macOS 中的 Nice 值——这种行为已经足够接近我所期望的,我并不倾向于调查。
如果您有开发者帐户,则值得向 Apple 报告。