パフォーマンスの習得: Sysstatツールの実践的ガイド
パフォーマンス監視は、信頼性の高いLinuxシステム管理の基盤です。リソース使用率を追跡するための堅牢なツールなしでは、ボトルネックの特定は推測となり、非効率的なトラブルシューティングやリアクティブなスケーリングにつながります。sysstatユーティリティスイートは、すべての重要なリソース領域にわたるシステムアクティビティを収集、分析、レポートするための、不可欠なネイティブLinuxツールキットです。
このガイドでは、主にシステムアクティビティレポーター(sar)に焦点を当て、sysstatツールセットの包括的な概要を提供します。インストール、履歴ロギングのための設定、およびCPU、メモリ、ディスクI/O、ネットワーク使用率に関するリアルタイムおよび事後分析でのパフォーマンスベースラインの確立とリソース競合の特定のための実用的なコマンド例について説明します。
1. Sysstatのインストールと初期設定
sysstatパッケージは、通常、すべての主要なLinuxディストリビューションの標準リポジトリで利用可能です。
1.1 インストールコマンド
お使いのシステムに適したパッケージマネージャーコマンドを使用してください。
Debian/Ubuntu:
sudo apt update
sudo apt install sysstat
RHEL/CentOS/Fedora:
sudo yum install sysstat
# または新しいシステムではdnfを使用
sudo dnf install sysstat
1.2 履歴データ収集の有効化
sarが真に役立つためには、履歴データを収集する必要があります。デフォルトでは、インストール時にcronジョブまたはsystemdタイマーが設定されることが多いですが、確認は不可欠です。
最新のシステムでは、sysstatサービスがアクティブであることを確認してください。
sudo systemctl enable --now sysstat
設定ファイル
データ収集の頻度は、通常/etc/default/sysstat(Debian/Ubuntu)または/etc/sysconfig/sysstat(RHEL/CentOS)にある設定ファイルによって制御されます。ENABLEDまたはHISTORY設定を探してください。ENABLED="true"を設定すると、日次データ収集が保証されます。
ヒント: デフォルトでは、
sysstatデータファイルは/var/log/sa/に、saXX(XXは月の日付)のようなファイル名で保存されます。
2. コアユーティリティ: システムアクティビティレポーター (sar)
sarは統計を表示するための主要なインターフェースです。リアルタイムデータを表示することも、以前収集された履歴データを分析することもできます。
2.1 リアルタイム監視の基本構文
基本構文は、指定された間隔で指定された回数だけ、特定のメトリクスをレポートするように設計されています。
sar [オプション] [間隔] [回数]
例: 一般的なCPU統計を3秒間隔で10回レポートする場合。
sar -u 3 10
| オプション | 説明 |
|---|---|
-u |
CPU使用率(デフォルト) |
-r |
メモリとページングの統計 |
-d |
ブロックデバイスアクティビティ(ディスクI/O) |
-n |
ネットワーク統計(例:インターフェース統計の場合は-n DEV) |
-q |
実行キューとロードアベレージ |
-W |
スワッピングアクティビティ(ページング) |
-A |
すべてのメトリクス(包括的なスナップショットに有用) |
3. 主要なパフォーマンスメトリクスと実践的なsarの例
sarの出力を理解するには、どのメトリクスがパフォーマンスの健全性やストレスを示しているかを知る必要があります。
3.1 CPU使用率 (sar -u)
CPU使用率は、ボトルネックを探す最初の場所になることが多いです。特定のカテゴリでの高い使用率は、ワークロードの性質を示します。
sar -u 5 3
| メトリクス | 説明 | ボトルネックの兆候 |
|---|---|---|
%user |
ユーザーレベルのプロセス実行に費やされたCPU時間。 | 高い場合はアプリケーション/サービスの飽和を示します。 |
%system |
カーネル/システムタスクの実行に費やされたCPU時間。 | 高い場合は集中的なシステムコールやドライバの問題を示唆します。 |
%iowait |
I/O操作(ディスク/ネットワーク)を待機してアイドル状態のCPU時間。 | 高い場合はCPU不足ではなく、I/Oボトルネックを示します。 |
%idle |
何も待機せずにアイドル状態のCPU時間(利用可能)。 | 低い(例: < 5%)場合はCPUの飽和を示唆します。 |
3.2 メモリとページング (sar -r および sar -W)
メモリ統計は、消費量と、システムがスワッピングやページングに頼っているかどうかを示します。
メモリ使用率 (sar -r):
sar -r 1 5
kbavail(利用可能なメモリ)に注目してください。kbmemfreeが低い場合でも、kbcachedとkbbuffersが高い場合は、メモリがカーネルのキャッシュメカニズムによって効率的に使用されていることを意味します。
スワッピングアクティビティ (sar -W):
sar -W 1 5
pswpin/s(スワップインされたページ数/秒)とpswpout/s(スワップアウトされたページ数/秒)を確認します。ここに有意なゼロ以外の値がある場合、システムが積極的にスワップしており、メモリ不足(強力なボトルネック)を示していることを意味します。
3.3 ディスクI/Oアクティビティ (sar -d)
ディスクアクティビティの監視は、データベースサーバーや集中的に使用されるストレージシステムにとって極めて重要です。
sar -d 3 5
この出力では、特定のデバイス(例: sda、vda)を特定する必要があります。主なメトリクスには以下が含まれます。
tps: 1秒あたりの転送回数(高い値は高いI/O要求を示します)。rd_sec/s&wr_sec/s: 1秒あたりの読み取り/書き込みデータ量。%util: デバイスがリクエストの処理にビジーであった時間の割合。%utilが100%に近づくと、ストレージシステムは飽和しています。
3.4 ネットワーク統計 (sar -n)
sarはさまざまなネットワーク層のアクティビティを報告できます。最も一般的なチェックはインターフェースアクティビティ(DEV)です。
sar -n DEV 5 1
このコマンドは、各ネットワークインターフェースについて、rxpk/s(1秒あたりの受信パケット数)やtxkB/s(1秒あたりの送信キロバイト数)などのメトリクスを表示します。これを使用して、過負荷または潜在的なエラーを経験しているインターフェースを特定します。
4. 履歴分析とベースラインの作成
sysstatの真の力は、長期間にわたるシステムアクティビティを分析できる点にあります(システムにとって通常の動作であるパフォーマンスベースラインを確立するために不可欠です)。
4.1 前日のデータの分析
前日に収集されたデータを表示するには、-fフラグを使用して日次saXXファイルのパスを指定します。
例: 現在の月の10日目に収集されたCPU統計を表示する場合。
sar -u -f /var/log/sa/sa10
その日の特定の時間ウィンドウにわたる統計を確認するには、-s(開始時刻)および-e(終了時刻)フラグを追加します(24時間形式を使用)。
# 10日の14:00から16:30までのネットワーク統計を表示
sar -n DEV -f /var/log/sa/sa10 -s 14:00:00 -e 16:30:00
4.2 ベースラインの確立
- データ収集: 通常のピーク時と低負荷時の両方で1〜2週間
sysstatを実行します。 - 正常値の特定: 履歴データ(
sar -f)を分析し、平均CPU使用率(%user、%system)、ピークI/O遅延(%util)、および平均メモリ使用量を決定します。 - しきい値の定義: ベースラインと比較して持続的な逸脱(例:
%iowaitが2倍になる、または%idleが10分以上5%未満になる)は、調査を必要とするパフォーマンス問題を示します。
5. Sysstatをサポートするツール
sarは主要なツールですが、sysstatスイートには、焦点を絞った詳細なレポートを提供する専門のユーティリティが含まれています。
5.1 iostat (入出力統計)
iostatは、特にストレージのボトルネックを診断する場合に役立つ、デバイスの利用状況に特化した詳細なメトリクスを提供します。
# 2秒間隔で4回、拡張統計(x)を含むディスク統計をレポート
iostat -xd 2 4
主なiostatメトリクス:
%util: I/Oリクエストがデバイスに発行されたCPU時間の割合(飽和の重要な指標)。await: デバイスに発行されたI/Oリクエストの平均待機時間(ミリ秒単位)。高いawaitはストレージ応答が遅いことを示します。
5.2 mpstat (マルチプロセッサ統計)
CPUスケジューリングの問題やコア間の不均一なワークロード分散が疑われる場合、mpstatは、sar -uが集計するのとは対照的に、プロセッサごとの使用状況統計を提供します。
# すべてのCPU (A) の使用状況を2秒ごとに1回表示
mpstat -P ALL 2 1
これは、他のコアがアイドル状態のままであるのに対し、単一スレッドのアプリケーションが単一コアを飽和させている状況を特定したり、ハイパースレッディングの効率を診断したりするのに非常に貴重です。
結論
sysstatツールセットは、Linuxのパフォーマンスチューニングとシステム監視の基礎的な要素です。sarユーティリティを習得することにより、システム管理者は単なる瞬間的な監視を超えて、リソース消費の深い履歴分析を実施する能力を獲得します。CPU、メモリ、I/O、ネットワークアクティビティを監視するためのsarの定期的な使用と、強固なパフォーマンスベースラインの確立を組み合わせることで、リアクティブなトラブルシューティングがプロアクティブなシステム管理へと変貌し、最適なリソース利用率とシステム安定性が保証されます。