こんにちは。サイオステクノロジーの貝野です。
私たちは日頃の業務で、動作不良や障害のお問い合わせをいただいた際、sar ファイルを参照し、リソースの状態を確認します。
sar ファイルには CPU、メモリ、I/O、ネットワークの通信状況など、多くの情報が含まれています。
今回の記事では、sar でどのようなリソースの状態が確認できるのか、ご紹介します。
基本的に sar のマニュアルに記載されている内容が元になっていますが、特記事項がある場合は赤字にて補足しています。 なお、すべての項目の最下部に、各項目の平均値が表示されます。
1. CPU に関する項目
%user | ユーザレベル(アプリケーション)で実行中に発生した CPU 使用率。このフィールドには、仮想プロセッサの実行に費やされた時間は含まれない。 ※「ユーザ」とは、ログインユーザだけでなく、httpsd や mysqld などのデーモンも対象。 |
%nice | 優先順位の高い (nice 値が変更された) ユーザレベル(アプリケーション)で実行中に発生した CPU 使用率。 |
%system | システムレベル(カーネル)で実行中に発生した CPU 使用率。 ※このフィールドには、ハードウェアおよびソフトウェア割り込みの処理に費やされた時間が含まれる。 |
%sys | システムレベル(カーネル)で実行中に発生した CPU 使用率。 ※このフィールドには、ハードウェアまたはソフトウェア割り込みの処理に費やされた時間は含まれない。 |
%iowait | システムが未処理のディスク I/O リクエストを出している間に、1つまたは複数の CPU がアイドル状態だった時間の割合 (I/O 待ちしている CPU 使用率)。 ※メモリが不足し、スワップアウトが発生した場合などに値が上昇。 |
%steal | ハイパーバイザが別の仮想プロセッサ (ゲスト OS) を処理している間に、1つまたは複数の仮想 CPU が待機するのに費やした時間の割合。 仮想環境を使用している場合において、ゲスト OS が CPU の割り当て要求をしたが、他のゲスト OS とCPU 時間を取り合って競合が発生した場合などに上昇。 |
%irq | 1つまたは複数の CPU がハードウェア割り込みを処理するのに費やした時間の割合。 ※ハードウェア割り込みの例:マウスやキーボードの操作を行なった場合。 |
%soft | 1つまたは複数の CPU がソフトウェア割り込みを処理するのに費やした時間の割合。 ※ソフトウェア割り込みの例:実行中のプログラムにおいて、エラーや例外が発生した場合。 |
%guest | 1つまたは複数の CPU が仮想プロセッサ (ゲスト OS) の実行に費やした時間の割合。 |
%gnice | 1つまたは複数の CPU が nice 値を変更されたゲストの実行に費やした時間の割合。 |
%idle | CPU がアイドル状態で、システムに未処理のディスク I/O リクエストがなかった時間の割合。 ※平常時は 100% に近い値。 |
2.コンテキストスイッチ
proc/s | 1秒間に作成されたタスク (プロセス) の総数。 |
cswch/s | 1秒間に発生したコンテキスト切り替えの総数。 ※この値が上昇している場合、高負荷な処理により CPU に負荷がかかっている可能性がある。 |
3.Swap
pswpin/s | 1秒間に取り込んだスワップページの総数。 |
pswpout/s | 1秒間に取り出したスワップページの総数。 ※平常時は 0 に近い。メモリ不足によりスワップイン/スワップアウトが頻繁に発生すると、pswpin/pswpout の値が上昇。 |
4.メモリスワップ
pgpgin/s | 1秒間にディスクからページインした KB の合計数。 |
pgpgout/s | 1秒間にディスクからページアウトした KB の合計数。 ※pswpin と pswpout はページ数、pgpgin と pgpgout は KB 数を表示する。なお、1ページは 4KB または 8KB (マシンにより異なる) 。 |
fault/s | 1秒間に行なわれたページフォールトの数(メジャーフォールト、マイナーフォールトの合計)。 一部のページフォールトは I/O なしで解決できるため、これは I/O を生成するページフォールトの数ではない。 ※平常時でも発生するが、値が大きく上昇した場合はシステム性能が低下している可能性がある。 |
majflt/s | 1秒間に行なわれたメジャーフォールトの数。 ※メジャーフォールトとはディスクアクセスを伴うページフォールトであり、マイナーフォールトとはディスクアクセスを伴わないページフォールトである。 メジャーフォールトの方が、システムへの負荷が大きい。 |
pgfree/s | 1秒間に空きメモリへ登録されたページ数。 |
pgscank/s | 1秒間に kswapd デーモンによって回収されたページ数。 |
pgscand/s | 1秒間にプロセスから直接回収されたページ数。 ※kswapd が十分なメモリを確保できない場合、プロセスがメモリを直接回収し、再利用する。 |
pgsteal/s | 1秒間にキャッシュから回収したページ数 (pgscank と pgscand の合計)。 |
%vmeff | pgsteal/pgscand の値。ページ再利用の効率性を示す。 100% に近い場合、ほぼすべてのページが回収された事を意味する。 低くなりすぎると(例:30%未満)、仮想メモリで問題が発生している。一定時間内にスキャンされたページがない場合、このフィールドは 0 として表示される。 |
5.ディスク I/O
これらの値が大きい場合、処理するリクエストが多すぎてシステム性能に影響を与えているか、ディスク性能が低下している可能性がある。
tps | 1秒間にディスクへ発行された I/O リクエスト数 (rtps と wtps の合計)。 |
rtps | 1秒間にディスクへ発行された読み取りリクエスト数。 |
wtps | 1秒間にディスクへ発行された書き込みリクエスト数。 |
bread/s | 1秒間にディスクから読み取られた総ブロック数。 |
bwrtn/s | 1秒間にディスクに書き込まれた総ブロック数。 |
6.メモリの統計
frmpg/s | 1秒間にシステムが開放したメモリページ数。 ※メモリを大量に使用するプロセスが終了した場合などに値が上昇。 |
bufpg/s | 1秒間にシステムがバッファとして使用したメモリページ数。 ※マイナス値の場合、システムがバッファとして使用するページがほとんどないことを示す。 |
campg/s | 1秒間にシステムがキャッシュしたメモリページ数。 ※マイナス値の場合、キャッシュにページがほとんどないことを示す。 |
7.メモリ使用率
kbmemfree | 空きメモリの容量 (KB)。 |
kbmemused | メモリの使用量 (KB)。 |
%memused | メモリ使用量の割合 (%)。 |
kbbuffers | カーネルのバッファとして使用されているメモリの容量 (KB)。 |
kbcached | カーネルのキャッシュとして使用されているメモリの容量 (KB)。 |
kbcommit | (システムの動作に必要な) 事前に確保されているメモリ (KB)。 |
%commit | 総メモリ容量に対する、システムの動作に必要なメモリの割合 (%)。 |
kbactive | アクティブなメモリの容量 (KB)。 ※直近で使用されたメモリ、必要のない限り再利用 (開放) されないメモリ。 |
kbinact | アクティブでないメモリの容量 (KB)。 ※直近で使用されていないメモリ、必要に応じて再利用 (開放) するメモリ。 |
kbdirty | ディスクに書き戻されるのを待機しているメモリの容量 (KB)。 |
8.スワップ領域
kbswpfree | スワップ領域の空き容量 (KB)。 |
kbswpused | スワップ領域の使用量 (KB)。 |
%swpused | スワップ領域の使用量の割合 (%)。 |
kbswpcad | スワップ領域のキャッシュとして使用されているメモリの容量 (KB)。 |
%swpcad | スワップ領域のキャッシュの割合 (%)。 |
9.Hugepage
通常の設定では、Hugepage 機能は Off になっているため下記項目の値はすべて 0 となる。
kbhugfree | Hugepage メモリの空き容量 (KB)。 |
kbhugused | Hugepage メモリの使用量 (KB)。 |
%hugused | Hugepage メモリの使用量の割合 (%)。 |
10.システムテーブル
dentunusd | 未使用のキャッシュ・エントリ数。 |
file-nr | システムに使用されているファイルハンドル数。 |
inode-nr | システムに使用されている inode ハンドル数。 |
pty-nr | システムに使用されている疑似端末数。 |
11.キューの長さとロードアベレージ
runq-sz | 実行待ちのタスク数。 ※平常時は小さい数値であるが、この値が大きい場合 CPU に負荷がかかっている可能性がある。 |
plist-sz | 実行中のプロセス数。 |
ldavg-1 | 直近 1分間のロードアベレージ (負荷平均)。 |
ldavg-5 | 直近 5分間のロードアベレージ (負荷平均)。 |
ldavg-15 | 直近 15分間のロードアベレージ (負荷平均)。 ※ロードアベレージが上昇する原因として、ディスク I/O の増加や、実行待ちプロセス数の増加、などがある。 |
blocked | 入出力が完了するのを待っている、現在ブロックされているタスクの数。 |
12.TTY (標準出力の接続先デバイス)
TTY | シリアル回線の番号。 ※接続済みのデバイスが 2つある場合は、0 と 1 となり、それぞれの番号ごとに下記の値を表示する。 |
rcvin/s | 現在のシリアル回線において、1秒間に発生した受信割り込み (ハードウェア割り込み)。 |
xmtin/s | 現在のシリアル回線において、1秒間に発生した送信割り込み (ハードウェア割り込み)。 |
framerr/s | 現在のシリアル回線において、1秒間に発生したフレームエラー数。 |
prtyerr/s | 現在のシリアル回線の1秒あたりのパリティエラー数。 |
brk/s | 現在のシリアル回線の1秒あたりのブレーク数。 |
bovrun/s | 現在のシリアル回線の1秒あたりのオーバーランエラー数。 |
13.各ブロックデバイスのアクティビティに関する統計
DEV | デバイス名 (“dev m – n” の名称で表示) m はデバイスのメジャー番号、n はマイナー番号。 |
tps | |
rd_sec/s | デバイスから読み取られたセクタ数。 ※セクタのサイズは 512 バイト |
wr_sec/s | デバイスに書き込まれたセクタ数。 |
avgrq-sz | デバイスに発行されたリクエストの平均サイズ (セクタ単位)。 |
avgqu-sz | デバイスに発行されたリクエストの平均キュー長。 |
await | デバイスに発行された I/O リクエストの平均待ち時間 (ミリ秒)。 |
svctm | デバイスに発行された I/O リクエストの平均サービス時間 (ミリ秒)。 |
%util | デバイスに発行された I/O リクエストの経過時間の割合・デバイスの帯域幅使用率 (%)。 ※この値が 100% に近いと、デバイスが飽和状態になっている |
14.ネットワーク統計
rxpck/s | 1秒間に受信したパケット数。 |
txpck/s | 1秒間に送信されたパケット数。 |
rxkB/s | 1秒間に受信したパケットの KB 数。 |
txkB/s | 1秒間に送信されたパケットの KB 数。 |
rxcmp/s | 1秒間に受信した圧縮パケット (cslip など) 数。 |
txcmp/s | 1秒間に送信された圧縮パケット (cslip など) 数。 |
rxmcst/s | 1秒間に受信したマルチキャストパケット数。 |
15.ネットワーク統計 (エラー)
rxerr/s | 1秒間に受信したエラーパケット数。 |
txerr/s | 1秒間に送信されたエラーパケット数。 |
coll/s | 1秒間に発生した衝突パケット数。 |
rxdrop/s | 1秒間に発生したバッファ不足による受信パケットドロップ数。 |
txdrop/s | 1秒間に発生したバッファ不足による送信パケットドロップ数。 |
txcarr/s | 1秒間に発生したパケット送信中におけるキャリアエラー数。 |
rxfram/s | 1秒間に発生したパケット受信中におけるフレーム・アライメント・エラー数。 |
rxfifo/s | 1秒間に発生した受信パケットの FIFO オーバーラン・エラー数。 |
txfifo/s | 1秒間に発生した送信パケットの FIFO オーバーラン・エラー数。 |
16.NFS クライアントのアクティビティに関する統計
call/s | 1秒間に発生した rpc リクエストの数。 |
retrans/s | 1秒間に発生した rpc リクエストのうち、再送信が必要なものの数 (サーバータイムアウト等による)。 |
read/s | 1秒間に発生した read rpc コール数。 |
write/s | 1秒間に発生した write rpc コール数。 |
access/s | 1秒間に発生した access rpc コール数。 |
getatt/s | 1秒間に発生した getatt rpc コール数。 |
17.NFS サーバのアクティビティに関する統計
scall/s | 1秒間に発生した rpc リクエストの数。 |
badcall/s | 1秒間に発生した rpc リクエストのうち、無効なリクエストの数。その処理中にエラーが発生したもの。 |
packet/s | 1秒間に受信したパケット数。 |
udp/s | 1秒間に受信した UDP パケット数。 |
tcp/s | 1秒間に受信した TCP パケット数。 |
hit/s | 1秒間の応答キャッシュヒット数。 ※処理に必要なデータがキャッシュ上にあった場合、キャッシュヒットとなる。 |
miss/s | 1秒間の応答キャッシュミス数。 ※処理に必要なデータがキャッシュ上になく、メモリ等にデータを探す必要がある場合、キャッシュミスとなる。 |
sread/s | 1秒間に受信した read rpc コール数。 |
swrite/s | 1秒間に受信した write rpc コール数。 |
saccess/s | 1秒間に受信した access rpc コール数。 |
sgetatt/s | 1秒間に受信した getatt rpc コール数。 |
18.ソケットに関する統計
totsck | システムが使用している総ソケット数。 |
tcpsck | 現在使用中の TCP ソケット数。 |
udpsck | 現在使用中の UDP ソケット数。 |
rawsck | 現在使用中の RAW ソケット数。 |
ip-frag | 現在使用中の IP フラグメント数。 |
tcp-tw | TIME_WAIT 状態の TCP ソケット数。 |