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
のように作成しました。
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使用率とは逆さまのグラフになるというわけですね。
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 となります。
11.Memory Misc
kbmemusedの値は、用途を問わずOSが確保していたメモリ量をキロバイト単位で示しています。kbbuffersとkbcachedは、その消費メモリ量の中でページキャッシュとして確保されていた容量をキロバイト単位で示しています。
Linux OSは、ファイルシステムのデータをできる限りページキャッシュに載せようとするので、OSをある程度の時間稼働させておくと、kbmemusedは物理 メモリ量に近い値にまで上昇します。しかし、実際にカーネルやプロセス空間によって確保されている容量はここからkbbuffersとkbcachedを 引いた値になります。
12.Interrupt - Interrupt i000
前提知識
n[hEFAèÝÌîbm¯の「割り込みって?」の部分を読んでください。
割り込み状況をプロセッサごと(マルチプロセッサシステム)、 及び割り込みレベル(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
17.Interface - Io - Interface traffic
ネットワークデバイスの統計値(Io)
rxbyt列とtxbyt列です。これらはそれぞれ1秒間に「受信したデータ量」と「送信したデータ量」をバイト単位で示しています。
18.Interface - Io - Interface errors
ネットワークデバイス障害の統計値(Io)
19.Interface - eth0 - Interface traffic
ネットワークデバイスの統計値(eth0)
rxbyt列とtxbyt列です。これらはそれぞれ1秒間に「受信したデータ量」と「送信したデータ量」をバイト単位で示しています。
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 フラグメント数
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
まとめ
いろいろなサイトを回ったり、書籍を見たりして書いていきましたが、「ここ違ってるよ!」などの突っ込みは大歓迎ですので、お願いします!