vmstatの出力の意味

今回は、vmstatの出力それぞれの意味について解説します。【連載コラム:Linuxシステム管理標準教科書を読む(35)】

最終更新日:2025年09月17日

Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。

vmstatはLinuxのシステムの負荷状態を確認するコマンドです。その出力はいくつかの種類に分かれていますが、より詳細にその意味を理解しておく必要があります。今回は項目それぞれがどのような意味を持つのかを解説します。


vmstatの出力

vmstatの出力は以下の通りです。

r 実行待ちプロセス数
b 割り込み不可のスリープ状態にあるプロセス数
swpd スワップアウトされたメモリ量
free 空きメモリの容量
buff バッファに使用されているメモリの容量
cache キャッシュに使用されているメモリの容量
si 1 秒あたりのディスクからスワップインされているメモリの容量
so 1 秒あたりのディスクにスワップアウトされているメモリの容量
bi 1 秒あたりのブロックデバイスに送られたブロック
bo 1 秒あたりのブロックデバイスから受け取ったブロック
in 1 秒あたりの割り込みの回数
cs 1 秒あたりのコンテキストスイッチの回数
us CPU 総時間当たりのユーザー時間の割合
sy CPU 総時間当たりのシステム時間の割合
id CPU 総時間当たりのアイドル時間の割合

プロセスの状態

rとbはプロセスの状態に関する値です。CPUに対する負荷があがると、実行待ちプロセスが増えます。topコマンドでもload averageを説明しましたが、待ちが増えると性能が劣化しているように見えます。処理がなかなか終わらない、というような時にはこの値を確認します。

スリープ状態のプロセスは主にストレージなどの入出力を待っているiowaitの状態で発生します。ストレージ負荷が高い、ストレージが遅い場合に数値が上がります。

メモリの状態

スワップや空きメモリは、プロセスがどれぐらいメモリを使用しているかで変わります。空きメモリが減り、スワップが増えると、メモリが不足してきていることになります。その際に、ストレージの高速化を行うためのバッファやキャッシュが減少し、プロセスにメモリを割り当てようとします。

バッファはストレージデバイスそのものに対するページバッファ、キャッシュはファイルシステムに対するファイルキャッシュの値と違いはありますが、自動的に増減するものなのでシステム管理者が違いをあまり意識する必要はないでしょう。

メモリ使用量が増え、スワップが増えると、性能が劣化していきます。特にプロセスのタスクスイッチが増えてメモリ使用を都度切り替えないといかない場合、siとsoのスワップイン、スワップアウトが増えていきます。また、inやcsの値も増えていくので、これらの値が高止まりしている場合、CPUを増強する、実行するマシンを増やして負荷を分散させるなどの対処が必要になります。

このように、単に「性能が悪い」という減少も、内部的には複数の要因が重なって起きていることが多いので、これらの出力を見て内部的に何が起きているかを推測し、対処することが肝心です。

ストレージの状態

biとboはストレージに対する入出力の状態を表しています。データベースなど入出力が多いシステムでも、両方が同時に高くなることは希です。どのようなストレージ入出力が起きているか、またその最大値などを見て、ストレージに対する負荷状態を把握します。一時的にストレージ負荷が高くなるのはよくあることですが、持続的に負荷が高い場合、様々なプロセスの動作に悪影響を及ぼします。メモリ不足によるスワップでストレージ負荷が高くなる、データベースなどストレージ入出力が多いプロセスが動作しているなど、原因を特定して対処する必要があります。

コンテキストスイッチ

コンテキストスイッチとは、マルチプロセスで動作しているプロセスの実行を切り替えることです。コンテキストスイッチが発生すると、CPUの状態を一時的に保管し、再度プロセスを実行する際には前回の状態に戻す必要があるので、CPUに負荷がかかります。Linux上で動作するプロセスの数が多いと頻繁にコンテキストスイッチが発生して効率が悪くなるので、CPUの数を増やすか、プロセスを別のシステムに移動させてコンテキストスイッチの頻度を下げる必要があります。

CPU時間の比率

CPUの負荷が高いこと自体は悪いことではなく、CPUが有効に使われているというだけのことです。ただし、総時間あたりのアイドル時間が高い場合、実際にはCPUは使われておらず、ストレージ入出力を待っているiowait状態の可能性があります。スリープ状態のプロセスの数と合わせて、傾向を把握する必要があるでしょう。

このように、個々の値の意味はもちろん、プロセスの挙動によって複数の値が関連していることもあります。高負荷状態はいくつかのパターンがありますので、それらのパターンを読み取れるようになりましょう。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

<Linuxシステム管理標準教科書とは>

Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。

バックナンバー

第34回:topコマンドの使い方
第33回:/etc/shadowでのパスワードのハッシュ化
第32回:EPELを使う
第31回:インストールISOイメージをリポジトリにする方法
第30回:dnfコマンドのモジュールを使ってみる

ページトップへ