sar コマンド

  • sar コマンドは、sysstat が定期的 (10分おき) に取得しているシステム情報を表示するコマンド
  • 取得したシステム情報は /var/log/sysstat に格納されている
    • sa{日付} には sar コマンドから読めるバイナリ形式でシステム情報が格納されている
    • sar{日付} には、テキストでシステム情報が格納されている (sarコマンドによる絞り込みなどはできない)
$ ls /var/log/sysstat/ sa09 sa10 sa11 sa12 sa13 sa14 sa15 sa16 sa17 sar08 sar09 sar10 sar11 sar12 sar13 sar14 sar15 sar16
  • コマンド引数 -f で sa ファイルの内容を出力する。-f を省略すると今日の sa ファイルの内容が出力される
  • -p で読みやすいように整形 (--prettier) だけど、あんまり見やすくならない

sar, sar -P {cpu番号|all} CPU時間の情報

ubuntu@www4250uj:~/docker$ sar Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 CPU %user %nice %system %iowait %steal %idle 00:10:00 all 1.59 0.00 0.99 0.29 0.03 97.10 00:20:00 all 1.50 0.00 1.01 0.21 0.01 97.27 Average: all 1.55 0.00 1.00 0.25 0.02 97.19
説明
%userCPUがユーザモードにあった割合
%nice優先度の高い(nice値が昇格した)プロセスの実行時間の割合
%systemCPUがカーネルモードにあった時間の割合
%iowaitCPUがIO待ちをしていた時間の割合
%stealこの仮想マシンが実行依頼したが、別の仮想マシンの処理待ちになっていた時間の割合
%idleCPUがアイドル状態にあった時間の割合

sar -r メモリの情報

buntu@www4250uj:~/docker$ sar -r Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 00:10:00 97512 372864 1242256 61.66 24028 528188 5552012 66.84 685944 344532 1040 00:20:00 111396 370168 1245032 61.79 24576 511068 5501784 66.24 649008 374212 1160 00:30:00 103648 354080 1261388 62.61 24168 503160 5498644 66.20 646652 375424 120 Average: 104185 365704 1249559 62.02 24257 514139 5517480 66.43 660535 364723 773
説明
kbmemfree空き (KB)
kbavail利用可能
%memused空き容量の割合
kbbuffersバッファ (KB)
kbcachedキャッシュ (KB)
kbcommitOSが確保している領域(KB)
kbactive利用中(KB)
kbinact利用中でない(KB)
kbdirtyディスクに書き戻されるのを待っている(KB)

sar -q CPUキューの情報

ubuntu@www4250uj:~/docker$ sar -q Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 00:10:00 0 723 0.01 0.03 0.00 0 00:20:00 3 717 0.09 0.07 0.02 1 00:30:00 0 714 0.17 0.07 0.01 0 Average: 1 718 0.09 0.06 0.01 0
説明
runq-sz実行待ち
plist-sz実行中
ldavg-11分間平均負荷(load averatge)
ldavg-55分間平均負荷(load averatge)
ldavg-1515分間平均負荷(load averatge)
blockedIO待ち
  • load average は1CPUに対して、平均的にどれだけプロセスが実行待ちになっているかを示す値
  • runq-sz や blockd が多くなったら計算機資源が足りない

sar -S, sar-W スワップの情報

ubuntu@www4250uj:~/docker$ sar -S Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 kbswpfree kbswpused %swpused kbswpcad %swpcad 00:10:00 5673212 618240 9.83 60504 9.79 00:20:00 5674492 616960 9.81 63864 10.35 00:30:00 5674748 616704 9.80 65212 10.57 00:40:00 5659132 632320 10.05 70256 11.11 Average: 5670396 621056 9.87 64959 10.46 ubuntu@www4250uj:~/docker$ sar -W Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 pswpin/s pswpout/s 00:10:00 14.49 17.50 00:20:00 1.86 0.00 00:30:00 0.88 0.38 00:40:00 2.00 8.71 Average: 4.81 6.65
説明
kbswpfreeスワップ領域の空き容量(KB)
kbswpusedスワップ領域の利用容量(KB)
%swpusedスワップ領域の利用割合
kbswpcadスワップ領域のキャッシュとして確保しているメモリ容量(KB)
%swpcadスワップ領域のキャッシュの割合
pswpin/s1秒間あたりのスワップインされたページ数
pswpout/s1秒間あたりのスワップアウトされたページ数

sar -d Disk IO の情報

ubuntu@www4250uj:~/docker$ sar -d Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util 00:10:00 vda 27.24 323.59 144.09 0.00 17.17 0.07 2.38 1.08 00:20:00 vda 12.66 94.17 63.92 0.00 12.49 0.04 3.21 0.77 00:30:00 vda 11.97 60.06 70.80 0.00 10.93 0.02 1.89 0.62 00:40:00 vda 14.74 165.40 105.05 0.00 18.34 0.02 1.47 0.72 00:50:00 vda 13.14 55.93 87.49 0.00 10.91 0.05 3.99 0.83 01:00:00 vda 16.03 149.52 106.64 0.00 15.98 0.16 10.03 0.87 01:10:00 vda 25.02 262.20 126.11 0.00 15.52 0.07 2.62 0.88 01:20:00 vda 16.55 141.36 99.18 0.00 14.53 0.07 4.49 0.73 01:30:00 vda 18.79 126.98 77.53 0.00 10.89 0.08 4.18 0.73
説明
tps1秒間あたりのI/O転送回数
rkB/s読み込み KB/s
wkB/s書き込み KB/s
dkB/s失敗 KB/s
areq-sz平均サイズ (セクタ単位)
aqu-sz平均キュー長 (セクタ単位)
await待ち時間
%util利用率
DEVデバイス

sar -n {keyword} ネットワークの情報

  • keyword : DEV, EDEV, FC, ICMP, EICMP, ICMP6, EICMP6, IP, EIP, IP6, EIP6, NFS, NFSD, SOCK, SOCK6, SOFT, TCP, ETCP, UDP and UDP6
ubuntu@www4250uj:~/docker$ sar -n DEV Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 00:00:00 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 00:10:00 lo 14.17 14.17 1.38 1.38 0.00 0.00 0.00 0.00 00:10:00 ens3 40.24 16.94 3.90 15.96 0.00 0.00 0.00 0.00 00:10:00 ens4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00:10:00 ens5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00:10:00 br-13f16c2f099d 9.76 10.78 15.02 1.52 0.00 0.00 0.00 0.00 00:10:00 br-19694a0411e0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00:10:00 br-888f98fc1f2c 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00:10:00 br-aa68fbfd10e9 0.13 0.18 0.01 0.01 0.00 0.00 0.00 0.00
説明
rxpck/s受信パケット/sec
txpck/s送信パケット/sec
rxkB/s送信 KB/sec
txkB/s受信 KB/sec
  • TCP については記録をとっていないので、コマンド実行時に取得する
ubuntu@www4250uj:~/docker$ sar -n TCP 5 Linux 6.8.0-35-generic (www4250uj) 06/17/24 _x86_64_ (3 CPU) 01:07:06 active/s passive/s iseg/s oseg/s 01:07:11 0.00 0.00 14.40 14.60 01:07:16 0.00 0.20 5.20 4.80 01:07:21 0.00 0.00 8.00 8.40
説明
active/sアクティブな新規接続/sec (OPEN要求する側)
passive/sパッシブな新規接続/sec (OPEN要求される側)
iseg/s受信 セグメント/sec
oseg/s送信 セグメント/sec

sar で今の情報を取得する

  • 上記の使い方は、今日の情報 (/var/log/sysstat/sa{今日日付}) を見ている
  • 居間の情報を取得する場合には、上記のオプションに取得間隔 (秒) を指定する

sar -f /var/log/sysatat/saNN で過去の情報を取得する

ubuntu@www4250uj:~/docker$ sar -p -f /var/log/sysstat/sa10 Linux 6.8.0-31-generic (www4250uj) 06/10/24 _x86_64_ (3 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:10:00 all 2.08 0.00 1.15 0.14 0.02 96.62 00:20:31 all 0.66 0.00 0.38 0.13 0.01 98.82 00:30:10 all 0.57 0.00 0.21 0.07 0.01 99.14 00:40:31 all 1.76 0.00 0.35 0.07 0.00 97.82 00:50:31 all 0.41 0.00 0.19 0.06 0.00 99.34 01:00:11 all 0.40 0.00 0.18 0.14 0.01 99.27 01:10:21 all 0.48 0.00 0.19 0.14 0.01 99.18

sar の情報をグラフにする/JSONにする

ubuntu@www4250uj:~/docker$ sadf -T -g -- -r /var/log/sysstat/sa16 > sa16_memory.svg
コマンドオプション説明
-T時刻をUTFではなくローカル時間にする
-gSVG形式で出力する
-jJSON形式で出力する
-xXML形式で出力する
-dCSV形式で出力する
--sar のコマンドオプション
-s "XX:XX:XX"開始時刻
-e "XX:XX:XX"終了時刻
  • g でグラフ化にできる
  • Elasticsearch にぶち込むときは -j で JSON にするのかな

sa16_memory.svg

がっつり分析するとき