Linux - sarコマンドについて

sarコマンドを使用するたびに検索していたので、障害調査や性能試験でよく使うコマンドをまとめてみました。

### 環境
* AWS
* Ubuntu 20.04

### インストール
#### インストールコマンド
```
sudo apt update
sudo apt install sysstat
```
### ファイル指定
#### sysstatで取得しているsarログのデータを確認
```
sar -u -f /var/log/sysstat/sa01
```
### 期間指定
#### 指定時刻以降の情報を表示(From)
```
sar -u -s 21:00:00 -f /var/log/sysstat/sa01
```
#### 指定時刻までの情報を表示(To)
```
sar -u -e 22:00:00 -f /var/log/sysstat/sa01
```
### CPU使用状況
#### CPU使用状況確認(全体)
```
sar -u 1 
```
#### CPU使用状況確認(Core単位)
```
sar -P ALL 1
```
#### 出力例
```
02:04:02 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:04:03 PM     all      0.00      0.00      0.00      0.00      2.94     97.06
```
#### 項目
* %user..... ユーザが利用しているCPU使用率
* %nice..... nice値を変更しているプロセスのCPU使用率
* %system... システムが利用しているCPU使用率
* %iowait... IO待ちしているCPU使用率
* %steal.... ゲストOSが割り当て要求をしたが、割り当ててもらえなかったCPU使用率
* %idle..... 待機中のCPU使用率

### ロードアベレージ状況
#### ロードアベレージ状況確認
```
sar -q 1
```
#### 出力例
```
03:48:12 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
03:48:13 PM         0       196      0.00      0.01      0.05         0
```
#### 項目
* runq-sz.... 実行待ちのキューに入っているプロセス数
* plist-sz... プロセスリスト中のプロセス数とスレッド数
* ldavg-1.... 直近1分間のロードアベレージ
* ldavg-5.... 直近5分間のロードアベレージ
* ldavg-15... 直近15分間のロードアベレージ
* blocked.... ※調査中

### コンテキストスイッチ状況
#### コンテキストスイッチ状況確認
```
sar -w 1 
```
#### 出力例
```
02:54:04 PM    proc/s   cswch/s
02:54:05 PM      0.00    385.15
```
#### 項目
* proc/s.... 1秒あたりの生成されたプロセス数
* cswch/s... 1秒あたりのコンテキストスイッチ回数

### メモリ使用状況
#### メモリ使用状況確認
```
sar -r 1 
```
#### 出力例
```
02:34:19 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
02:34:20 PM    234892    781456     76.89     89860    337344    705296     69.40    436968    213948        52
02:34:21 PM    234892    781456     76.89     89860    337344    705296     69.40    436968    213948        52
```
#### 項目
* kbmemfree... 物理メモリの空き容量
* kbmemused... 使用中の物理メモリ量
* %memused.... 物理メモリの使用率
* kbbuffers... バッファとして使用されている物理メモリの容量
* kbcached.... キャッシュとして使用されている物理メモリの容量
* kbcommit.... 事前に確保されているメモリ容量
* %commit..... 事前に確保されているメモリ容量の割合
* kbactive.... ※調査中
* kbinact..... ※調査中
* kbdirty..... ※調査中

### スワップ使用状況確認
#### スワップ使用状況確認
```
sar -S 1
```
#### 出力例
```
02:36:40 PM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
02:36:41 PM         0         0      0.00         0      0.00
```
#### 項目
* kbswpfree... スワップ領域の空き容量
* kbswpused... スワップ領域の使用量
* %swpused.... スワップ領域の使用率
* kbswpcad.... キャッシュされたスワップメモリ容量
* %swpcad..... 使用されたスワップスペースに対する、キャッシュされたスワップメモリ使用率

### ディスク使用状況
#### ディスク使用状況確認(デバイス単位)
```
sar -p -d 1 1
```
#### 出力例
```
02:14:07 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
02:14:07 PM      xvda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
```
#### 項目
* tps.............. 1秒間のI/Oリクエスト数(転送回数)
* rd_sec(rsec)/s... 1秒間の読み込みセクタ数(1セクタ512バイト)
* wr_sec(wsec)/s... 1秒間の書き込みセクタ数(1セクタ512バイト)
* avgrq-sz......... デバイスへのIOリクエストの平均セクタサイズ
* avgqu-sz......... デバイスへのIOリクエストの待ち行列の平均セクタサイズ
* await............ デバイスへのIOリクエストの平均待ち時間(単位msec)[待ち行列にいる時間＋処理時間]
* svctm............ デバイスへのIOリクエストの平均処理時間(単位msec)
* %util............ デバイスへのIOリクエスト中のCPU使用率(ここが継続的に100%だとディスク部分でボトルネックになっている可能性が高い)

### ネットワーク使用状況
#### ネットワーク使用状況(全体)
```
sar -n DEV 1
```
#### Network使用状況確認(NIC単位)
```
sar -n DEV 1 | grep eth0
```
#### 出力例
```
02:07:30 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
02:07:30 PM      eth0     35.00     42.50      2.03      5.31      0.00      0.00      0.00      0.00
02:07:30 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
```
#### 項目
* rxpck/s.... 1秒間あたりの受信パケット数
* txpck/s.... 1秒間あたりの送信パケット数
* rxbyt/s.... 1秒間あたりの受信バイト数
* txbyt/s.... 1秒間あたりの送信バイト数
* rxcmp/s.... 1秒間あたりの圧縮受信パケット数 (for cslip etc.)
* txcmp/s.... 1秒間あたりの圧縮送信パケット数
* rxmcst/s... 1秒間あたりのマルチキャスト受信パケット数


### ネットワークエラー状況
#### ネットワークエラー状況確認(全体)
```
sar -n EDEV 1
```
#### ネットワークエラー状況確認(NIC単位)
```
sar -n EDEV 1 | grep eth0
```
#### 出力例
```
02:07:03 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
02:07:03 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:07:03 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
```
#### 項目
* rxerr/s.... 1秒あたり総受信不良パケット数
* txerr/s.... パケット送信時に発生した1秒あたりエラー発生数
* coll/s..... パケット送信時に発生した1秒あたりパケット衝突数
* rxdrop/s... Linuxバッファ上の領域不足によって発生した、1秒あたりの受信パケットのドロップ数
* txdrop/s... Linuxバッファ上の領域不足によって発生した、1秒あたりの送信パケットのドロップ数
* txcarr/s... パケット送信時に発生した1秒あたりのキャリアエラー数
* rxfram/s... パケット受信時に発生した、1秒あたりフレーム・アラインメント・エラー数
* rxfifo/s... 1秒あたりの受信パケットのFIFOオーバーラン・エラー数
* txfifo/s... 1秒あたりの送信パケットのFIFOオーバーラン・エラー数

### ネットワークソケット使用状況
#### ネットワークエラー状況確認
```
sar -n SOCK -f /var/log/sysstat/sa03
```
#### 出力例
```
02:11:36 PM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
02:11:37 PM       259        36         6         0         0         0
```
#### 項目
* totsck....システムが使用した総ソケット数
* tcpsck....現在使用中のTCPソケット数
* udpsck....現在使用中のUDPソケット数
* rawsck....現在使用中のRAWソケット数
* ip-frag...現在使用中のIPフラグメント数
* tcp-tw....TIME_WAITステータスにあるTCPソケット数

### 参考
* https://makaaso-tech.com/2015-07-31-171740/