先日のCPU温度の計測について。
以前エントリにしたように、HDD Temperature で十分だと思っていた。
そのあと色々あってもう1台のfit-pc2iを購入し、HDDをSSDにした。そしたら HDD Tempが出ないのだ。
ちょろちょろと揺れてるが、暑かろうが寒かろうが始終こんな感じ。
んで、困ってググってたら以下のサイトが見つかった。
http://www.fit-pc.com/forum/viewtopic.php?f=9&t=401
んでこれを取得したらこんな感じのグラフになった。
先日購入したヒートシンク、こっちにもつけてるので、涼しい時(?)はなぜかフラットになるのは一緒。実際、2号機はクロック2GHzなので、ヒートシンクがなければ、本体の温度は1号機より5〜10℃程高くなるところ、かなり落ちてて効果覿面である。
話をCPUコア温度に戻すと、リンク先の掲示板に載っているスクリプトではCPU表面温度はコアの温度から−7しているだけのようだった。なので、自分の所ではコア温度をそのまま記録することとした。
以下にmuninのプラグインスクリプトを掲示しておく。
#!/bin/bash # -*- sh -*- # # Plugin to monitor CPU temperatures in Fit-PC2/i. # #%# family=contrib if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then echo 'graph_title CPU core temperature' echo 'graph_args --base 1000 -l 0' echo 'graph_vlabel temp in �C' echo 'graph_category sensors' echo 'core0.label core0' echo 'core1.label core1' exit 0 fi if [[ $EUID -ne 0 ]]; then exit 1 fi PCI_DEV_ADDR=00:0.0 REG_MCR=D0 REG_MDR=D4 B0_INIT=FFFFFFFF B0_EXIT=00000000 function init_thermal { setpci -s $PCI_DEV_ADDR $REG_MDR.l=$B0_INIT setpci -s $PCI_DEV_ADDR $REG_MCR.l=E004B000 } function exit_thermal { setpci -s $PCI_DEV_ADDR $REG_MDR.l=$B0_EXIT setpci -s $PCI_DEV_ADDR $REG_MCR.l=E004B000 } # sch_read_reg: $1 - port, $2 - register function sch_read_reg { setpci -s $PCI_DEV_ADDR $REG_MCR.l=D0"$1""$2"00 for i in `seq 6 9`; do R1=`lspci -s $PCI_DEV_ADDR -xxx | grep "d0:" | cut -d " " -f $i` R2=$R1" "$R2 done echo $R2 } function convert_to_celsius { R1=0x$1 let R2=$R1 C1=$((1680*$R2*$R2/1000000)) C2=$((82652*$R2/100000)) C3=$(($C1 - $C2 + 127 )) echo $C3 } for a in $drives ; do printf "$a.value $(hddtemp -n -q /dev/$a)\n" ; done # main: init_thermal unconverted=`sch_read_reg "04" "B1" | cut -d " " -f 4` sensor0_celsius=`convert_to_celsius $unconverted` unconverted=`sch_read_reg "04" "B1" | cut -d " " -f 3` sensor1_celsius=`convert_to_celsius $unconverted` echo "core0.value $sensor0_celsius" echo "core1.value $sensor1_celsius" exit_thermal