システムリソースとプロセスアクティビティを監視する atopコマンドを使う

はじめに

top, htopとかtop系のコマンドにある、atopコマンドを使ってみる。
https://packages.ubuntu.com/noble/admin/atop

環境

Windows 11 Professional
WSL2 Ubuntu 24.04 LTS

atopのインストール

sudo apt-get install atop
ログ
sudo apt-get install atop

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libgl1-amber-dri libllvm19 libxcb-damage0 mesa-utils-bin xbitmaps
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  atop
0 upgraded, 1 newly installed, 0 to remove and 41 not upgraded.
Need to get 209 kB of archives.
After this operation, 605 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 atop amd64 2.10.0-2ubuntu2 [209 kB]
Fetched 209 kB in 2s (132 kB/s)
Selecting previously unselected package atop.
(Reading database ... 89565 files and directories currently installed.)
Preparing to unpack .../atop_2.10.0-2ubuntu2_amd64.deb ...
Unpacking atop (2.10.0-2ubuntu2) ...
Setting up atop (2.10.0-2ubuntu2) ...
Created symlink /etc/systemd/system/timers.target.wants/atop-rotate.timer → /usr/lib/systemd/system/atop-rotate.timer.
Created symlink /etc/systemd/system/multi-user.target.wants/atopacct.service → /usr/lib/systemd/system/atopacct.service.
Created symlink /etc/systemd/system/multi-user.target.wants/atop.service → /usr/lib/systemd/system/atop.service.
Processing triggers for man-db (2.12.0-4build2) ...

インストール確認

atop -V
Version: 2.10.0 - 2024/01/04 10:52:30     <gerlof.langeveld@atoptool.nl>

atopを使う

atop

各プロセスやネットワーク状況が確認できる。

atop

リソース状況

画面中央より上に表示されているものについて調べてみた。
これは atop のシステム全体のリソース使用状況を示すセクションで、各リソース(プロセス、CPU、メモリ、スワップ、ページング、ディスク)についての統計情報が表示されている。
それぞれの内容について表にまとめた野で以下に記載する。

PRC (Process) - プロセス統計

項目説明
sysシステムモード(カーネル)の CPU 使用時間
userユーザーモードの CPU 使用時間
#proc現在アクティブなプロセス数
#tslpuスリープ状態のスレッド数
#tidleアイドル状態のスレッド数
#exit終了したプロセス数

CPU - CPU 使用状況

項目説明
sysカーネルモード(システム)の CPU 使用率
userユーザーモードの CPU 使用率
irq割り込み処理(IRQ)に使用された CPU 割合
idleアイドル状態の CPU 時間(%)
waitI/O 待機(ディスクやネットワークの処理待ち)による CPU 時間(%)
curf現在の CPU クロック周波数(GHz)

CPL (Load Average) - システム負荷

項目説明
numcpuシステム内の CPU コア数
avg11分間のロードアベレージ(CPU負荷の平均)
avg55分間のロードアベレージ
avg1515分間のロードアベレージ
cswコンテキストスイッチ(CPUがタスクを切り替えた回数)
intr割り込み(ハードウェアやソフトウェアが CPU に介入した回数)

MEM (Memory) - メモリ使用状況

項目説明
tot総メモリ容量
free空きメモリ量
avail利用可能なメモリ(キャッシュなどを考慮)
cacheページキャッシュとして使用されているメモリ
buffバッファとして使用されているメモリ
slabカーネルが使用するスラブメモリ(キャッシュなど)

MEM (Shared Memory) - 共有メモリ

項目説明
numnodeNUMA ノード数(メモリ管理単位)
shmem共有メモリの合計量
shrss共有メモリの Resident Set Size(プロセスが使用中の物理メモリ)
shswp共有メモリのスワップ領域使用量
pgtabページテーブルのメモリ使用量
anthpHugePages(大きなメモリページ)の使用量

SWP (Swap) - スワップ使用状況

項目説明
tot総スワップ容量
free空きスワップ容量
swcacスワップキャッシュ(ディスクに書き出される前のスワップデータ)
zstor圧縮スワップ領域の使用量
vmcom仮想メモリのコミット量(実際に使用する予定のメモリ量)
vmlim仮想メモリの最大利用可能量

PAG (Paging) - ページング統計

項目説明
migrateメモリページの移動数(NUMA ノード間)
pginメモリへのページ読み込み回数
pgoutメモリからのページ書き出し回数
swinスワップイン(スワップ領域からメモリに戻ったページ数)
swoutスワップアウト(メモリからスワップ領域に書き出されたページ数)
oomkillOut-Of-Memory Killer により強制終了されたプロセス数

DSK (Disk) - ディスクI/O状況

項目説明
sde / sdcディスクデバイス名
busyディスクの使用率(%)
read読み込み回数
write書き込み回数
MBw/sデータ転送速度(MB/秒)
avio平均 I/O 応答時間(ms)

プロセス状況

次は画面中央より下に表示されている情報についてまとめる。

項目名説明
PIDプロセスID(各プロセスを識別する番号)
SYSCPUカーネルモードでの CPU 使用時間(システム処理)
USRCPUユーザーモードでの CPU 使用時間(アプリケーション処理)
RDELAYディスクやネットワーク I/O の待機時間(読み込み遅延)
BDELAYI/O バッファの遅延時間(書き込み待機時間)
VGROW仮想メモリ(VIRT)の増加量(KB単位)
RGROW物理メモリ(RES)の増加量(KB単位)
RUIDプロセスの実行ユーザー ID(実ユーザー)
EUIDプロセスの有効ユーザー ID(権限を持つユーザー)
STスケジューラの状態(例: 0=通常、1=リアルタイムなど)
EXC例外発生回数(0以外の場合、エラーや割り込みの可能性あり)
THRスレッド数(そのプロセス内でのアクティブなスレッド数)
Sプロセスの状態(R=実行中、S=スリープ、D=ディスク待ち など)
CPUNR割り当てられた CPU コア番号
CPUプロセスが使用している CPU 使用率(%)
CMD実行中のコマンド名(プロセスの名前)

top, htop, atopの違いについて

top, htop, atop はいずれも Linux のシステム監視ツールですが、それぞれ特徴や用途が異なります。

topについて

特徴

  • Linux に標準で搭載されているプロセス管理ツール。
  • CPU使用率、メモリ使用量、実行中のプロセスをリアルタイムで表示。
  • コマンド実行後にオプションキーを押すことで、ソートやフィルタリングが可能。

メリット

  • ほとんどの Linux 環境でデフォルトで利用可能。
  • 軽量で最低限のシステム負荷。

デメリット

  • UI がシンプルで視認性が低い。
  • プロセスの詳細情報や色分けがなく、直感的な操作が難しい。

htopについて

特徴

  • top の強化版で、インタラクティブな操作が可能。
  • CPUやメモリ使用率が棒グラフで表示され、視認性が高い。
  • カラフルなUIで直感的にプロセス管理ができる。
  • マウス操作が可能(top はキーボード操作のみ)。
  • Fキーでフィルタやソートを簡単に適用できる。

メリット

  • top よりも視認性が良く、操作が直感的。
  • プロセスの並び替え、検索、フィルタが容易。
  • ツリービューでプロセスの親子関係を表示できる。

デメリット

  • top に比べて若干のリソースを消費する。
  • 一部の最小構成のシステムではインストールが必要。

atop

特徴

  • tophtop に比べ、より詳細なシステム情報を表示。
  • CPU、メモリだけでなく、ディスク I/O やネットワーク使用状況 も監視可能。
  • ロギング機能があり、過去のシステム状態を分析可能。
  • atop -r コマンドでログをリプレイして過去の状態を再現できる。

メリット

  • I/O やネットワークの詳細情報を表示できる。
  • ロギング機能により、長期間のシステム監視が可能。
  • 負荷のかかったプロセスを強調表示するため、ボトルネックの特定が容易。

デメリット

  • tophtop よりも情報量が多く、初心者には見づらい。
  • tophtop よりもメモリやCPUを少し多く消費する。
  • 標準ではインストールされていないため、手動で導入が必要。

どれを使うべきか?

ツールメリット適した用途
top軽量でどの環境でも利用可能すぐに簡単にシステム負荷を確認したいとき
htop視認性が高く操作しやすいインタラクティブにプロセスを管理したいとき
atopI/Oやネットワークの詳細も確認可能システム全体の負荷解析やボトルネック調査

シンプルな監視なら top、より見やすく詳細に確認したいなら htop、ディスクやネットワーク負荷も含めて監視するなら atop がよさそうか。

参考

おわりに

topの系譜のコマンドを使用し調査してみた。
サーバのボトルネック調査等で使用していきたい。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。