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ノードがない場合は実行します。)

次に、Activity Monitorアプリを介してノードプロセスの1つのPIDを取得またはpgrep実行しますsudo renice -n 19 -p $PID

Activity Monitorアプリを確認するか、次の方法で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).Nicerenice(8)値が増加し、優先順位値が増加し、CPU比率が減少することがわかります。これは予想される動作です。

macOS 10.13.4で同じプログラムを実行し、プロセスを繰り返しました。 Nice値が増加することがわかりますが、優先順位値とCPU比は一貫して保持されます。

これがバグかどうか疑問に思いましたが、以前はmacOSでNice値をこう詳しく調べる理由はありませんでした。動作が予想したものに十分近いため、調査する意向はありません。

開発者アカウントがある場合は、Appleに報告することをお勧めします。

関連情報