powerdのおかげで、CPUの周波数が動的に変化するようになった。
動的に変化するならば、グラフで見たいところです。
そこで、この辺を参考にグラフ化してみました。
まずは、普通に5分周期のデータソースを作って、下のようなスクリプトでグラフにしてみた。
poller.phpの実行でcpuが忙しくなってしまったところを計測してしまうのかな?
そこで、別のスクリプトを作って1分ごとに周波数を記録し、その平均を5分の値にすることにした。(それこそrrdtoolを使えば良いんだけど、面倒だったのでシェルスクリプトにした)
そして、cacti用のスクリプトは以下のようにする。
そして、cactiのコンソールから以下の手順でグラフにしてみた。
こうしてできたグラフが以下のような感じ。
動的に変化するならば、グラフで見たいところです。
そこで、この辺を参考にグラフ化してみました。
まずは、普通に5分周期のデータソースを作って、下のようなスクリプトでグラフにしてみた。
#!/usr/bin/perl $ret = `sysctl -n dev.cpu.0.freq`; $ret =~ s/\n//; print "$ret";この方法だと、cronで5分毎に起動される cactiのpoller.phpから上記スクリプトが呼ばれて、rrdが更新されると思うんだけど、普段はだいだい75MHzで動いているはずのシステムなのに、グラフでは1GHzくらいが表示されてしまう。
poller.phpの実行でcpuが忙しくなってしまったところを計測してしまうのかな?
そこで、別のスクリプトを作って1分ごとに周波数を記録し、その平均を5分の値にすることにした。(それこそrrdtoolを使えば良いんだけど、面倒だったのでシェルスクリプトにした)
#!/bin/sh FILE=/usr/local/share/cacti/rra/cpufreq.dat val=`sysctl -n dev.cpu.0.freq` echo $val >> $FILE tail -5 $FILE > $FILE.tmp mv $FILE.tmp $FILEこのシェルスクリプトを、cronで1分毎に実行してやる。
そして、cacti用のスクリプトは以下のようにする。
#!/usr/bin/perl $total = 0; $min = 2000; $max = 0; $count = 0; open(FILE, "/usr/local/share/cacti/rra/cpufreq.dat"); while(<FILE>) { chomp; $total += $_; $count++; if ($max < $_) { $max = $_; } if ($min > $_) { $min = $_; } } close(FILE); $ret = $total / $count; print "average:$ret maximum:$max minimum:$min";手抜きなので、データファイルに1件もデータがない場合の動作は保証しない。
そして、cactiのコンソールから以下の手順でグラフにしてみた。
- Data Input Methods の追加
- 左側のメニューから Data Input Methods を選択し、右上の「Add」を押す。
- Data Input Methods の name に「Unix - CPU Frequency」、Input Typeに「Script/Command」、Input Stringに先ほどのスクリプトのパス「perl
/scripts/cpufreq.pl」を入力する。 - Createボタンを押してから、Output Fields のところに「average」、「maximum」、「minimum」の3つを追加する。
- Saveを押す。
- Data Sourcesの追加
- 左側のメニューから Data Sources を選択し、右上の「Add」を押す。
- Hostに「Localhost」を選び、Createを押す。
- Data Source の name に「Localhost - CPU Frequency」、Data Input Methodに「Unix - CPU Frequency」を入力する。
- Data Source ItemのInternal Data Source Nameに「average」、Maximum Valueに2000を入れてCreateを押す。
- Data Source ItemのNewボタンを押して、averageと同じようにmaximum, minimumを追加する。
このとき、Output Fieldをそれぞれあわせる。
※ 何故か、minimumを指定すると正しく rra が作成されないので、この画面の*Turn Off Data Source Debug Mode.をクリックして表示される rrdtool のコマンドラインでrrd ファイルを作成した。
- Graphの追加
- 左側のメニューから Graph Management を選択し、右上の「Add」を押す。
- Hostに「Localhost」を選び、Createを押す。
- Graph ConfigurationのTitle に「Localhost - CPU Frequency」、Upper Limitに2000、Vertical LabelにMHzを入力し、Createを押す。
- Graph ItemsのAddを押し、以下を追加する。
Data Source Color Graph Item Type Consolidation Function Text Format maximum FF0000 LINE2 AVERAGE maximum minimum 00FF00 LINE2 AVERAGE minimum average FFF200 LINE2 AVERAGE average average - GPRINT LAST Current: average - GPRINT AVERAGE Average: maximum - GPRINT MAX Maximum: minimum - GPRINT MIN Minimum:
こうしてできたグラフが以下のような感じ。

カテゴリ
FreeBSDトラックバック(0)
このブログ記事を参照しているブログ一覧: cactiでCPUの周波数をグラフ化する
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1009
コメントする