複数のアプリケーションをコンピューターで実行すると、すべてが同時に実行されているように見えます。実際には、CPU はそれらの間を高速に切り替え、各プロセスに短い処理時間を与えています。
CPU がプロセスを管理する方法
各プロセスには、「タイムスライス」と呼ばれる短い CPU 時間が割り当てられます。タイムスライスが終了すると、プロセスは一時停止され、CPU は次のプロセスに移動します。デフォルトでは、Linux カーネルはプロセスをラウンドロビン方式でスケジューリングし、すべてのプロセスが完了するまで CPU 時間を公平に受け取るようにします。カーネルのスケジューラは、これらの高速な切り替えを管理する上で非常に効率的です。
Linux におけるニース(Niceness)とは
プロセスは CPU 時間を直接制御できませんが、カーネルのスケジューリング決定に影響を与えることができます。これは、プロセスのlinux niceness値を調整することによって行われます。「ニース(niceness)」という用語は、システム上の他のプロセスに対してプロセスがどれだけ「丁寧(nice)」であるかを示します。
プロセスのニースは、-20(最高優先度)から 19(最低優先度)までの数値で表されます。
- 高いニース値(例:19)は、プロセスが非常に「丁寧」であり、優先度が低く、他のプロセスに CPU 時間を譲ることを意味します。
- 低いまたは負のニース値(例:-20)は、プロセスが「丁寧」ではなく、より多くの CPU 時間を要求し、より高い優先度を持つことを意味します。
効果的にシステムリソースを管理するには、linux process nicenessを理解することが重要です。
プロセス優先度の調整
実行中のプロセスの現在のニースレベルは、topコマンドを使用して確認できます。NI列を探すと、ニース値が表示されます。
top
niceness linux値を制御するには、niceコマンドとreniceコマンドを使用できます。
niceコマンドを使用して、特定のニースレベルで新しいプロセスを開始します。たとえば、次のコマンドはニースを 5 に設定してapt upgradeを開始します。
nice -n 5 apt upgrade
すでに実行中のプロセスの優先度を変更するには、reniceコマンドを使用します。次のコマンドは、PID 3245 のプロセスのニースを 10 に変更します。
renice 10 -p 3245