Linux sar コマンド
一、sar コマンドとは
sar(System Activity Reporter)は Linux システム上の強力なパフォーマンス監視ツールで、sysstat ツールキットの一部です。システムのさまざまなアクティビティ情報を収集、報告、保存できます。以下が含まれます:
- CPU使用状況
- メモリ使用率
- I/Oアクティビティ
- ネットワーク統計
- プロセスアクティビティ
- デバイス負荷など
1.1 sar コマンドの利点
- 履歴データ分析:過去の任意の時点のシステム状態を確認できます
- 包括的な監視:システムの主要なパフォーマンス指標を網羅します
- 低オーバーヘッド:データ収集がシステムパフォーマンスに与える影響はごくわずかです
- 自動化:定期的に自動でデータを収集するよう設定できます
二、インストールと基本設定
2.1 sysstat パッケージのインストール
ほとんどのLinuxディストリビューションでは、sarコマンドはsysstatパッケージをインストールすることで入手できます:
# Ubuntu/Debian sudo apt-get install sysstat # CentOS/RHEL sudo yum install sysstat # Fedora sudo dnf install sysstat
2.2 データ収集の有効化
インストール後、データ収集サービスを有効にする必要があります:
例
# 設定ファイルを編集
sudo vi /etc/default/sysstat
# ENABLED="false" を次のように変更
ENABLED="true"
# サービスを再起動
sudo systemctl restart sysstat
sudo vi /etc/default/sysstat
# ENABLED="false" を次のように変更
ENABLED="true"
# サービスを再起動
sudo systemctl restart sysstat
デフォルトでは、sar は10分ごとにデータを収集し、保存先は/var/log/sysstat/ディレクトリです。
三、基本構文とよく使うパラメータ
3.1 基本構文形式
sar [选项] [间隔时间] [次数]
3.2 よく使うパラメータの説明
| パラメータ | 説明 |
|---|---|
| -A | すべてのレポートを表示 |
| -u | CPU使用率を表示 |
| -r | メモリ使用状況を表示 |
| -b | I/Oおよび転送レート統計を表示 |
| -n DEV | ネットワークデバイス統計を表示 |
| -q | システム負荷とキューの長さを表示 |
| -d | ディスクアクティビティを表示 |
| -P ALL | CPUごとの統計を表示 |
| -s | 開始時刻を指定 |
| -e | 終了時刻を指定 |
| -f | 指定したファイルからデータを読み込む |
四、実際の応用例
4.1 CPU使用率のリアルタイム監視
例
# 2秒ごとに更新、合計5回表示
sar -u 2 5
sar -u 2 5
出力例:
Linux 5.4.0-91-generic (hostname) 03/15/2023 _x86_64_ (4 CPU) 10:30:01 AM CPU %user %nice %system %iowait %steal %idle 10:30:03 AM all 5.12 0.00 1.02 0.51 0.00 93.35 10:30:05 AM all 6.23 0.00 1.34 0.23 0.00 92.20
4.2 過去のメモリ使用状況の確認
例
# 今日のメモリ使用状況を確認
sar -r
# 指定した日付のデータを確認(ファイルの指定が必要)
sar -r -f /var/log/sysstat/sa15 # 15日のデータ
sar -r
# 指定した日付のデータを確認(ファイルの指定が必要)
sar -r -f /var/log/sysstat/sa15 # 15日のデータ
4.3 ディスクI/Oアクティビティの監視
例
# ディスクアクティビティを監視、1秒ごとに更新、合計10回
sar -d 1 10
sar -d 1 10
4.4 ネットワークインターフェース統計の確認
例
# ネットワークインターフェースアクティビティを監視
sar -n DEV 1 5
sar -n DEV 1 5
五、高度な使い方とテクニック
5.1 複数の指標を組み合わせた監視
例
# CPU、メモリ、ディスクを同時に監視
sar -urdb 1 5
sar -urdb 1 5
5.2 特定の時間帯のレポート生成
例
# 午前9時から10時までのCPU使用状況を確認
sar -u -s 09:00:00 -e 10:00:00
sar -u -s 09:00:00 -e 10:00:00
5.3 出力をファイルに保存
例
# 監視結果をファイルに保存
sar -A 1 10 > system_report.log
sar -A 1 10 > system_report.log
5.4 特定のCPUコアの監視
例
# CPU0の使用状況を監視
sar -P 0 1 5
sar -P 0 1 5
六、データ解釈ガイド
6.1 CPU指標の解釈
| 指標 | 意味 | 正常範囲 |
|---|---|---|
| %user | ユーザー空間CPU使用率 | <70% |
| %system | カーネル空間CPU使用率 | <30% |
| %iowait | CPUのI/O待ち時間 | <5% |
| %idle | CPUアイドル時間 | >20% |
6.2 メモリ指標の解釈
| 指標 | 意味 |
|---|---|
| kbmemfree | 空き物理メモリ(KB) |
| kbmemused | 使用済み物理メモリ(KB) |
| %memused | メモリ使用率 |
| kbbuffers | バッファが使用するメモリ(KB) |
| kbcached | キャッシュが使用するメモリ(KB) |
6.3 ディスク指標の解釈
| 指標 | 意味 |
|---|---|
| tps | 1秒あたりの転送回数 |
| rd_sec/s | 1秒あたりの読み取りセクタ数 |
| wr_sec/s | 1秒あたりの書き込みセクタ数 |
| %util | デバイス使用率 |
七、よくある問題のトラブルシューティング
7.1 CPUボトルネックの特定
もし%user 或 %system80%を超えて継続する場合、次の可能性があります:
- アプリケーションの計算負荷が高い
- システムコールが多すぎる
- コードの最適化またはCPUリソースの追加が必要
7.2 メモリ不足の判断
次の状況が同時に発生する場合、メモリ不足の可能性があります:
%memused90%を超えて継続kbcached値が非常に低い- スワップパーティション(
kbswpused)の使用量が高い
7.3 I/Oボトルネックの特定
%iowait高とディスク%util高は次のことを示します:
- ディスクI/Oがボトルネックになっている
- より高速なストレージデバイスが必要かもしれない
- またはI/O集中型の操作を最適化する
その他の拡張