Process

macOS 10.13.4 - renice 似乎沒有效果

  • December 15, 2020

我正在嘗試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 程序,它在無限循環中做了一些基本的數學運算:

#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 值在增加,但 Priority 值和 CPU 百分比保持一致。

我想知道這是否是一個錯誤,我之前沒有理由仔細研究 macOS 中的 Nice 值——這種行為已經足夠接近我所期望的,我並不傾向於調查。

如果您有開發者帳戶,則值得向 Apple 報告。

引用自:https://unix.stackexchange.com/questions/442470