kSarでsysstat(sar)をグラフ化したのはいいのだが、読めないので解読してみる

kSarのグラフ化について

kSarによるsarのグラフ化について | Miracle Linux Support
KSarでsysstatのグラフ化 - shibainu55日記
HugeDomains.com - Shop for over 300,000 Premium Domains

グラフ化については、上記がわかりやすいかと思います。

sarのcronは以下のように設定しています。

[root@web ~]# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A

また、テキストデータは

# env LANG=C sar -A -f sa04 > sa04.txt 

のように作成しました。

全体像


私がグラフ化したファイルは左メニューに 23項目ありましたので、1つ1つ見ていきましょう。

1.Processes


これはLinuxのプロセスの数を表していると思います。Linuxのプロセスについてはhttp://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-5.htmlがわかりやすいと思います。このサーバはとあるメール配信サーバなので、メール配信のプロセスが多いのです。0時からメール配信が始まり、右肩下がりになっていって、徐々にプロセスが減っているのがわかります。

proc/s

1 秒あたりの生成されたプロセス数の合計。

2.Contexts


コンテキストとは「CPUの状態」を保存したもの。コンテキストスイッチというのは、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト)を保存したり復元したりする過程のことなので、その「状態」の数だと思う。コンテキストスイッチ - Wikipedia

cswch/s

1 秒あたりのコンテキストスイッチの回数の合計。

3.CPU - CPU all

% used cpu

CPU使用率。

 CPUは何も実行されていないときはアイドル(idle)プロセスという空の命令をループ実行する特別なプログラムが実行され待機状態になっており、OSやアプリケーションソフトが何らかの処理を実行するとその瞬間CPUを占有する。ある単位時間のうち、この両者の割合がどの程度であるかを示すのがCPU使用率で、これが0%の場合は何も実行されず待機状態のままであり、100%の場合はその時間はずっと何らかの処理を行なっていたことになる。

 CPU使用率が100%になったまま下がらない場合は、処理能力を超えた膨大な処理要求が溜まっているか、脱出できない無限ループが実行されているなどプログラムに不具合がある可能性があり、最悪の場合はユーザの操作を受け付けなくなってしまうこともある。

引用=>CPU使用率(CPU utilization)とは - IT用語辞典


基本的CPU使用率は低いですね。余裕がありそうです。

% niced

優先度(ナイス値)によるユーザーレベルのCPU使用率。
2.CPU使用率(第5章 パフォーマンス管理〜上級:基本管理コースII)

% idle

% used cpu のところで説明されていますとおり、「CPUは何も実行されていないときはアイドル(idle)プロセスという空の命令をループ実行する特別なプログラムが実行され待機状態になっており、OSやアプリケーションソフトが何らかの処理を実行するとその瞬間CPUを占有する。」とあり、つまり、CPU使用率とは逆さまのグラフになるというわけですね。

4.Interrupts


Interruptsとは「プロセッサへの割り込み要因のリスト」です。つまり、CPUへの割り込みリスト数。

2.CPU使用率(第5章 パフォーマンス管理〜上級:基本管理コースII)
割り込み - Wikipedia

5.Paging Activity


前提知識

仮想メモリ空間は、ページと呼ばれる単位で管理される。x86系ならば1メモリページは4Kバイトである。システムは、プロセスの仮想メモリ空間中 で、プロセスが使用しているメモリページだけを物理メモリに割り当て、未使用のメモリページは物理メモリに割り当てない。この仕組みにより、物理メモリの 容量を超える仮想メモリ空間を実現することができる。

物理メモリには、RAMとページングファイルがある。システムは、RAMの容量以上の物理メモリが必要になると、RAM上のメモリページ をページングファイルに退避し、RAM上に空きメモリページを作り、このページを使用する。ページングファイルに退避されたメモリページに割り当てられて いた仮想メモリ空間上のメモリページにアクセスすると、システムは再びページングファイルからRAM上へメモリページを移し、読み書きを可能とする。

RAM上のメモリをページングファイルへ退避することをスワップアウトと呼ぶ。また、仮想メモリ空間上のあるメモリページをアクセスした際、そのメモリページがページングファイルスワップアウトされていた場合、「ページフォールト」というイベントが発生する。システムは、ページフォールトが発生したら、ページフォールトを起こしたメモリページをページングファイルからRAMに移動し、アクセスを再び可能とする。

メモリ管理

http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
ページング - 意味・説明・解説 : ASCII.jpデジタル用語辞典
ページイン - 意味・説明・解説 : ASCII.jpデジタル用語辞典
ページアウト - 意味・説明・解説 : ASCII.jpデジタル用語辞典

pgpgin/pgpgout/s

1秒間にディスクからページインされているブロック数 (pgpgin/s) とディスクからページアウト (pgpgout/s) されているブロック数がわかります。これらの値は仮想メモリの全体的な動作の指標となります。

Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

activepg

アクティブなページは現在、何らかで使用中であり(例、プロセスまたはバッファのページ)、非アクティブなページは使用されていません。

Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

inadtypg/inaclnpg/inatarpg

inadtypg フィールドではダーティな(変更された)ためディスクへ書き込みが必要とされる可能性がある非アクティブのページ数を示しています。一方、inaclnpg フィールドではクリーンな(変更されていない)ためディスクへの書き込みが不要な非アクティブのページ数を示しています。
inatarpg フィールドは非アクティブリストの望ましいサイズを表しています。この値は Linux カーネルによって算出され、非アクティブリストがページ置換の目的でプールとして動作するのに十分残っているなどでサイズ設定されます。

Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

6.Swapping


前提知識

仮想メモリ空間は、ページと呼ばれる単位で管理される。x86系ならば1メモリページは4Kバイトである。システムは、プロセスの仮想メモリ空間中 で、プロセスが使用しているメモリページだけを物理メモリに割り当て、未使用のメモリページは物理メモリに割り当てない。この仕組みにより、物理メモリの 容量を超える仮想メモリ空間を実現することができる。

物理メモリには、RAMとページングファイルがある。システムは、RAMの容量以上の物理メモリが必要になると、RAM上のメモリページ をページングファイルに退避し、RAM上に空きメモリページを作り、このページを使用する。ページングファイルに退避されたメモリページに割り当てられて いた仮想メモリ空間上のメモリページにアクセスすると、システムは再びページングファイルからRAM上へメモリページを移し、読み書きを可能とする。

RAM上のメモリをページングファイルへ退避することをスワップアウトと呼ぶ。また、仮想メモリ空間上のあるメモリページをアクセスした際、そのメモリページがページングファイルスワップアウトされていた場合、「ページフォールト」というイベントが発生する。システムは、ページフォールトが発生したら、ページフォールトを起こしたメモリページをページングファイルからRAMに移動し、アクセスを再び可能とする。

メモリ管理

http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
ページング - 意味・説明・解説 : ASCII.jpデジタル用語辞典
ページイン - 意味・説明・解説 : ASCII.jpデジタル用語辞典
ページアウト - 意味・説明・解説 : ASCII.jpデジタル用語辞典

pswpin/s

swap から送られたページ (pswpin/s)

pswpout/s

swap に送られたページ (pswpout/s)

7.I/O


前提知識

Input/Outputの略で「入出力」を意味する。コンピューターは、情報を入力(input)し、計算結果を出力(output)するという処理を行なっている。これらの処理を総称してI/Oと呼ぶ。

I/O - 意味・説明・解説 : ASCII.jpデジタル用語辞典

2種類の負荷

一般に、負荷は大きく二つに分類されます。

・CPU負荷
・I/O負荷

 たとえば、大規模な化学計算を行うプログラムがあったとして、そのプログラムはディスクとの入出力は行わないが、処理が完了するまでに相当の時間を要するとします。「計算する」ということからも想像がつくとおり、このプログラムの処理速度はCPUの計算速度に依存しています。これがCPUに負荷をかけるプログラムです。「CPUバウンドなプログラム」とも呼ばれます。
 一方、ディスクに保存された大量のデータから任意のドキュメントを探し出す検索プログラムがあったとします。この検索プログラムの処理速度はCPUではなく、ディスクの読み出し速度、つまり入出力(Input/Output,I/O)に依存するでしょう。ディスクが速ければ速いほど、検索にかかる時間は短くなります。I/Oに負荷をかける種類のプログラムということで、「I/Oバウンドなプログラム」と呼ばれます。
 一般的に、APサーバはDBから取得したデータを加工してクライアントに渡す処理を行います。その過程で大規模なI/Oを発生させることは稀です。よって多くの場合、APサーバはCPUバウンドなサーバであるといえます。
 一方、Webアプリケーションを構成するもう一つの要素システムであるDBサーバは、データをディスクから検索するのが主な仕事で、とくにデータが大規模になればなるほど、CPUでの計算時間よりもI/Oに対するインパクトが大きくなるI/Oバウンドなサーバです。同じサーバでも、負荷の種類が違えばその特性は大きく変わってきます。

引用 => 「サーバ/インフラを支える技術

transfer/s

I/O転送量

Blocks Read/Write

読み込み書き込み量(Blocks)

Read/Write /s

読み込み書き込み回数

8.Page


メモリの利用状況(ページ状態についての補足的な詳細)

特にこの sar レポートの値は、プラス、マイナスまたはゼロで表示されるところが特有です。値がプラスであれば、このタイプのページが増加している割合を示しています。マイナスであれば、このタイプのページが減少している割合を示します。 値がゼロであるとこのタイプのページは増減がないということになります。

この例では、最後のサンプル行で毎秒 3 ページ以上が空きページのリストから割り当てられていて (frmpg/s フィールド)、毎秒 1 ページ近くがページキャッシュに加えられた (campg/s フィールド)ことを示しています。バッファとして使用されたページのリスト (bufpg/s フィールド)は 2 秒毎に約 1 ページ増えたのに対し、共有メモリページリスト (shmpg/s フィールド)はページの増減がありませんでした。

Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

shmpg/s

共有メモリページリスト

campg/s

1 秒あたりのシステムが新たにキャッシュしたメモリページ数です。 マイナスの値はキャッシュにページが殆ど無いことを意味します。

bufpg/s

1 秒あたりのシステムが新たにバッファとして使用したメモリページ数です。 マイナスの値はシステムがバッファとして使用したページが殆ど無いことを意味します。

frmpg/s

1 秒あたりのシステムが開放したメモリページ数です。 マイナスの値はシステムが割り当てたページ数を表します。 1 ページのサイズはマシンのアーキテクチャによって 4kB または 8kB となります。


9.Memory Usage

memfree

メモリの空き量

memused

メモリの使用量

%memused

メモリの使用率

10.Swap usage

swapfree

スワップの空き量

swpused

スワップの使用量

%swapused

スワップの使用率


11.Memory Misc

kbmemusedの値は、用途を問わずOSが確保していたメモリ量をキロバイト単位で示しています。kbbuffersとkbcachedは、その消費メモリ量の中でページキャッシュとして確保されていた容量をキロバイト単位で示しています。

Linux OSは、ファイルシステムのデータをできる限りページキャッシュに載せようとするので、OSをある程度の時間稼働させておくと、kbmemusedは物理 メモリ量に近い値にまで上昇します。しかし、実際にカーネルやプロセス空間によって確保されている容量はここからkbbuffersとkbcachedを 引いた値になります。

仮想マシンの集約密度を決めるサイジング (2/3):実践! Xenで実現するサーバ統合(3) - @IT

buffers

キロバイト単位でのカーネルがバッファとして使用中のメモリの量

cached

キロバイト単位でのカーネルがキャッシュデータとして使用中のメモリの量

12.Interrupt - Interrupt i000


前提知識
ƒn[ƒhƒEƒFƒAŠ„‚荞‚Ý‚ÌŠî‘b’mŽ¯の「割り込みって?」の部分を読んでください。

割り込み状況をプロセッサごと(マルチプロセッサシステム)、 及び割り込みレベル(0から15)ごとに 分類して表示することができます。

このレポート(ページに合わせて横に切り詰めている) には各割り込みレベルごとにコラムが1つあります (例えば、i002/sフィールドは割り込みレベル2の割合を示している)。 これがマルチプロセッサシステムなら、各CPUのサンプル期間ごとに1行表示されるでしょう。

このレポートでもう1つ重要なことは、 sarは特定の割り込みフィールドに対してデータが収集されない場合、 そのフィールドを追加または削除します。 上記のレポートの例では、レポートの最後にサンプル期間の開始時にはなかった 割り込みレベル(3と10)を含んでいます。

引用 -> Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

割り込み - Wikipedia

13.Interrupt - Interrupt i001


14.Interrupt - Interrupt i002


15.Interrupt - Interrupt i008


16.Interrupt - Interrupt i011


17.Interface - Io - Interface traffic

ネットワークデバイスの統計値(Io)

rxbyt列とtxbyt列です。これらはそれぞれ1秒間に「受信したデータ量」と「送信したデータ量」をバイト単位で示しています。

仮想マシンの集約密度を決めるサイジング (2/3):実践! Xenで実現するサーバ統合(3) - @IT

18.Interface - Io - Interface errors


ネットワークデバイス障害の統計値(Io)

19.Interface - eth0 - Interface traffic


ネットワークデバイスの統計値(eth0)

rxbyt列とtxbyt列です。これらはそれぞれ1秒間に「受信したデータ量」と「送信したデータ量」をバイト単位で示しています。

仮想マシンの集約密度を決めるサイジング (2/3):実践! Xenで実現するサーバ統合(3) - @IT

20.Interface - eth0 - Interface errors


ネットワークデバイス障害の統計値(Io)

21.Sockets


使用中ソケットの統計値

前提知識
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-6.html#ss6.3

totsck

使用中のソケット数の合計

ip-frag

使用中の IP フラグメント数

udp/tcp/raw

使用中の udp, tcp, raw ソケット数

22.Load


キューの長さとロードアベレージ

Load Average

システムロードアベレージ。 locad 1mn は 「過去 1 分間のシステムロードアベレージ」、locad 5mn は「過去 5 分間のシステムロードアベレージ」です。

plist-sz

プロセスリスト中のプロセスとスレッド数

runq-sz

実行キューの長さ (実行時間を待っているプロセス数)

23.Disk - dev8-0 - dev8-0


ディスク関連アクティビティ

このレポートではデバイスごとの情報が表示されますが、詳細はほとんどありません。

特定のバスやデータパスのバンド幅使用を表示する明確な統計はありませんが、 少なくとも動作していてアクティビティを使用しているデバイスを確認して、 間接的にバスの負荷を確定することができます。

Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal

この出力ではメジャー番号が8のデバイス(1番目のSCSIディスクの /dev/sda)が 1 入出力処理より若干多い秒平均値になっていることを示しています(tsp フィールド)。このデバイスの入出力アクティビティのほとんどが書き込みであり (Blk_wrtnフィールド)、毎秒25ブロック余りの書き込みになっています (Blk_wrtn/sフィールド)。

http://web.mit.edu/rhel-doc/OldFiles/4/RH-DOCS/rhel-isa-ja-4/s1-bandwidth-rhlspec.html

まとめ

いろいろなサイトを回ったり、書籍を見たりして書いていきましたが、「ここ違ってるよ!」などの突っ込みは大歓迎ですので、お願いします!