Linux は、使われていないメモリを意図的にキャッシュへ利用します。そのため、free の値が小さいだけではメモリが圧迫されている証拠になりません。vmstat を使うと、メモリの状態を、実行可能なタスク、ページング、I/O、CPU 活動と関連付けて確認できます。
プロセス利用率 · レッスン 6
メモリ監視
vmstat のメモリ、ページング、プロセス、I/O、CPU のサンプルを解釈する方法を学びます。
vmstat でサンプリングする
1秒ごとにサンプルを収集します。
$ vmstat 1
通常、最初のデータ行は起動後の平均を示し、それ以降の行は各区間を示します。代表的な期間を取得したら Ctrl-C で停止します。単位や利用できるフィールドは実装によって異なるため、vmstat --unit とローカルのマニュアルを確認してください。
vmstat 1 で1秒ごとの変化を観測するのに最適なのはどの行ですか?
プロセスとメモリ
一般的なプロセスフィールドには、実行可能なタスクを示す r と、割り込み不可能なスリープでブロックされているタスクを示す b があります。メモリフィールドには、使用中のスワップ(swpd)、未使用メモリ(free)、バッファ(buff)、キャッシュ(cache)があります。これらはシステム全体の値であり、プロセス単位の消費量ではありません。
現在利用できるメモリをより分かりやすく確認するには、次の出力と比較します。
$ free -h
再利用可能なキャッシュを新しい割り当てに充てられるため、一般に available の推定値は free だけを見るより有用です。
Linux で free の値が小さくても正常な場合があるのはなぜですか?
ページングと I/O
si と so は、スワップインとスワップアウトの速度を示します。遅延やメモリ回収活動を伴う継続的なページングは圧迫を示すことがありますが、スワップ使用量(swpd)がゼロでないだけでは、現在問題があるとは断定できません。bi と bo はブロック入力と出力の速度を報告し、スワップ通信だけに限定されません。
現在のメモリ圧迫という診断をよりよく裏付ける証拠はどれですか?
CPU とシステム活動
CPU 列には一般に、ユーザー(us)、システム(sy)、アイドル(id)、I/O 待ち(wa)、スティール(st)の割合が含まれます。システム列には、1秒あたりの割り込み(in)とコンテキストスイッチ(cs)があります。急増はベースラインと比較して解釈してください。コンテキストスイッチ率が高くても、ワークロードによっては正常です。
プロセスフィールド r は何を表しますか?
レッスン完了
メモリ監視 を完了しました
vmstat を、時間で関連付けたシステム全体のビューとして解釈できるようになりました。
最初の累積レポートと区間ごとのサンプルを区別する。
キャッシュを再利用できる可能性のあるメモリとして扱う。
ページングをメモリ回収やアプリケーションへの影響と関連付ける。
プロセス、I/O、システム、CPU の各フィールドを合わせて読む。