gangliaでサーバを監視させようとしたら、gmond.confで監視対象とするmetricを設定するというところまでは、わかったんだけど、CPU関連の「cpu_aidle」と「cpu_idle」ってなんだろうというのがよくわからず。

…似たような名前で、遊んでるマシンを監視対象とした場合、(ぱっと見た感じ)似たような値を出力してくれてるので、どっちかでいいかなぁと思ったりして。

で、Google先生に聞いても教えてくれないので、gangliaのソースを解凍して、./gmond/modules/cpu辺りのmod_cpu.cをなんとなく眺めてみたら、それっぽい配列があった。

static Ganglia_25metric cpu_metric_info[] =
{
{0, "cpu_num",    1200, GANGLIA_VALUE_UNSIGNED_SHORT, "CPUs", "zero", "%hu",  UDP_HEADER_SIZE+8, "Total number of CPUs"},
{0, "cpu_speed",  1200, GANGLIA_VALUE_UNSIGNED_INT,   "MHz",  "zero", "%u",  UDP_HEADER_SIZE+8, "CPU Speed in terms of MHz"},
{0, "cpu_user",     90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percentage of CPU utilization that occurred while executing at the user level"},
{0, "cpu_nice",     90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percentage of CPU utilization that occurred while executing at the user level with nice priority"},
{0, "cpu_system",   90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percentage of CPU utilization that occurred while executing at the system level"},
{0, "cpu_idle",     90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request"},
{0, "cpu_aidle",  3800, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percent of time since boot idle CPU"},
{0, "cpu_wio",      90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "Percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request"},
{0, "cpu_intr",     90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "cpu_intr"},
{0, "cpu_sintr",    90, GANGLIA_VALUE_FLOAT,          "%",    "both", "%.1f", UDP_HEADER_SIZE+8, "cpu_sintr"},
{0, NULL}
};

これによると、

cpu_idle: Percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request

cpu_aidle: Percent of time since boot idle CPU

ってことのようだ。

後者の「cpu_aidle」がbootしてからの経過時間に対して、CPUがなんにもしてなかった時間の割合、前者の

「cpu_idle」はCPUがなんにもしてなかった時間-(ディスクIOを待っていた時間)の割合ってことだろうか。

…ただ、グラフを眺める限りでは、「cpu_idle」は、bootからの経過時間で計算って感じではなさそうなので、なにか単位時間に対して、値を計算しているような気がする。

「cpu_aidle」の値を、長い期間、監視しつづければ、CPUが使われることによって値が低下してくことになるだろうから、サーバリソースの追加投入時期の検討なんかに使えそうな気がする。

一方、いつ、CPUにどれくらいの負荷がかかったかは「cpu_user」とか「cpu_system」で取得できそうな気がするので、「cpu_idle」はCPU負荷の監視項目としては要らない気がするなぁ…。うーむ(汗)とはいえ、CPU空き率(?)を見ようと思ったら、「cpu_user」と「cpu_system」などを足し算して、100から引くみたいなことをせざるを得ないので、それはそれであってもいいかなという気もしてみたり。

…とはいえ、古めのPC(NorthwoodなCeleron機…涙)にCentOSを入れて、Gangliaでグラフを書かせてみたら、グラフを書く負荷で、そのマシンの負荷が閾値を超えたりする始末なので、とりあえず何でもかんでもグラフを書きやがれってのも、多少、危ないかなという気もするし…と。