効果的なシステム管理には、リソース使用状況を注意深く監視することが不可欠であり、メモリ監視はそのプロセスの重要な部分です。システムがメモリ不足になると、パフォーマンスが大幅に低下する可能性があります。Linux にはメモリ消費量を追跡するためのいくつかのツールが用意されており、その中でも最も多用途なツールの一つがvmstatです。
vmstat の紹介
vmstat(仮想メモリ統計)コマンドは、プロセス、メモリ、ページング、ブロック I/O、トラップ、CPU アクティビティに関する情報を報告する強力なメモリ使用率モニターです。引数なしで実行すると、前回の起動以降のシステムの現在の状態のスナップショットが提供されます。
pete@icebox:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 396528 38816 384036 0 0 4 2 38 79 0 0 99 0 0
出力はいくつかの列に整理されています。各フィールドの意味を見ていきましょう。
Procs (プロセス)
r: 実行時間を待っている実行可能プロセスの数。b: 不可中断スリープ状態にあるプロセスの数(通常は I/O を待機中)。
Memory (メモリ)
swpd: 使用されている仮想メモリ量(キロバイト単位)。free: アイドル状態のメモリ量(キロバイト単位)。buff: バッファとして使用されているメモリ量。cache: ページキャッシュとして使用されているメモリ量。
Swap (スワップ)
si: 1 秒あたりディスクからスワップインされたメモリ量(キロバイト単位)。高い値は、システムが物理メモリ不足であることを示します。so: 1 秒あたりディスクにスワップアウトされたメモリ量(キロバイト単位)。これは理想的にはゼロであるべきです。
IO (入出力)
bi: ブロックデバイスから受信したブロック数(ブロック/秒)。bo: ブロックデバイスに送信されたブロック数(ブロック/秒)。
System (システム)
in: 1 秒あたりの割り込み回数(クロックを含む)。cs: 1 秒あたりのコンテキストスイッチの回数。
CPU (CPU)
これらは総 CPU 時間に対する割合です。
us: カーネルコード以外(ユーザー時間)の実行に費やされた時間。sy: カーネルコード(システム時間)の実行に費やされた時間。id: アイドル状態で費やされた時間。wa: I/O 待ちに費やされた時間。st: 仮想マシンから盗まれた時間(仮想化環境の場合)。