リソース使用率の読み方と分析方法を理解することは、すべての Linux ユーザーにとって極めて重要なスキルです。コマンドラインツールの習得こそが、Linux がどのように機能するかについての深い洞察を与えてくれるため、Linux をゼロから学ぶための最良の方法だと考える人が多くいます。このレッスンでは、プロセスがリアルタイムで何を行っているかを追跡するための強力なユーティリティであるtopを紹介します。
top コマンドの理解
以前にtopについて簡単に触れましたが、ここでは表示内容の詳細を掘り下げます。topコマンドは、マシンのプロセスとシステム使用状況を動的かつリアルタイムで表示します。
top - 18:06:26 up 6 days, 4:07, 2 users, load average: 0.92, 0.62, 0.59
Tasks: 389 total, 1 running, 387 sleeping, 0 stopped, 1 zombie
%Cpu(s): 1.8 us, 0.4 sy, 0.0 ni, 97.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32870888 total, 27467976 used, 5402912 free, 518808 buffers
KiB Swap: 33480700 total, 39892 used, 33440808 free. 19454152 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6675 patty 20 0 1731472 520960 30876 S 8.3 1.6 160:24.79 chrome
6926 patty 20 0 935888 163456 25576 S 4.3 0.5 5:28.13 chrome
この出力を確認していきましょう。すべてを暗記する必要はありませんが、このレッスンをリファレンスとして使用できます。
システムサマリー
最初の数行は、システムの状態に関する概要を提供します。
- 1 行目: これは
uptimeコマンドを実行した場合と同じ情報です。現在時刻、システムの稼働時間、ログインユーザー数、および過去 1 分、5 分、15 分間のシステムロードアベレージを示します。 - 2 行目: 実行中、スリープ中、停止中、またはゾンビとして分類されたすべてのタスク(プロセス)の概要です。
CPU 使用率の内訳
3 行目は CPU 使用率の詳細を示します。
us: niced(優先度が変更されていない)ユーザープロセスを実行するために費やされた CPU 時間の割合。sy: カーネルとそのプロセスを実行するために費やされた CPU 時間の割合。ni: niced(低優先度)ユーザープロセスを実行するために費やされた CPU 時間の割合。id: アイドル状態の CPU 時間の割合。wa: I/O 操作の完了を待機するために費やされた CPU 時間の割合。高い値はディスクまたはネットワークのボトルネックを示している可能性があります。hi: ハードウェア割り込みを処理するために費やされた CPU 時間の割合。si: ソフトウェア割り込みを処理するために費やされた CPU 時間の割合。st: スティールタイム。仮想化環境では、ハイパーバイザーが別の仮想プロセッサをサービスしている間に、仮想 CPU が実際の CPU を待機した割合です。
メモリとスワップ情報
4 行目と 5 行目は、それぞれメモリとスワップ領域の使用状況を示します。これには、合計、使用済み、空き容量が含まれます。
プロセスリスト
topの主要部分は、最もリソースを消費しているプロセスのリストです。
PID: 一意のプロセス ID。USER: プロセスを所有するユーザー。PR: プロセスのスケジューリング優先度。NI: プロセスの優先度に影響を与える「nice」値。VIRT: プロセスが使用する仮想メモリ。プロセスがアクセスできるメモリの総量です。RES: プロセスが使用する常駐メモリ。タスクが使用しているスワップされていない物理メモリです。linux top virt resの違いを理解することがメモリ分析の鍵となります。SHR: プロセスが使用する共有メモリ。S: プロセスの状態:S=スリープ,R=実行中,Z=ゾンビ,D=中断不可能なスリープ,T=停止。%CPU: 最終更新以降にこのプロセスが使用した CPU 時間の割合。%MEM: このプロセスが使用した物理 RAM の割合。TIME+: プロセスが開始されてから使用した合計 CPU 時間。COMMAND: プロセスを開始したコマンド名またはコマンドライン。
特定のプロセス ID を指定して監視することもでき、集中的なトラブルシューティングに役立ちます。
top -p 1