1. ホーム
  2. オペレーティングシステム
  3. リナックス

Linux sarコマンドによるシステム性能の詳細解析事例

2022-01-13 16:23:24

強力なsarコマンドは、システムのパフォーマンスを分析するための最も重要なツールの1つです。システムのCPU、ランキュー、ディスクの読み書き(I/O)、パーティション(スワップ領域)、メモリ、CPU割り込み、ネットワーク性能データなどを総合的に表示します。

sarコマンドの基本的な書式は次のとおりです。

[root@localhost ~]# sar [options] [-o filename] interval [count]

このコマンドフォーマットにおける各パラメータの意味は以下のとおりです。

  • -o filename: filename はファイルの名前である。このオプションは、コマンドの結果がバイナリ形式でファイルに保存されることを示す。
  • interval: サンプリング間隔を表します。このパラメータは手動で設定する必要があります。
  • count: サンプル数。オプションのパラメータで、デフォルト値は1です。
  • options: コマンドラインオプション。sarコマンドには多くのオプションが用意されているので、ここではすべてを紹介せず、表1に示すような一般的なオプションとそれに対応する機能のみを列挙します。

<テーブル <キャプション 表1 sarのコマンドラインオプションと機能 sarコマンドのオプション 機能紹介 -A システム上のすべてのリソースデバイス(CPU、メモリ、ディスク)の動作状態を表示します。 -u サンプリング時間中のシステム上の全CPUの負荷状況を表示します。 -P システム上の指定された CPU の現在の使用率を表示します。 -d サンプリング時間中のシステム上の全ハードディスクデバイスの使用状況を表示します。 -r プレゼンスサンプリング時間中のシステム内の使用量を表示します。 -b サンプル時間中のバッファの使用量を表示します。 -v inodeノード、ファイル、その他のカーネル・テーブルの統計情報を表示します。 -n ネットワークの動作状態を表示します。このオプションの後に、DEV(ネットワークインターフェイス情報を表示)、EDEV(ネットワークエラー統計を表示)、SOCK(ソケット情報を表示)、FULL(DEV、EDEV、SOCKを使った場合と同等)などを追加することができます。その他のオプションについては、man sarコマンドを実行することで確認できます。 -q 実行リスト内のプロセス数、プロセスサイズ、平均システム負荷などを表示します。 -R サンプリング時のプロセスの活性度を表示する。 -y サンプリング時のエンドデバイスのアクティビティを表示します。 -w サンプリング時間中のシステムスイッチングアクティビティの状態を表示する。

<ブロッククオート

sarコマンドで利用できるオプションや機能についての詳細は、man sarコマンドを実行することで確認することができます。

例1
システムCPUの負荷状況を、3秒ごとに5回カウントして照合したい場合は、次のコマンドを実行します。

[root@localhost ~]# sar -u 3 5
Linux 2.6.32-431.el6.x86_64 (localhost) 10/25/2019 _x86_64_ (1 CPU)

06:18:23 AM CPU %user %nice %system %iowait %steal %idle
06:18:26 AM all 12.11 0.00 2.77 3.11 0.00 82.01
06:18:29 AM all 6.55 0.00 2.07 0.00 0.00 0.00 91.38
06:18:32 AM all 6.60 0.00 2.08 0.00 0.00 0.00 91.32
06:18:35 AM all 10.21 0.00 1.76 0.00 0.00 0.00 88.03
06:18:38 AM all 8.71 0.00 1.74 0.00 0.00 0.00 89.55
Average: all 8.83 0.00 2.09 0.63 0.00 88.46

この出力における各リスト項目の意味は次のとおりです。

  • user:ユーザーモードで消費されたCPU時間の割合です。
  • nice: スケジューリングの優先順位を nice 経由で変更したプロセスによって、ユーザーモードで消費された CPU 時間の割合。
  • system: システムモードで消費される CPU 時間の割合。
  • iowait:アイドル状態の原因となるディスクI/Oの待ち時間に消費されたCPU時間の割合です。
  • Xenなどのオペレーティングシステム仮想化技術を使用して、他の仮想CPUの計算を待つために費やされる時間の割合。
  • %idle: CPUアイドル時間の割合。

[例2】です。]
システムディスクの読み書きの性能を確認したい場合は、以下のコマンドを実行します。

[root@localhost ~]# sar -d 3 5
Linux 2.6.32-431.el6.x86_64 (localhost) 10/25/2019 _x86_64_ (1 CPU)

06:36:52 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:36:55 AM dev8-0 3.38 0.00 502.26 148.44 0.08 24.11 4.56 1.54

06:36:55 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:36:58 AM dev8-0 1.49 0.00 29.85 20.00 0.00 1.75 0.75 0.11

06:36:58 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:01 AM dev8-0 68.26 6.96 53982.61 790.93 3.22 47.23 3.54 24.17

06:37:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:04 AM dev8-0 111.69 3961.29 154.84 36.85 1.05 9.42 3.44 38.43

06:37:04 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:07 AM dev8-0 1.67 136.00 2.67 83.20 0.01 6.20 6.00 1.00

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 34.45 781.10 9601.22 301.36 0.78 22.74 3.50 12.07

この出力における各リストヘッダの意味は以下の通りです。

  • tps: 1秒あたりの物理ディスクからのI/O数。複数の論理要求が1つのI/Oディスク要求にまとめられ、1回の転送サイズは不定であることに注意。
  • rd_sec/s: 1秒あたりのセクタ読み出し回数です。
  • wr_sec/s: 1秒間に書き込むセクタ数。
  • avgrq-sz: デバイスI/O操作ごとの平均データサイズ(セクタ)。
  • avgqu-sz: ディスク要求キューの平均長さ。
  • await: ディスク操作が要求されてからシステムが処理を完了するまでの、要求キュー待ち時間を含む1要求あたりの平均消費時間(ミリ秒単位、1秒=1000ミリ秒)。
  • svctm: システムが各要求を処理するために消費した平均時間。ただし、要求キューで消費された時間は除く。
  • util:CPUに対するI/O要求の割合で、割合が大きいほど飽和していることを示す。

また、システムのメモリ使用量を確認したい場合は、sar -r 5 3、ネットワークの動作状況を確認したい場合は、sar -n DEV 5 3、といったコマンドを実行することができます。ネットワークの状態を確認したい場合は、sar -n DEV 5 3、などを実行します。その他のパラメータについては、ここでは具体的な例を挙げませんので、ご自身でテストして結果をご覧ください。

Linuxのsarコマンドでシステムのパフォーマンス事例を分析する方法は、今回で終了です。Linuxのsarコマンドの詳細については、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。