fit-pc2iのCPU 温度取得

volt.nonbe.com-cpu_thermal-day

先日のCPU温度の計測について。

以前エントリにしたように、HDD Temperature で十分だと思っていた。

そのあと色々あってもう1台のfit-pc2iを購入し、HDDをSSDにした。そしたら HDD Tempが出ないのだ。

volt.nonbe.com-hddtemp_smartctl-day

ちょろちょろと揺れてるが、暑かろうが寒かろうが始終こんな感じ。

んで、困ってググってたら以下のサイトが見つかった。

http://www.fit-pc.com/forum/viewtopic.php?f=9&t=401

んでこれを取得したらこんな感じのグラフになった。

volt.nonbe.com-cpu_thermal-day

先日購入したヒートシンク、こっちにもつけてるので、涼しい時(?)はなぜかフラットになるのは一緒。実際、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
カテゴリー: fit PC2i パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.