watchコマンドによる定点観測の手引き

Linux環境において、プロセスの継続的な監視や、nvidia-smiなどの出力をリアルタイムで確認したい場面は多い。

本記事では、定点観測に最適な watch コマンドの基本的な使い方と、GPUの状態監視への応用について解説する。

watchコマンドとは何か

Linuxにおいて、コマンドを定期的に実行し、その出力を画面いっぱいに表示し続けるためのユーティリティである。

ログが流れていく tail -f とは異なり、watch は画面をクリアして常に最新の結果を表示する点が特徴だ。刻一刻と変化するシステムの状態や、ジョブの進捗状況をリアルタイムで監視する際に極めて重宝する。

基本的な構文

最も基本的な使い方は、監視したいコマンドの前に watch を付けるだけである。デフォルトでは2秒間隔でコマンドが再実行され、画面が更新される。終了するには Ctrl + C を押下する。

$ watch [オプション] コマンド

nvidia-smiを出しっぱなしにする方法

GPUの学習状況や推論負荷をモニタリングする際、nvidia-smi を単発で連打するのは非効率である。ここで watch コマンドを使用するのが定時である。

1. 1秒更新で監視する(推奨)

機械学習のトレーニング中など、細かく負荷を見たい場合は -n オプションで間隔(秒)を指定する。

$ watch -n 1 nvidia-smi
-n 1 はインターバルを1秒に設定するという意味である。0.1秒などの小数指定も可能だが、nvidia-smi 自体の実行コストを考慮すると1秒程度が適切である。

2. 変化した箇所をハイライトする

数値の変動を目視しやすくするために -d (differences) オプションを併用するとよい。前回の更新から変化があった部分がハイライト表示される。

$ watch -n 1 -d nvidia-smi

その他の有用なオプション

  • -t (--no-title): ヘッダー(コマンド名や現在時刻)を非表示にし、コマンド出力のみを表示する。
  • -c (--color): コマンドが出力するカラーコードを解釈して表示する(ls --color などを監視する場合に有効)。
  • -g (--chgexit): 出力内容に変化があった時点で watch を終了する。特定のステータス変化待ちに使用する。

まとめ

nvidia-smi のループオプション(-l)を使用する方法もあるが、watch コマンドの方が画面が固定され、視認性が高い。

GPUリソースの監視に限らず、ファイル生成の監視(ls -l)やディスク容量の監視(df -h)など、あらゆる場面で応用が効くため、watch -n 1 のイディオムは習得しておくべきである。