sar(System Activity Reporter)は、Linux環境における包括的なシステムパフォーマンス分析ツールです。sysstatパッケージに含まれ、CPU負荷、メモリ使用量、ディスクI/O、ネットワークトラフィック、スワップ動作、プロセス状態など、多角的なリソース指標を時系列で収集・報告できます。本稿では、CentOS 7以降およびRHEL系ディストリビューションを想定し、実務で即活用可能なsarの使い方を再構成して解説します。
CPU使用率の詳細分析
リアルタイムでCPUの稼働状況を確認するには:
sar -u 2 5
出力項目の意味:
%usr:ユーザープロセスが消費したCPU時間の割合%sys:カーネル空間での処理(システムコールなど)に要した時間%iowait:I/O完了を待機中のCPU時間 — 10%を超えるとディスクボトルネックの可能性が高い%idle:アイドル状態の時間 — 持続的に5%未満ならCPUリソース逼迫のサイン
マルチコア環境では、各論理CPU単位の負荷を可視化するために-P ALLを併用:
sar -P ALL 1 3
メモリとスワップの健康診断
物理メモリの利用状況を把握するには:
sar -r 3 4
主なカラム:
kbmemfree:空きメモリ(KB)%memused:使用率(推奨上限:85%)kbcached:ページキャッシュとして使われているメモリ量kbcommit:現在のワークロードを維持するために必要な最小メモリ(物理+SWAP)
スワップ領域の過剰な読み書きを検知するには:
sar -W 2 6
pswpin/s(スワップイン)とpswpout/s(スワップアウト)が共に継続的に1.0以上であれば、メモリ不足によるページングが発生している可能性があります。
ディスクI/Oのパフォーマンス評価
デバイス単位のI/O特性を分析するには:
sar -d -p 1 4
-pオプションにより、dev8-0のような抽象名ではなくsdaといった実際のデバイス名が表示されます。注目すべき指標:
%util:デバイスのI/O使用率 — 100%に近い値が続く場合、I/O待ちが発生しており、ストレージがボトルネックawait:I/O要求の平均応答時間(ms)— ディスク種別に応じた基準値(HDD: <15ms, SSD: <2ms)を上回ると遅延が顕著avgrq-sz:1回のI/Oで転送される平均セクタ数(512バイト単位)
ネットワークインタフェースのトラフィック監視
主要なインターフェースの通信状況を取得:
sar -n DEV 2 3
代表的な列:
rxkB/s,txkB/s:受信/送信帯域(KB/秒)rxpck/s,txpck/s:パケット数(個/秒)rxmcst/s:マルチキャストパケット受信数 — 異常な増加はネットワークスパムや設定ミスの兆候
エラー統計を同時に確認したい場合は、-n EDEVを併用:
sar -n EDEV 2 3
rxerr/s(受信エラー)、rxdrop/s(受信破棄)、coll/s(衝突数)が非ゼロである場合、物理層(ケーブル、NIC、スイッチポート)の問題を疑います。
データの永続化と履歴分析
監視結果をバイナリ形式で保存し、後から解析する手順:
# 現在時刻から30秒間、2秒間隔でCPU情報を記録
sar -u -o /var/log/sar/cpu-$(date +%s).sardb 2 15
# 保存されたデータを再読込(テキスト形式で出力)
sadf -d /var/log/sar/cpu-1715823456.sardb | head -20
※ 注意:-oで生成されるファイルはバイナリであり、直接catやvimで開けません。解析にはsadfコマンドまたはsar -fを使用します。
負荷とプロセス活動の関連性把握
システム全体の負荷状況を俯瞰するには:
sar -q 3 5
重要な指標:
runq-sz:実行待ちキュー内のプロセス数 — CPUコア数を超えるとコンテキストスイッチが頻発ldavg-1,ldavg-5,ldavg-15:1分・5分・15分の平均負荷 —ldavg-1 > ldavg-5 > ldavg-15の傾向は負荷上昇中を示唆
さらに、特定PIDのリソース消費を追跡するには:
sar -x 1234 1 10
対象プロセスのCPU使用率、実行CPU、ページフォールト数などが時系列で得られます。
カーネルリソース制限の確認
ファイルハンドルやinodeの枯渇リスクを事前に検知するには:
sar -v 2 4
特に以下の2項目を注視:
file-nr:現在使用中のファイルハンドル数(第1値)と最大許容数(第3値)の差分が小さい → システム全体のファイルオープン上限に近づいているinode-nr:使用中のinode数 — ファイル数が極端に多いアプリケーション(例:ログローテーション不備)で注意
カーネルパラメータの調整は/proc/sys/fs/file-maxを編集、またはsysctl.confにfs.file-max = 65536を追加して永続化します。