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でグラフを書かせてみたら、グラフを書く負荷で、そのマシンの負荷が閾値を超えたりする始末なので、とりあえず何でもかんでもグラフを書きやがれってのも、多少、危ないかなという気もするし…と。