技術ノート Linux Linux で nice と renice を使用してプロセスの優先順位を設定する方法

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

nice コマンドと renice コマンドを使用すると、優先順位を調整することで、カーネルによるプロセスの処理方法を微調整できます。 Linux や macOS などの Unix 系オペレーティング システムでこれらを使用する方法については、このチュートリアルを読んでください。

すべてはプロセスの問題です

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

Linux または Unix 系のコンピュータ内では、使用するアプリケーションを起動する前から多くのプロセスが実行されています。これらのプロセスの大部分は、Linux 自体の重要な要素、またはグラフィカル デスクトップ環境のサポート プロセスです。舞台裏ではたくさんのことが起こっています。もちろん、使用できるシステム リソースと CPU 時間には限りがあります。 Linux カーネルは、これらすべてのプロセスのコントローラーです。

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

現在どのプロセスに注目とリソースを与え、どのプロセスを待たなければならないかを決定するのはカーネルです。カーネルは、コンピュータが可能な限りスムーズに動作し、すべてのプロセスが適切なシェアを獲得できるように、プロセスと優先順位を継続的に調整します。一部のプロセスは優遇されます。これらはコンピュータの一般的な操作にとって非常に重要であるため、そのニーズは、たとえばブラウザよりも優先される必要があります。

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

素敵な価値

カーネルがプロセスをどのように扱うかを決定するために使用される基準の 1 つは、nice 値です。すべてのプロセスには素晴らしい価値があります。 nice 値は、-19 ~ 20 の範囲の整数です。すべての標準プロセスは、nice 値 0 で起動されます。

ここでのコツは、nice 値が高くなるほど、プロセスが他のプロセスに対してより適切になるということです。言い換えれば、nice 値が高いと、このプロセスが喜んで待機することがカーネルに伝えられます。負の数は親切の反対です。負の nice 値が大きいほど、プロセスはより利己的になります。他のプロセスに関係なく、できるだけ多くの CPU 時間を取得しようとします。

nice コマンドを使用して プロセスの起動 時に nice 値を設定でき、 renice を使用して 実行中のプロセスの nice 値を調整できます。

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

素敵なコマンド

nice コマンドを使用すると、プログラムを起動するときにそのプログラムの nice 値を調整できます。これにより、カーネルによってプロセスに与えられる優先度を、他のプロセスと比較して増減させることができます。

プログラマーが ackermann というプログラムを作成したとします。これは アッカーマン関数 を計算します。 CPU とメモリを大量に消費します。プログラマは次のコマンドを使用してプログラムを起動できます。

 ./アッカーマン

top コマンドを使用して、実行中のプログラムを表示できます。

ackermann プログラムの詳細は top で確認できます。素敵な値は「NI 列」の数値です。予想通り、ゼロに設定されました。

再起動して、今度は要求を緩和しましょう。次のように、 ackermann プログラムに適切な値 15 を設定します。 nice、スペース、-15、さらにスペースを入力し、起動するプログラムの名前を入力します。この例では、架空のプログラマーが ./ackermann を使用しています。

いいですね -15 ./アッカーマン

「-15」はマイナスの 15 ではないことに注意してください。正の15です。 「-」はパラメータを渡している nice を伝えるために必要です。負の数値を示すには、2 つの「-」文字を入力する必要があります。

ここで再び top を開始すると、 ackermann の動作の変化がわかります。

値が 15 であるため、 ackermann は最も多くの CPU 時間を消費していません。 GNOME と Rhythmbox はどちらも使用量が増えています。 ackermann を少し手綱にしました。

次に、逆のことを行って、 ackermann 負の nice 値を与えてみましょう。 2 つの「-」文字の使用に注意してください。アプリケーションをより利己的であまり良くないものにするには、 sudo を使用する必要があります。アプリケーションをより優れたものにすることは誰でもできますが、アプリケーションをより利己的なものにできるのはスーパーユーザーだけです。

 sudo nice --10 ./ackermann

トップを実行して、それがどのような違いを生んだかを見てみましょう。

今回の ackermann -10という嬉しい値を持っています。最上位に戻り、以前よりも多くの CPU 時間を消費します。

Linux で nice と renice を使用してプロセスの優先順位を設定する方法

レニスコマンド

renice コマンドを使用すると、実行中のプロセスの nice 値を調整できます。停止して nice で再起動する必要はありません。新しい値をその場で設定できます。

renice コマンドは、プロセスのプロセス ID (PID) をコマンド ライン パラメーターとして受け取ります。プロセス ID は、 top の「PID」列から抽出することも、次のように ps grep を使用して見つけることもできます。明らかに、 dave の代わりにユーザーの名前を入力し、 ackermann の代わりに関心のあるプロセスの名前を入力します。

 ps -eu デイブ |グレップ・アッカーマン

PID を取得したので、これを renice で使用できます。 ackermann 、適切な値 5 を使用して、より適切な動作に戻します。実行中のプロセスの nice 値を変更するには、 sudo を使用する必要があります。 5 パラメータには「-」がないことに注意してください。正の数の場合は 1 つ必要ありません。負の数の場合は 2 つではなく 1 つだけ必要です。

 sudo レニス -n 5 2339

renice が nice 値を変更したという確認が得られます。それは私たちに古い価値と新しい価値を示します。

通常、カーネルは優先順位を処理し、CPU 時間とシステム リソースを分配するという優れた仕事をします。ただし、CPU を大量に消費する長時間のタスクを実行していて、そのタスクがいつ終了するか気にしない場合は、そのタスクに高い nice 値を設定すると、コンピューターの動作が少しスムーズになります。その方が誰にとっても良いことになるでしょう。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

関連: 開発者と愛好家のための最高の Linux ラップトップ

「Linux で nice と renice を使用してプロセスの優先順位を設定する方法」に関するベスト動画選定!

【Linux 入門】パーミッションを超ざっくり解説!【何となく理解するIT】
WindowsとUbuntuのデュアルブート方法、OSの起動優先順位、待ち時間の設定方法、領域の変更方法等全部まとめて説明します~Linuxを使ってみたい方は必見です~