プロセスの優先度と制限を制御するnice, renice, ulimitの使い方

  • URLをコピーしました!
目次

Linuxプロセスとリソース管理の基礎:
nice, renice, ulimitを理解する

Linuxはシステム内で多くのプロセスが同時に実行され、CPU、メモリ、
ファイルディスクリプタといったリソースが複数のプロセスで共有されます。

これを効率的に管理するためには、プロセスの優先度や使用できるリソースの制限を設定することが重要です。
本記事では、プロセス優先度を変更するnice、実行中のプロセスの優先度を調整する
renice、およびシステムリソースの制限を設定するulimitについて詳しく解説します。

niceコマンド: プロセスの優先度を設定する

niceコマンドは、新しいプロセスを実行する際にそのプロセスの優先度を設定します。
プロセスの優先度は、ナイス値と呼ばれるもので制御され、数値が大きいほど低い優先度を持ちます。
Linuxでは、プロセスがCPUをどれくらい優先的に使用できるかをこのナイス値で調整します。

niceの使い方と例:
nice -n 15 your_command

このコマンドでは、your_commandをナイス値15で実行します。
デフォルトではniceのナイス値は0であり、一般的に管理者でないユーザーは
負のナイス値を指定することはできません(より高い優先度を指定するにはroot権限が必要です)。

ナイス値の範囲

  • ナイス値の範囲-20(最高優先度)から19(最低優先度)。
  • デフォルト0

よく使うオプション

  • -n:ナイス値を指定。デフォルトは0
  • command:実行したいコマンドを指定。
使用例:

CPU負荷が高いバックアップ処理を低優先度で実行する場合:

nice -n 19 rsync -a /source /destination

このコマンドは、rsyncを最低優先度で実行し、
他の重要なプロセスに影響を与えにくくします。

reniceコマンド: 実行中のプロセスの優先度を変更する

reniceコマンドは、すでに実行中のプロセスのナイス値を変更するためのコマンドです。
たとえば、あるプロセスの優先度を低く設定したが、後で優先度を高くしたい場合にreniceを使います。

reniceの使い方と例:
sudo renice -n 5 -p 1234

このコマンドは、プロセスID1234のプロセスのナイス値を5に変更します。
reniceを使ってプロセスの優先度を上げる(ナイス値を低くする)には、管理者権限が必要です。

オプション詳細

  • -n:新しいナイス値を指定します。
  • -p:プロセスIDを指定します。
  • -g:プロセスグループのナイス値を変更します。
  • -u:特定のユーザーのすべてのプロセスのナイス値を変更します。
使用例:

特定のユーザーのすべてのプロセスを優先度の高いものに変更する:

sudo renice -n -5 -u username

このコマンドは、ユーザーusernameが実行している
すべてのプロセスのナイス値を-5に設定します(優先度を上げる)。

ulimitコマンド: リソース制限を設定する

ulimitは、プロセスが使用できるシステムリソースに制限を設けるためのコマンドです。
これにより、特定のプロセスがシステムの全リソースを占有することを防ぎます。
たとえば、1つのプロセスが開くことができるファイル数や、使用できるメモリ量を制限することができます。

ulimitの使い方と例:
ulimit -n 4096

このコマンドは、1つのプロセスが同時に開けるファイル数を最大で4096に制限します。

よく使うオプション

  • -n:開けるファイルディスクリプタの最大数。
  • -u:ユーザーごとに作成できるプロセスの最大数。
  • -f:生成できるファイルの最大サイズ(単位はブロック)。
  • -t:プロセスが使用できるCPU時間の最大量(秒単位)。
  • -m:プロセスが使用できる物理メモリの最大量(KB単位)。
使用例:

CPUリソースを制限して長時間のプロセスがシステム全体に影響しないようにする:

ulimit -t 600

このコマンドは、プロセスが使用できるCPU時間を最大で600秒に制限します。
指定時間を超えると、プロセスは強制終了されます。

永続的な設定

システム全体のリソース制限を設定する場合、
/etc/security/limits.confファイルを編集することで、
特定のユーザーやグループに対するリソース制限を永続的に適用できます。

username soft nofile 1024
username hard nofile 4096

この設定では、ユーザーusernameが開けるファイル数をソフトリミットで1024
ハードリミットで4096に制限しています。
ソフトリミットはユーザーが自由に変更できる一方、ハードリミットは管理者のみが変更可能です。

リソースの確認にはtophtopが便利

リソース管理コマンドの効果を確認するために、tophtopを使用して
リアルタイムでシステム状況を監視できます。
特にhtopは視覚的で使いやすいインターフェースを提供し、
プロセスの優先度やCPU、メモリ使用率を一目で確認できます。

htop

プロセスの状態やリソース使用状況を確認しながら、
優先度を調整することでシステムのパフォーマンスを最適化しましょう。

まとめ

nicereniceulimitは、Linuxシステムでプロセスの優先度やリソース使用を
効率的に管理するための基本的なコマンドです。

これらのコマンドを使いこなすことで、システムの安定性を保ちつつ、
重要なプロセスを優先して実行できるようになります。
実際にコマンドを試しながら、自分のシステムにどのような影響があるのかを確認してみましょう。

    目次