この記事では、sarコマンドの概要と使用例について紹介します。
本記事で使用している環境は以下です。
・Ubuntu 24.04 LTS
sar(System Activity Reporter)とは
sar (System Activity Reporter)は、システムのパフォーマンスを監視するためのツールで、CPU使用率、メモリ使用量、ドライブI/O、ネットワークなど、システムのさまざまなリソースの利用状況を記録することができるコマンドです。
参考:sar
sarコマンド例
必要なパッケージのインストール
sarコマンドを使用するために、以下のコマンドでsysstatパッケージをインストールします。
sudo apt install sysstat
CPU使用率の確認
-u
オプションを付けるとCPU使用率を確認することができます。1秒ごとに5回、CPU使用率を表示する例です。
sar -u 1 5
22時19分52秒 CPU %user %nice %system %iowait %steal %idle
22時19分53秒 all 1.01 0.00 1.01 0.00 0.00 97.98
22時19分54秒 all 0.00 0.00 2.06 0.00 0.00 97.94
22時19分55秒 all 0.00 0.00 1.02 0.00 0.00 98.98
22時19分56秒 all 0.00 0.00 0.00 0.00 0.00 100.00
22時19分57秒 all 1.02 0.00 2.04 0.00 0.00 96.94
平均値: all 0.41 0.00 1.23 0.00 0.00 98.36
各パラメータの説明
- CPU
-
CPUの識別子。allは全CPUの平均を表しています。
- %user
-
ユーザーモードで実行されるプロセスに消費されたCPU時間の割合。アプリケーションプログラムが消費する時間を示します。
- %nice
-
ナイス値を変更されたユーザーモードプロセスに消費されたCPU時間の割合。優先度の低いユーザープロセスに費やされる時間を示します。※ナイス値とはプロセスの優先度のことです。
- %system
-
システムカーネルモードで実行されるプロセスに消費されたCPU時間の割合。システムコールやデバイスドライバが消費する時間を示します。
- %iowait
-
I/O操作が完了するのを待機している間にCPUがアイドル状態であった時間の割合。ドライブやネットワークI/Oの待機時間を示します。
- %steal
-
仮想環境で実行されている場合、仮想化ソフトウェアによって他の仮想マシンがCPUリソースを使用するために消費された時間の割合です。
- %idle
-
CPUが何もしていない状態(アイドル状態)であった時間の割合です。
メモリ使用量の確認
-r
オプションを付けるとメモリ使用量を確認することができます。1秒ごとに5回、メモリ使用量を表示する例です。
sar -r 1 5
22時36分53秒 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
22時36分54秒 821244 2618064 1001000 24.96 103308 1886020 4942168 61.62 1531436 1301672 4
22時36分55秒 821244 2618064 1001000 24.96 103308 1886020 4943272 61.63 1532044 1301672 4
22時36分56秒 821244 2618064 1001000 24.96 103312 1886016 4942000 61.62 1531616 1301672 4
22時36分57秒 821244 2618068 1000996 24.96 103312 1886020 4942000 61.62 1531672 1301676 4
22時36分58秒 821244 2618068 1000996 24.96 103312 1886020 4942000 61.62 1531752 1301676 4
平均値: 821244 2618066 1000998 24.96 103310 1886019 4942288 61.62 1531704 1301674 4
各パラメータの説明
- kbmemfree:空きメモリ
-
物理メモリ内の空きメモリの量。単位はキロバイトです。
- kbavail:利用可能メモリ
-
システムが利用できるメモリの総量。これには、空きメモリだけでなく、キャッシュやバッファによってもたらされるメモリも含まれます。単位はキロバイトです。
- kbmemused:使用中のメモリ
-
システムが使用しているメモリの量。すべてのプロセスやカーネルが使用するメモリの総量です。単位はキロバイトです。
- %memused:メモリ使用率
-
使用中のメモリの割合。
(kbmemused / (kbmemfree + kbmemused)) * 100
で計算されます。 - kbbuffers:バッファメモリ
-
データの読み取り時に使用されるメモリの量。単位はキロバイトです。
- kbcached:キャッシュメモリ
-
データの読み取り時に使用されるメモリの量。単位はキロバイトです。
- kbcommit:コミットされたメモリ
-
システムが現在の状態を維持するために必要なメモリの量。物理メモリとスワップ領域の合計になっていて、単位はキロバイトです。
- %commit:コミットメモリ使用率
-
コミットされたメモリの割合。
(kbcommit / (kbmemfree + kbmemused)) * 100
で計算されます。 - kbactive:アクティブメモリ
-
最近使用されたメモリページの量。アクティブメモリは、アプリケーションやプロセスによって頻繁にアクセスされるメモリ領域で、単位はキロバイトです。
- kbinact:非アクティブメモリ
-
最近使用されていないメモリページの量。単位はキロバイトです。
- kbdirty:ダーティメモリ
-
データが変更されているがまだディスクに書き込まれていないメモリの量。単位はキロバイトです。
ドライブI/Oの確認
-d
オプションを付けるとドライブI/Oの統計を確認することができます。1秒ごとに5回、ドライブI/Oの統計を表示する例です。
sar -d 1 5
23時06分30秒 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
23時06分31秒 loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時06分31秒 loop9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
各パラメータの説明
- DEV:デバイス名
-
デバイス名。
- tps:転送/秒
-
1秒間にドライブに書き込まれた、または読み込まれたブロックの合計数。
- rkB/s:読み取りキロバイト/秒
-
1秒間にドライブから読み取られたデータ量。
- wkB/s:書き込みキロバイト/秒
-
1秒間にドライブに書き込まれたデータ量。
- dkB/s:削除キロバイト/秒
-
1秒間にドライブから削除されたデータ量。
- areq-sz:平均リクエストサイズ
-
1つのリクエストによって送信されたデータ量の平均。この値は
rkB/s
とwkB/s
の合計をtps
で割った値。 - aqu-sz:平均キューサイズ
-
キューにあるリクエストの平均数。この数値が高い場合、ドライブへのアクセスが遅れている可能性があります。
- await:平均応答時間
-
リクエストがキューに入ってから完了するまでの平均時間。
- %util:デバイスの利用率
-
ディスクデバイスがアクティブであった時間の割合。
ネットワークの確認
-n
オプションを付けるとネットワークの統計を確認することができます。1秒ごとに5回、ネットワークの統計を表示する例です。
sar -n DEV 1 5
23時14分05秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
23時14分06秒 lo 19.00 19.00 2.08 2.08 0.00 0.00 0.00 0.00
23時14分06秒 enp0s3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時14分06秒 enp0s8 8.00 8.00 1.11 1.31 0.00 0.00 0.00 0.00
- IFACE:インターフェース名
-
ネットワークインターフェースの名前。
- rxpck/s:受信パケット数/秒
-
1秒間に受信されたパケットの数。
- txpck/s:送信パケット数/秒
-
1秒間に送信されたパケットの数。
- rxkB/s:受信キロバイト/秒
-
1秒間に受信されたデータ量。
- txkB/s:送信キロバイト/秒
-
1秒間に送信されたデータ量。
- rxcmp/s:受信圧縮パケット数/秒
-
1秒間に受信された圧縮されたパケットの数。
- txcmp/s:送信圧縮パケット数/秒
-
1秒間に送信された圧縮されたパケットの数。
- rxmcst/s:マルチキャストパケット数/秒
-
1秒間に受信されたマルチキャストパケットの数。
- %ifutil:インターフェースの利用率 (%)
-
インターフェースがアクティブであった時間の割合。
sarログの有効化
sarは、システムのパフォーマンスデータを自動でログに記録できます。ログの設定は、/etc/default/sysstat
ファイルで変更できます。
sudo vim /etc/default/sysstat
ENABLED
オプションをtrue
に設定ENABLED="true"
sudo systemctl restart sysstat
sarログの確認
ログに記録されたデータを表示するには、-f
オプションを使用して特定のログファイルを指定します。ログファイルは通常/var/log/sysstat/
ディレクトリに保存されています。
例えば、5月18日のログを表示するには、以下のコマンドを実行します。
sar -f /var/log/sysstat/sa18
最後に
以上、sarコマンドの概要と使用例でした。