vmstatコマンドでCPU・メモリの負荷を確認する方法|出力の読み方と高負荷の切り分け

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > vmstatコマンドでCPU・メモリの負荷を確認する方法|出力の読み方と高負荷の切り分け
===== TITLE ===== vmstatコマンドでCPU・メモリの負荷を確認する方法|出力の読み方と高負荷の切り分け ===== DESCRIPTION (entry_text) ===== 「サーバーが重いけど、topだけでは原因が特定できない」
「vmstatコマンドを実行してみたけど、数字が並んでいて何を見ればいいのか分からない」
Linuxサーバーの運用で、CPU・メモリ・ディスクI/Oの状態をまとめて確認したい場面は多いはずです。

この記事では、Linuxの vmstat コマンドを使ってシステムの負荷状況を診断する実践的な手順を解説します。
出力の各列(procs・memory・swap・io・system・cpu)の読み方から、継続監視(vmstat 1 5)、-s・-d・-p・-tオプションの活用、top・free・iostat・sarとの使い分け、さらに高負荷時の切り分け手順まで、現場で必要な知識をまとめました。

実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済み

この記事のポイント

・vmstat 1 5 でCPU・メモリ・I/Oの状態をリアルタイム監視できる
・出力6カテゴリの読み方と高負荷の判断基準がわかる
・高負荷時にCPU・メモリ・ディスクI/Oのどれが原因か切り分けられる
・vmstatの弱点(過去データ・ネットワーク)をsarで補完する方法がわかる

===== TEXT_MORE (entry_text_more) =====
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

vmstatコマンドとは? システム全体の状態を一行で把握するツール

vmstat(Virtual Memory Statistics)は、CPU・メモリ・スワップ・ディスクI/O・割り込みなどの統計情報を一行にまとめて表示するコマンドです。

topコマンドがプロセス単位の情報を見るのに対して、vmstatはシステム全体の「健康状態」をひと目で把握できるのが特徴です。障害対応やパフォーマンス調査の初動で、「CPUが詰まっているのか」「メモリが足りないのか」「ディスクI/Oが遅いのか」を素早く切り分けるのに使います。

# vmstatの実行(引数なし=起動時からの累積値を1回表示) $ 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 492160 48320 401024 0 0 12 8 215 48 2 1 96 1 0

引数なしで実行すると、起動時からの累積値が1行だけ表示されます。リアルタイムの状態を把握するには、後述する「間隔」と「回数」を指定する方法を使います。

vmstatの出力項目を理解する(6つのカテゴリ)

vmstatの出力は6つのカテゴリに分かれています。それぞれの列の意味を正確に理解しておくと、障害の原因切り分けが格段に速くなります。

1. procs(プロセス)

r(run queue):CPUの実行待ち(実行可能状態)のプロセス数。CPUコア数を超えている場合、CPU不足の兆候
b(blocked):I/O待ちなどで割り込み不可のスリープ状態にあるプロセス数。この値が継続的に0以外の場合はディスクI/Oがボトルネック

2. memory(メモリ)

swpd:使用中のスワップ領域のサイズ(KB)。0以外の場合、物理メモリが不足した形跡がある。増加し続けている場合は特に要注意
free:空きメモリのサイズ(KB)。ただしLinuxではキャッシュに積極的にメモリを使うため、freeが少なくてもすぐに問題とは限らない
buff:バッファキャッシュとして使われているメモリ(KB)。ディスクのメタデータなどに使用される
cache:ページキャッシュとして使われているメモリ(KB)。ファイルの読み書きを高速化するために使用される

3. swap(スワップ)

si(swap in):ディスクからメモリに読み込まれたデータ量(KB/s)。スワップインが発生している
so(swap out):メモリからディスクに退避されたデータ量(KB/s)。スワップアウトが発生している

si・soの両方が継続的に0より大きい値を示している場合、物理メモリが不足しています。スワップはディスクI/Oを伴うため、パフォーマンスが大幅に劣化します。

4. io(ディスクI/O)

bi(blocks in):ブロックデバイスから読み込まれたブロック数(ブロック/s)
bo(blocks out):ブロックデバイスに書き込まれたブロック数(ブロック/s)

この値が大きい場合、ディスクI/Oが活発です。cpuカテゴリのwa(I/O待ち)と併せて確認すると、ディスクがボトルネックかどうかを判断できます。

5. system(割り込み・コンテキストスイッチ)

in(interrupts):1秒あたりの割り込み回数
cs(context switches):1秒あたりのコンテキストスイッチ回数

これらの値が異常に大きい場合、大量のプロセスやスレッドが頻繁にCPUを奪い合っている状態です。通常の運用ではベースラインの値を把握しておき、急激に増加した場合に調査します。

6. cpu(CPU使用率)

us(user):ユーザープロセスのCPU使用率(%)
sy(system):カーネル処理のCPU使用率(%)。高い場合はシステムコール過多を疑う
id(idle):アイドル(空き)の割合(%)。この値が低いほどCPUが忙しい
wa(iowait):ディスクI/O待ちの割合(%)。高い場合はディスクがボトルネック
st(steal):仮想マシン環境でホスト側に奪われたCPU時間(%)

実務で最も重要なのは id(空き)と wa(I/O待ち)です。idが極端に低ければCPU不足、waが高ければディスク性能がボトルネックと判断できます。

vmstatの基本的な使い方

1. 一定間隔で継続監視する(vmstat 間隔 回数)

vmstatの最も実用的な使い方は、「何秒間隔で何回表示するか」を指定する方法です。

# 1秒間隔で5回表示する $ vmstat 1 5 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 490376 47580 401036 0 0 79 10 729 68 1 3 94 2 0 0 0 0 490376 47580 401036 0 0 0 0 708 28 0 0 100 0 0 0 0 0 490376 47580 401036 0 0 0 0 701 23 0 0 100 0 0 0 0 0 490376 47580 401036 0 0 0 0 688 23 0 0 100 0 0 0 0 0 490376 47588 401028 0 0 0 32 717 29 0 1 94 5 0

※1行目は起動時からの累積値(平均値)のため、実質的な「今の状態」は2行目以降を見てください。

2. 回数を省略して無限に表示し続ける

回数を省略すると、Ctrl+Cで停止するまで表示し続けます。障害調査中にリアルタイムで張り付いて監視したい場合に便利です。

# 2秒間隔で表示し続ける(Ctrl+Cで停止) $ vmstat 2

3. ヘッダーを1回だけ表示する(-n)

継続表示する際、デフォルトでは一定間隔でヘッダー行が繰り返し表示されます。-n オプションを付けると、ヘッダーは最初の1回だけになり、ログファイルへの保存時に見やすくなります。

# ヘッダーを1回だけ表示して、1秒間隔で継続監視する $ vmstat -n 1

vmstatの応用オプション

1. サマリ表示で全体像を把握する(-s)

-s オプションを使うと、メモリやCPUの統計情報を項目ごとに縦に一覧表示します。各項目の累積値を確認したい場合に便利です。

# メモリ・CPU統計のサマリを表示する $ vmstat -s 4030976 K total memory 1245312 K used memory 1890560 K active memory 566400 K inactive memory 328640 K free memory 48320 K buffer memory 2408704 K swap cache 2097148 K total swap 12288 K used swap 2084860 K free swap 18542 non-nice user cpu ticks 28 nice user cpu ticks 5124 system cpu ticks 985212 idle cpu ticks 2841 IO-wait cpu ticks 0 IRQ cpu ticks 132 softirq cpu ticks 0 stolen cpu ticks 124520 pages paged in 85210 pages paged out 0 pages swapped in 0 pages swapped out 521845 interrupts 842310 CPU context switches 1710925200 boot time 12458 forks

2. ディスクごとの統計を表示する(-d)

-d オプションを使うと、ディスクデバイスごとの読み書きの統計情報を表示します。どのディスクにI/Oが集中しているかを確認できます。

# ディスクごとの統計情報を表示する $ vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 26407 10882 882212 222469 4068 10730 118380 435352 0 122 dm-0 36013 0 878506 518629 14797 0 118376 1562409 0 122 dm-1 112 0 896 890 0 0 0 0 0 0

3. 特定パーティションのI/O統計を表示する(-p)

-p オプションを使うと、指定したパーティション単位でI/Oの統計情報を表示できます。-d でデバイス全体の傾向をつかんだ後、さらに絞り込んで原因パーティションを特定するときに役立ちます。

# /dev/sda1 パーティションのI/O統計を表示する $ vmstat -p /dev/sda1 sda1 reads read sectors writes written sectors 412041 17823148 289012 25482910

4. タイムスタンプを付けて表示する(-t)

-t オプションを付けると、各行にタイムスタンプが追加されます。ログファイルに保存する際、「何時何分にどんな状態だったか」を後から追跡できるため、障害調査で重宝します。

# タイムスタンプ付きで1秒間隔・10回表示する $ vmstat -t 1 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- ---timestamp--- r b swpd free buff cache si so bi bo in cs us sy id wa st JST 1 0 0 490376 47580 401036 0 0 79 10 729 68 1 3 94 2 0 2026-03-19 10:30:01 0 0 0 490376 47580 401036 0 0 0 0 708 28 0 0 100 0 0 2026-03-19 10:30:02

5. 表示単位を変更する(-S)

-S オプションで、メモリの表示単位をキロバイト(K)、メガバイト(M)、ギガバイト(G)に変更できます。メモリ容量が大きいサーバーでは、MB単位のほうが読みやすくなります。

# メモリをMB単位で表示する $ vmstat -SM 1 3 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 480 47 392 0 0 12 8 215 48 2 1 96 1 0 0 0 0 479 47 392 0 0 0 4 208 42 1 1 97 1 0 0 0 0 479 47 392 0 0 0 8 211 44 1 0 98 1 0

6. アクティブ/非アクティブメモリを表示する(-a)

-a オプションを使うと、buff/cacheの代わりにactive/inactiveメモリが表示されます。activeは最近アクセスされたメモリ、inactiveは長時間アクセスされていないメモリです。

# アクティブ/非アクティブメモリを表示する $ vmstat -a procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 328640 566400 1890560 0 0 12 8 215 48 2 1 96 1 0

vmstatの出力を読む実務テクニック

1. CPU負荷の判断方法

cpuカテゴリの us + sy が合計で80%を超え、id が20%を下回っている場合は、CPUが逼迫しています。さらにprocsの r(実行待ちプロセス数)がCPUコア数を超えていれば、処理待ちが発生しています。

# CPUコア数を確認する $ nproc 4 # r列が4を超えていればCPU不足の兆候(4コアの場合) # CPU高負荷のパターン例:us+syが高く、idが低い r b swpd free buff cache si so bi bo in cs us sy id wa st 7 0 0 312044 23148 1423020 0 0 0 8 3847 5204 82 9 9 0 0

2. メモリ不足の判断方法

以下の条件が揃った場合、メモリ不足の状態です。

swpd が0以外で、かつ増加傾向にある
si・so が継続的に0以外の値を示している
free が極端に少なく、buff/cacheも少ない

特に so(swap out)が継続的に発生している 場合は、物理メモリが不足しており、パフォーマンスが大幅に劣化しています。早急にメモリを消費しているプロセスの特定が必要です。

# メモリ逼迫のパターン例:swpdが増加し、si・soが両方0以外 r b swpd free buff cache si so bi bo in cs us sy id wa st 3 2 524288 12044 4148 32020 42 128 512 192 1847 2804 38 8 18 36 0 4 3 589824 8204 3992 29440 56 162 624 248 2012 3108 42 10 11 37 0 # メモリを多く使っているプロセスを確認する $ ps aux --sort=-%mem | head -10

3. ディスクI/Oボトルネックの判断方法

以下の条件が揃った場合、ディスクI/Oがボトルネックです。

・cpuの wa(iowait) が10%以上で推移している
・procsの b(blocked) が増加している
・ioの bi・bo が大きな値を示している

この場合は iostat でデバイスごとの詳細を確認し、原因を特定します。

# I/Oボトルネックのパターン例:waが高く、b(blocked)が増加 r b swpd free buff cache si so bi bo in cs us sy id wa st 0 3 0 892044 23148 1423020 0 0 3242 8192 847 1204 3 2 71 24 0 # ディスクI/Oの詳細を確認する(sysstatパッケージが必要) $ iostat -x 1 3

4. 仮想マシン環境でのst(steal)の確認

クラウド(AWS・GCP・Azure)や仮想マシン環境で st(steal) が継続的に高い場合、ホスト側のリソース競合で自分のVMにCPU時間が割り当てられていない状態です。この場合はインスタンスのスペックアップやホストの移動を検討してください。

vmstatの出力をログに記録する

障害発生時に「その時の状態」を振り返るには、vmstatの出力を定期的にファイルに保存しておくことが有効です。

# タイムスタンプ付き・ヘッダー1回で、1秒間隔の出力をファイルに保存する $ vmstat -tn 1 > /var/log/vmstat.log & # cronで5分ごとに60秒分のデータを記録する例 # crontabに以下を追加 */5 * * * * vmstat -tn 1 60 >> /var/log/vmstat_history.log 2>&1

ログが無限に増え続けるため、logrotateと組み合わせるか、定期的に古いログを削除する仕組みを入れておきましょう。

ただし、vmstatのログは「記録中のリアルタイムデータ」しか残りません。「記録していなかった過去の時間帯」を調べるには、次のセクションで紹介するsarコマンドが必要です。

過去の負荷をsarで振り返る(vmstatの弱点を補う)

vmstatは「今この瞬間」のシステム状態を表示するコマンドです。しかし、「昨日の深夜にサーバーが重くなった」という報告を受けた場合、vmstatでは過去に遡ることができません。

そこで使うのが sar(System Activity Reporter)コマンドです。sarはsysstatパッケージに含まれるツールで、CPU・メモリ・ディスクI/O・ネットワークの統計を自動で記録し、後から時系列で確認できます。vmstatの弱点である「過去のデータが見られない」「ネットワーク情報がない」を補完するコマンドとして覚えておいてください。

1. sysstatをインストールしてsarを使えるようにする

sarや前述のiostatを使うには、sysstatパッケージのインストールとデータ収集の有効化が必要です。

# RHEL 9 / Rocky Linux 9 / AlmaLinux 9 の場合 $ sudo dnf install sysstat $ sudo systemctl enable --now sysstat # Ubuntu 24.04 の場合 $ sudo apt install sysstat # /etc/default/sysstat の ENABLED を "true" に変更後 $ sudo systemctl restart sysstat

インストール後、systemdタイマー(またはcronジョブ)が10分ごとにデータを /var/log/sa/ に記録します。サーバー構築時にsysstatを入れておくのが鉄則です。障害が起きてからインストールしても、過去のデータは取得できません。

2. CPU・メモリの過去データを確認する(sar -u / sar -r)

vmstatのcpuカテゴリに相当する情報を過去に遡って確認するには sar -u を使います。

# 今日のCPU使用率の推移を表示する $ sar -u Linux 5.14.0-362.24.1.el9_3.x86_64 (web-server-01) 04/09/2026 _x86_64_ (4 CPU) 08:00:01 AM CPU %user %nice %system %iowait %steal %idle 08:10:01 AM all 3.42 0.00 1.21 0.15 0.00 95.22 08:20:01 AM all 5.18 0.00 1.85 0.32 0.00 92.65 08:30:01 AM all 12.76 0.00 3.04 0.48 0.00 83.72 08:40:01 AM all 45.33 0.00 8.12 1.24 0.00 45.31 08:50:01 AM all 78.91 0.00 12.45 2.36 0.00 6.28

vmstatの%user・%system・%iowait・%idleと同じ項目が、10分間隔の履歴として表示されます。上の例では08:50前後にCPU負荷が急上昇していたことがわかります。

メモリの使用推移を確認するには sar -r を使います。

# 今日のメモリ使用率の推移を表示する $ sar -r Linux 5.14.0-362.24.1.el9_3.x86_64 (web-server-01) 04/09/2026 _x86_64_ (4 CPU) 08:00:01 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached 08:10:01 AM 524816 2845312 1423680 42.18 145632 2175264 08:20:01 AM 498432 2819008 1450064 42.96 145824 2174848 08:30:01 AM 312576 2633024 1635920 48.47 146016 2174208

vmstatのmemoryカテゴリ(free・buff・cache)に相当する情報が、時系列で確認できます。%memusedが90%を超えている時間帯が続いていればメモリ不足の可能性がありますが、Linuxはキャッシュに積極的にメモリを使うため、kbavailの値も合わせて判断してください。

3. 時間帯の絞り込みと過去の日付の指定(-s / -e / -f)

「深夜2時~4時の間に何があったか」を調べるには、-s(開始時刻)と -e(終了時刻)で絞り込みます。過去の日付は -f オプションでファイルを指定します。

# 昨日(8日)の02:00~04:00のCPU使用率を表示する $ sar -u -f /var/log/sa/sa08 -s 02:00:00 -e 04:00:00 Linux 5.14.0-362.24.1.el9_3.x86_64 (web-server-01) 04/08/2026 _x86_64_ (4 CPU) 02:00:01 AM CPU %user %nice %system %iowait %steal %idle 02:10:01 AM all 1.34 0.00 0.62 0.04 0.00 98.00 02:20:01 AM all 89.45 0.00 10.23 0.12 0.00 0.20 02:30:01 AM all 92.18 0.00 11.56 0.08 0.00 0.00 02:40:01 AM all 45.67 0.00 6.34 0.24 0.00 47.75

ファイル名のsa08は8日のデータを意味します。デフォルトで28日分が /var/log/sa/ に保持されるため、直近1ヶ月以内の障害であれば遡って調査できます。夜間バッチやcronジョブが疑わしい場合は、crontabの設定と照らし合わせて原因を特定してください。

4. vmstatでは見えないネットワークをsarで確認する(sar -n DEV)

vmstatの出力にはネットワークの情報が含まれていません。「CPU・メモリ・ディスクに問題がないのにレスポンスが遅い」という場合は、ネットワーク帯域の逼迫を疑ってください。sar -n DEV でインターフェースごとの通信量の履歴を確認できます。

# ネットワーク通信量の推移を表示する $ sar -n DEV Linux 5.14.0-362.24.1.el9_3.x86_64 (web-server-01) 04/09/2026 _x86_64_ (4 CPU) 08:00:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 08:10:01 AM eth0 124.56 98.23 45.67 12.34 0.00 0.00 0.12 0.04 08:20:01 AM eth0 856.34 742.18 312.45 198.67 0.00 0.00 0.15 0.25

rxkB/s:1秒あたりの受信データ量(KB)
txkB/s:1秒あたりの送信データ量(KB)

WebサーバーでtxkB/sが急増していればアクセス集中、rxkB/sが急増していればDDoS攻撃の可能性を疑います。loはループバックインターフェースなので、通常はeth0やens192など物理インターフェースに注目してください。

5. sarのデータをCSV形式でファイルに出力する(sadf)

sarのデータをCSV形式で出力しておくと、Excelやスプレッドシートでグラフ化して傾向分析に活用できます。sysstatに同梱されている sadf コマンドを使います。

# 昨日のCPUデータをCSV形式でファイルに出力する $ sadf -d /var/log/sa/sa08 -- -u > /tmp/cpu_20260408.csv # 出力内容を確認する $ head -2 /tmp/cpu_20260408.csv web-server-01;-1;2026-04-08 00:10:01 UTC;all;1.24;0.00;0.56;0.02;0.00;98.18 web-server-01;-1;2026-04-08 00:20:01 UTC;all;1.18;0.00;0.48;0.01;0.00;98.33

区切り文字がセミコロン(;)なので、Excelにインポートする際は区切り文字の設定に注意してください。

top・free・iostat・sarとの使い分け

vmstatと関連するコマンドを「何を調べたいか」で整理します。目的に応じて使い分けましょう。

目的 コマンド 特徴
システム全体の概要を一行で把握 vmstat 1 5 CPU・メモリ・I/O・スワップを一覧で確認できる
プロセス単位でCPU・メモリを監視 top リアルタイムでプロセスごとの使用率を表示
メモリの空き状況だけ確認 free -h 物理メモリとスワップの使用量を一目で確認
ディスクI/Oをデバイスごとに詳細確認 iostat -x 1 3 ディスクごとの読み書き速度・待ち時間を表示
過去のCPU・メモリ負荷推移を確認 sar -u -f /var/log/sa/sa08 sysstatが記録した過去28日分のデータを時系列で参照可能
ネットワーク通信量の履歴を確認 sar -n DEV vmstatでは見られないネットワークの送受信量を確認
実務での使い分けとしては、まず vmstat でシステム全体の状態を俯瞰し、ボトルネックの候補(CPU・メモリ・I/O)を絞り込んでから、topfreeiostat で詳細を調査するのが効率的です。「いつから高負荷だったのか」「過去にも同じことがあったか」を調べるために sar で過去のデータを確認する、というのが障害対応の典型的な流れです。

トラブルシュート:高負荷時のvmstatによる切り分け手順

「サーバーが重い」と報告を受けた場合の、vmstatを使った初動調査の手順を紹介します。

1. まずvmstatで全体像を把握する

# 1秒間隔で10回、タイムスタンプ付きで表示する $ vmstat -t 1 10

2行目以降の値を確認し、以下の3つの観点で切り分けます。

2. CPU負荷が原因の場合

判断基準:us + sy が高い、id が低い、r がコア数を超えている
次のアクション:topコマンドでCPU使用率の高いプロセスを特定する

# CPU使用率の高いプロセスを確認する $ top -b -n 1 | head -20

3. メモリ不足が原因の場合

判断基準:si・so が0以外で継続的に発生、swpd が増加傾向
次のアクション:free -hでメモリの全体像を確認し、ps auxでメモリ消費の多いプロセスを特定する

# メモリの状況を確認する $ free -h # メモリ消費の多いプロセスを上位10件表示する $ ps aux --sort=-%mem | head -10

4. ディスクI/Oが原因の場合

判断基準:wa が高い、b が多い、bi・bo が大きい
次のアクション:iostatでデバイスごとのI/O状況を確認し、iotopでプロセス単位のI/Oを特定する

# ディスクI/Oの詳細を確認する $ iostat -x 1 3 # プロセス別のI/O使用状況を確認する(iotopパッケージが必要) $ iotop

5. sarで過去の傾向も確認する

リアルタイムの原因を特定できたら、sarで過去のデータも確認しておきましょう。「同じ時間帯に毎日高負荷になっていないか」「いつ頃から負荷が増え始めたか」を把握できれば、再発防止策を立てやすくなります。

# 過去1週間のCPU使用率ピークを日ごとに確認する $ for d in $(seq -w 02 08); do echo "=== sa$d ==="; sar -u -f /var/log/sa/sa$d | tail -1; done === sa02 === Average: all 8.67 0.00 2.14 0.34 0.00 88.85 === sa03 === Average: all 12.34 0.00 3.45 0.56 0.00 83.65

「vmstat: command not found」が出た時の対処法

最小構成でインストールしたサーバーやコンテナ環境では、vmstatが含まれる procps-ng パッケージが入っていない場合があります。

# RHEL/CentOS/AlmaLinux の場合 $ sudo yum install procps-ng # Ubuntu/Debian の場合 $ sudo apt install procps

「Cannot open /var/log/sa/saXX」が出た時の対処法

sarコマンドで過去のデータを見ようとしたときに、以下のエラーが表示されることがあります。

$ sar -u Cannot open /var/log/sa/sa09: No such file or directory Please check if data collecting is enabled

sysstatのデータ収集がまだ動いていないことが原因です。以下の順に確認してください。

1. sysstatサービスが有効になっているか確認する

$ systemctl is-enabled sysstat enabled $ systemctl is-active sysstat-collect.timer active

2. インストール直後で最初の収集がまだ行われていない場合

手動でデータ収集を1回実行して、すぐにsarが使えるようにします。

# 手動でデータ収集を実行する(RHEL系) $ sudo /usr/lib64/sa/sa1 1 1 # Ubuntu/Debian の場合 $ sudo /usr/lib/sysstat/sa1 1 1 # 再度sarを実行する $ sar -u

本記事のまとめ

やりたいこと コマンド
システム全体の統計を1回表示する vmstat
1秒間隔で5回、継続監視する vmstat 1 5
ヘッダーを1回だけ表示して継続監視する vmstat -n 1
メモリ・CPUのサマリを一覧表示する vmstat -s
ディスクごとの統計を表示する vmstat -d
特定パーティションのI/O統計を表示する vmstat -p /dev/sda1
タイムスタンプ付きで表示する vmstat -t 1 10
メモリをMB単位で表示する vmstat -SM 1 3
アクティブ/非アクティブメモリを表示する vmstat -a
CPUコア数を確認する(r列との比較用) nproc
メモリ消費の多いプロセスを確認する ps aux --sort=-%mem | head -10
ディスクI/Oの詳細を確認する iostat -x 1 3
過去のCPU使用率を確認する(sar) sar -u -f /var/log/sa/sa08
過去のメモリ使用率を確認する(sar) sar -r -f /var/log/sa/sa08
ネットワーク通信量を確認する(sar) sar -n DEV
sarデータをCSVに出力する sadf -d /var/log/sa/sa08 -- -u > output.csv
vmstatはシステム全体のボトルネックを素早く切り分けるための必須ツールです。「今の状態」をvmstatで把握し、「過去の傾向」をsarで振り返る。この2つのコマンドを組み合わせることで、障害対応からキャパシティプランニングまで幅広く対応できます。

sarは「記録されていないと見られない」のが唯一の弱点です。サーバーを構築したらsysstatを入れる、というのを習慣にしてください。「あのとき入れておけば」と後悔するのは、たいてい障害が起きた後です。

関連記事:
topコマンドでCPU・メモリ使用率を確認する方法
freeコマンドでメモリ使用量を確認する方法
crontabコマンドの設定と書き方

vmstatの見方が分かったら、次はサーバー構築の「型」を身につけませんか?

vmstatでシステムの状態を診断できるようになったら、次のステップはサーバーの構築・運用を体系的に学ぶことです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

===== EXCERPT (entry_excerpt) ===== vmstatコマンドの使い方を実例付きで解説。出力の各列(procs・memory・swap・io・cpu)の読み方、継続監視、-s・-d・-p・-tオプション、top・iostatとの使い分け、高負荷時の切り分け手順まで網羅。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。