rrdtoolで取得するCPU使用率 その2 (2010/01/19 FreeBSD 8.0R) [FreeBSD]
rrdtoolで、MIBからCPU使用率の計算を行う方法ですが、どうやら大きな間違いをしていたようです。前回の方法でmake buildworldをやってみたのですが、表示上CPU使用率は50%で頭打ちしまいました。buildworldでCPU使用率100%に達することは間違いないのです。atom330は疑似クアッドなのでCPUは論理的に4つ存在することになりますが、x4、÷4、どこをどう補正してもつじつまが合いません。
とまあそこは実際に計算してみるのが早いということで、1分ごとにMIBを取得し1秒あたりのCpuRaw値の増分を調査してみました。まず、CpuRawSystem = CpuRawKernel + CpuRawInterruptとなっていることは間違いないようで、前述の二つは計算より除外します。
増分を1秒当たりに変換するために60で除算し、また論理的に4CPUのため4で除算した結果を見ると、おぼろげながら133という数字が見えてきました。
133という数字、なんでしょう? と、sysctlを見ていたらstathzに133という数字が。ソースコード等を厳密に追って調べた訳ではないので確証はないですが、とりあえずそういうことにしておこうと思います。
今回の調査の結果、CpuRawの単位時間当たりの増分は、「stathz x 論理CPU数」っぽいということで。違ったらすみません。
とまあそこは実際に計算してみるのが早いということで、1分ごとにMIBを取得し1秒あたりのCpuRaw値の増分を調査してみました。まず、CpuRawSystem = CpuRawKernel + CpuRawInterruptとなっていることは間違いないようで、前述の二つは計算より除外します。
増分を1秒当たりに変換するために60で除算し、また論理的に4CPUのため4で除算した結果を見ると、おぼろげながら133という数字が見えてきました。
133という数字、なんでしょう? と、sysctlを見ていたらstathzに133という数字が。ソースコード等を厳密に追って調べた訳ではないので確証はないですが、とりあえずそういうことにしておこうと思います。
atom# sysctl -a | grep clockrate kern.clockrate: { hz = 1000, tick = 1000, profhz = 2000, stathz = 133 } hw.clockrate: 1599
今回の調査の結果、CpuRawの単位時間当たりの増分は、「stathz x 論理CPU数」っぽいということで。違ったらすみません。