MENU

【Linux】sarコマンドによるシステムパフォーマンスの監視

この記事では、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/swkB/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ファイルで変更できます。

STEP
設定ファイルの編集
sudo vim /etc/default/sysstat
STEP
ENABLEDオプションをtrueに設定
ENABLED="true"
STEP
サービスの再起動
sudo systemctl restart sysstat

sarログの確認

ログに記録されたデータを表示するには、-fオプションを使用して特定のログファイルを指定します。ログファイルは通常/var/log/sysstat/ディレクトリに保存されています。

例えば、5月18日のログを表示するには、以下のコマンドを実行します。

sar -f /var/log/sysstat/sa18

最後に

以上、sarコマンドの概要と使用例でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

20代の組み込みソフトウェアエンジニア
主な使用言語はC++

---------------------資格---------------------
応用情報技術者
ネットワークスペシャリスト

目次