sar を使用すると、さまざまな Linux サブシステム (CPU、メモリ、I/O など) のパフォーマンスを実際に監視できます。時間。
sar を使用すると、すべてのパフォーマンス データを継続的に収集して保存し、履歴分析を行ってボトルネックを特定することもできます。
sar は sysstat パッケージの一部です。
この記事では、sysstat パッケージ (sar ユーティリティを含む) をインストールして構成する方法と、sar を使用して次の Linux パフォーマンス統計を監視する方法について説明します。
<オール>これは、sar ユーティリティに必要な唯一のガイドです。したがって、今後の参照用にこれをブックマークしてください。
I. Sysstat のインストールと構成
Sysstat パッケージのインストール
まず、最新バージョンの sar がシステムで利用可能であることを確認してください。ディストリビューションに応じて、次のいずれかの方法でインストールしてください。
sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm
ソースから Sysstat をインストール
sysstat ダウンロード ページから最新バージョンをダウンロードします。
wget を使用してダウンロードすることもできます
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron
注: オプション –enable-install-cron を必ず渡してください。これにより、次のことが自動的に行われます。このオプションで sysstat を構成しない場合は、この厄介な作業を自分で手動で行う必要があります。
- /etc/rc.d/init.d/sysstat を作成します
- /etc/rc.d/rc*.d/ ディレクトリから /etc/rc.d/init.d/sysstat への適切なリンクを作成して、Linux の起動プロセス中に sysstat を自動的に開始します。
- たとえば、/etc/rc.d/rc3.d/S01sysstat は自動的に /etc/rc.d/init.d/sysstat にリンクされます
./configure の後に、以下に示すようにインストールします。
make make install
注: これにより、sar およびその他の systat ユーティリティが /usr/local/bin にインストールされます
インストールしたら、「sar -V」を使用して sar のバージョンを確認します。バージョン 10 は、sysstat の現在の安定バージョンです。
$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)
最後に、sar が機能することを確認します。たとえば、以下はシステムの CPU 統計を 3 回 (1 秒間隔で) 表示します。
$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Sysstat のユーティリティ部分
以下は、その他の sysstat ユーティリティです。
- サー すべてのシステム アクティビティ統計を収集して表示します。
- sadc 「システム アクティビティ データ コレクタ」の略です。これは、データ収集を行う sar バックエンド ツールです。
- sa1 システム アクティビティをバイナリ データ ファイルに保存します。 sa1 は、この目的のために sadc に依存しています。 sa1 は cron から実行されます。
- sa2 収集された統計の日次要約を作成します。 sa2 は cron から実行されます。
- 悲しい CSV、XML、およびその他のさまざまな形式で sar レポートを生成できます。これを使用して、sar データを他のツールと統合します。
- iostat CPU、I/O 統計を生成します
- mpstat CPU 統計を表示します。
- pidstat プロセス ID (PID) に基づいて統計を報告します
- nfsiostat NFS I/O 統計を表示します。
- cifsiostat CIFS 統計を生成します。
この記事では、sysstat の基礎と sar ユーティリティに焦点を当てています。
cron ジョブを使用して sar 統計を収集します – sa1 および sa2
履歴 sar データを収集する sysstat ファイルを /etc/cron.d ディレクトリの下に作成します。
# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A
ソースから sysstat をインストールした場合、sa1 と sa2 のデフォルトの場所は /usr/local/lib/sa です。ディストリビューションの更新方法 (例:yum、up2date、または apt-get) を使用してインストールした場合、これは /usr/lib/sa/sa1 および /usr/lib/sa/sa2 である可能性があります。
注意 :cron エントリを理解するには、Linux Crontab:15 Awesome Cron Job Examples をお読みください。
/usr/local/lib/sa/sa1
- これは 10 分ごとに実行され、過去の参照用に sar データを収集します。
- sar 統計を 5 分ごとに収集する場合は、上記の /etc/cron.d/sysstat ファイルで */10 を */5 に変更してください。
- これにより、データが /var/log/sa/saXX ファイルに書き込まれます。 XX は日です。 saXX ファイルはバイナリ ファイルです。テキスト エディタで開いても、その内容を表示することはできません。
- たとえば、今日が月の 26 日である場合、sa1 は sar データを /var/log/sa/sa26 に書き込みます
- sa1 には、interval (秒単位) と count の 2 つのパラメータを渡すことができます。
- 上記の crontab の例:sa1 1 1 は、sa1 が 1 秒間隔で 1 回 (10 分ごとに) sar データを収集することを意味します。
/usr/local/lib/sa/sa2
- これは真夜中近く (23:53) に実行され、sar データの日次要約レポートが作成されます。
- sa2 は、/var/log/sa/sarXX ファイルを作成します (これは、sa1 によって作成される saXX ファイルとは異なることに注意してください)。 sa2 によって作成されたこの sarXX ファイルは、テキスト エディターで表示できる ASCII ファイルです。
- これにより、1 週間以上経過した saXX ファイルも削除されます。そのため、毎週実行して /var/log/sa/* ファイルを別のディレクトリにコピーし、sar データの履歴分析を行う簡単なシェル スクリプトを作成してください。
II. 10 の実用的な SAR の使用例
sar を呼び出す方法は 2 つあります。
<オール>以下のすべての例で、当日の特定のパフォーマンス データを表示する方法を説明します。特定の日を探すには、sar コマンドの末尾に「-f /var/log/sa/saXX」を追加します。
すべての sar コマンドは、出力の最初の行として次のようになります。
$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)
- Linux 2.6.18-194.el5PAE – システムの Linux カーネル バージョン。
- (dev-db) – sar データが収集されたホスト名。
- 2011 年 3 月 26 日 – sar データが収集された日付。
- _i686_ – システム アーキテクチャ
- (8 CPU) – このシステムで使用可能な CPU の数。マルチコア システムでは、これはコアの総数を示します。
1.すべての CPU の CPU 使用率 (sar -u)
これにより、すべての CPU の累積リアルタイム CPU 使用率が得られます。 「1 3」は 1 秒ごとに合計 3 回報告します。ほとんどの場合、最後のフィールド「%idle」に注目して、CPU 負荷を確認します。
$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
以下にいくつかのバリエーションを示します:
- sar -u その時点までに収集された当日の CPU 使用率を表示します。
- sar -u 1 3 リアルタイムの CPU 使用率を 1 秒ごとに 3 回表示します。
- sar -u ALL 「sar -u」と同じですが、追加のフィールドが表示されます。
- sar -u ALL 1 3 「sar -u 1 3」と同じですが、追加のフィールドが表示されます。
- sar -u -f /var/log/sa/sa10 sa10 ファイルから月の 10 日の CPU 使用率を表示します。
2.個々の CPU またはコアの CPU 使用率 (sar -P)
マシンに 4 つのコアがあり、個々のコアが何をしているかを確認したい場合は、次の手順を実行してください。
「-P ALL」は、個々のすべてのコアの統計を表示する必要があることを示します。
次の例では、「CPU」の列 0、1、2、および 3 は、対応する CPU コア番号を示します。
$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
「-P 1」は、2 番目のコアの統計のみを表示する必要があることを示します。 (コア番号は 0 から始まることに注意してください)。
$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89
以下にいくつかのバリエーションを示します:
- sar -P ALL 当日のすべてのコア別の CPU 使用率を表示します。
- sar -P ALL 1 3 すべてのコアのリアルタイムの CPU 使用率を 1 秒ごとに 3 回表示します (すべてのコアで分類)。
- sar -P 1 当日のコア番号 1 の CPU 使用率を表示します。
- sar -P 1 1 3 コア番号 1 のリアルタイム CPU 使用率を 1 秒ごとに 3 回表示します。
- sar -P ALL -f /var/log/sa/sa10 sa10 ファイルから、月の 10 日分の CPU 使用率をすべてのコア別に表示します。
3.空きメモリと使用済みメモリ (sar -r)
これにより、メモリー統計が報告されます。 「1 3」は 1 秒ごとに合計 3 回報告します。ほとんどの場合、空きメモリと使用済みメモリの「kbmemfree」と「kbmemused」に注目します。
$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204
以下にいくつかのバリエーションを示します:
- sar -r
- sar -r 1 3
- sar -r -f /var/log/sa/sa10
4.使用されるスワップ領域 (sar -S)
これにより、スワップ統計が報告されます。 「1 3」は 1 秒ごとに合計 3 回報告します。 「kbswpused」と「%swpused」が 0 の場合、システムはスワッピングしていません。
$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00
以下にいくつかのバリエーションを示します:
- sar -S
- sar -S 1 3
- sar -S -f /var/log/sa/sa10
注:
- 「sar -R」を使用して、システムによって 1 秒あたりに解放、使用、およびキャッシュされたメモリ ページの数を特定します。
- 「sar -H」を使用して、使用されて利用可能なヒュージページ (KB 単位) を特定します。
- 「sar -B」を使用して、ページング統計を生成します。つまり、1 秒あたりにディスクからページイン (およびページアウト) された KB 数
- 「sar -W」を使用して、ページ スワップ統計を生成します。つまり、1 秒あたりのページ スワップ イン (およびスワップ アウト)
5.全体的な I/O アクティビティ (sar -b)
これは、I/O 統計を報告します。 「1 3」は 1 秒ごとに合計 3 回報告します。
次のフィールドは、以下の例で表示されます。
- tps – 1 秒あたりのトランザクション数 (これには読み取りと書き込みの両方が含まれます)
- rtps – 1 秒あたりの読み取りトランザクション
- wtps – 1 秒あたりの書き込みトランザクション
- bread/s – 1 秒あたりの読み取りバイト数
- bwrtn/s – 1 秒あたりの書き込みバイト数
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
以下にいくつかのバリエーションを示します:
- sar -b
- sar -b 1 3
- sar -b -f /var/log/sa/sa10
注: 「sar -v」を使用して、システムで使用される inode ハンドラ、ファイル ハンドラ、および疑似端末の数を表示します。
6.個々のブロック デバイス I/O アクティビティ (sar -d)
個々のブロック デバイス (つまり、特定のマウント ポイント、または LUN、またはパーティション) によるアクティビティを識別するには、「sar -d」を使用します
$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
上記の例では、「DEV」は特定のブロック デバイスを示します。
例:「dev53-1」は、メジャー番号が 53、マイナー番号が 1 のブロック デバイスを意味します。
以下に示すように、-p オプション (プリティ プリント) を使用すると、デバイス名 (DEV 列) に実際のデバイス名 (例:sda、sda1、sdb1 など) を表示できます。
$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
以下にいくつかのバリエーションを示します:
- sar -d
- sar -d 1 3
- sar -d -f /var/log/sa/sa10
- sar -p -d
7. 1 秒あたりのコンテキスト スイッチの表示 (sar -w)
これは、1 秒あたりに作成されたプロセスの総数と、1 秒あたりのコンテキスト スイッチの総数を報告します。 「1 3」は 1 秒ごとに合計 3 回報告します。
$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00
以下にいくつかのバリエーションを示します:
- sar -w
- sar -w 1 3
- sar -w -f /var/log/sa/sa10
8.レポート実行キューと負荷平均 (sar -q)
これは、実行キューのサイズと、過去 1 分、5 分、および 15 分の負荷平均を報告します。 「1 3」は 1 秒ごとに合計 3 回報告します。
$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0
注: 「ブロックされた」列には、現在ブロックされており、I/O 操作が完了するのを待っているタスクの数が表示されます。
以下にいくつかのバリエーションを示します:
- sar -q
- sar -q 1 3
- sar -q -f /var/log/sa/sa10
9.ネットワーク統計の報告 (sar -n)
これにより、さまざまなネットワーク統計が報告されます。例:ネットワーク カードを介して受信 (送信) されたパケットの数、パケット障害の統計など。 「1 3」は 1 秒ごとに合計 3 回報告します。
sar -n KEYWORD
KEYWORD は次のいずれかです:
- DEV – eth0、eth1 などのネットワーク デバイスのバイタル統計を表示します。
- EDEV – ネットワーク デバイスの障害統計を表示
- NFS – NFS クライアントのアクティビティを表示します
- NFSD – NFS サーバーのアクティビティを表示します
- SOCK – IPv4 に使用されているソケットを表示します
- IP – IPv4 ネットワーク トラフィックを表示します
- EIP – IPv4 ネットワーク エラーを表示します
- ICMP – ICMPv4 ネットワーク トラフィックを表示します
- EICMP – ICMPv4 ネットワーク エラーを表示します
- TCP – TCPv4 ネットワーク トラフィックを表示します
- ETCP – TCPv4 ネットワーク エラーを表示します
- UDP – UDPv4 ネットワーク トラフィックを表示します
- SOCK6、IP6、EIP6、ICMP6、UDP6 は IPv6 用です
- ALL – 上記のすべての情報が表示されます。出力は非常に長くなります。
$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10.開始時刻を使用して SAR データを報告する (sar -s)
「sar -f」オプションを使用して /var/log/sa/saXX ファイルから過去の sar データを表示すると、その日の午前 12:00 から始まるその特定の日のすべての sar データが表示されます。
「-sh hh:mi:ss」オプションを使用すると、開始時刻を指定できます。たとえば、「sar -s 10:00:00」と指定すると、以下に示すように、(午前 0 時からではなく) 午前 10 時から始まる sar データが表示されます。
-s オプションを他の sar オプションと組み合わせることができます。
たとえば、今月 26 日の午前 10 時からの負荷平均をレポートするには、以下に示すように -q オプションと -s オプションを組み合わせます。
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0
終了時間を制限するオプションはありません。以下に示すように、工夫を凝らして head コマンドを使用するだけです。
たとえば、午前 10 時から 7 つのエントリを表示するには、上記の出力を「head -n 10」にパイプする必要があります。
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2
Linux のパフォーマンスの監視とチューニングについては、さらに多くのことをカバーする必要があります。まだ始まったばかりです。パフォーマンス シリーズの記事は今後も追加予定です。
Linux パフォーマンスの監視とチューニング シリーズの以前の記事:
- Linux パフォーマンスの監視とチューニングの概要
- 15 の実用的な Linux トップ コマンドの例