カーネルは、名前付きパイプ (FIFO) を介して 2 つのプロセス間を移動するデータを、そのnice
ようなプロセスに割り当てられた値とは別に処理しているようです。これは、処理する多数の同時プロセスでシステムが過負荷になっている次のケースで特に顕著です。
プロセス A と B は FIFO を介して通信します。高い CPU 使用率を要求する他のすべてのプロセスよりもタスクの優先度が高くなります (nice が低くなります)。システムが恒久的に過負荷になっています。FIFO を介した A と B 間の通信がない場合、これら 2 つのプロセスは CPU を最大限に活用し、優先度の低いプロセスを犠牲にします。しかし、FIFO 通信が開始されると、まだ多くの CPU を必要とする A と B がカーネルによって分離され、nice が高い (nice が 10 ユニット高い) プロセスがほぼすべての CPU を使用します。
カーネルは、FIFO を使用するプロセスの都合に応じて FIFO の処理をスケジュールすることができないようで、システムが過負荷になると、カーネルは特別な優先順位なしで FIFO を処理します。
これは事実ですか?