2019-04-10 00:43:25 +01:00
|
|
|
#!/bin/bash
|
2019-04-10 00:48:53 +01:00
|
|
|
|
|
|
|
# Based on https://github.com/bamarni/pi64/issues/4#issuecomment-292707581
|
|
|
|
# sysbench manual: http://imysql.com/wp-content/uploads/2014/10/sysbench-manual.pdf
|
|
|
|
|
2019-04-10 00:56:48 +01:00
|
|
|
# check if bechmarking tool is installed
|
2019-04-10 00:48:53 +01:00
|
|
|
sysbenchInstalled=$(sysbench --version 2>/dev/null | grep -c 'sysbench 0.')
|
|
|
|
if [ ${sysbenchInstalled} -eq 0 ];then
|
|
|
|
sudo apt install -y sysbench
|
|
|
|
fi
|
|
|
|
|
2019-04-10 00:56:48 +01:00
|
|
|
# do debug outputs to the STDERR - so that the STDOUT is just the results in the end
|
2019-04-10 01:41:03 +01:00
|
|
|
echo "RaspiBlitz Powertest v0.1" >&2
|
2019-04-10 00:56:48 +01:00
|
|
|
echo "Starting sysbench to run for 60 seconds (--max-time=60 --cpu-max-prime=10000)" >&2
|
2019-04-10 00:48:53 +01:00
|
|
|
|
2019-04-10 02:03:29 +01:00
|
|
|
# result values
|
|
|
|
powerWARN=0
|
|
|
|
powerFAIL=0
|
2019-04-10 02:11:36 +01:00
|
|
|
powerMIN=9999999
|
2019-04-10 02:03:29 +01:00
|
|
|
tempWARN=0
|
|
|
|
tempFAIL=0
|
|
|
|
tempMAX=0
|
|
|
|
|
2019-04-10 00:56:48 +01:00
|
|
|
# starting bench mark
|
2019-04-10 02:03:29 +01:00
|
|
|
sysbench --max-time=60 --test=cpu --cpu-max-prime=10000 --num-threads=4 run 1>/dev/null 2>&1 &
|
2019-04-10 00:48:53 +01:00
|
|
|
|
2019-04-10 00:56:48 +01:00
|
|
|
# keep monitoring in the background
|
2019-04-10 00:43:25 +01:00
|
|
|
Maxfreq=$(( $(awk '{printf ("%0.0f",$1/1000); }' </sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq) -15 ))
|
2019-04-10 02:03:29 +01:00
|
|
|
for (( n=0; n<15; ++n )); do
|
2019-04-10 01:08:47 +01:00
|
|
|
|
|
|
|
# make measurements
|
2019-04-10 00:48:53 +01:00
|
|
|
Temp=$(sudo vcgencmd measure_temp | cut -f2 -d=)
|
|
|
|
RealClockspeed=$(sudo vcgencmd measure_clock arm | awk -F"=" '{printf ("%0.0f",$2/1000000); }' )
|
2019-04-10 00:43:25 +01:00
|
|
|
SysFSClockspeed=$(awk '{printf ("%0.0f",$1/1000); }' </sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
|
2019-04-10 00:48:53 +01:00
|
|
|
CoreVoltage=$(sudo vcgencmd measure_volts | cut -f2 -d= | sed 's/000//')
|
2019-04-10 01:08:47 +01:00
|
|
|
|
|
|
|
# debug output
|
2019-04-10 00:43:25 +01:00
|
|
|
if [ ${RealClockspeed} -ge ${Maxfreq} ]; then
|
2019-04-10 00:56:48 +01:00
|
|
|
echo -e "${Temp}$(printf "%5s" ${SysFSClockspeed}) MHz ${CoreVoltage}" >&2
|
2019-04-10 00:43:25 +01:00
|
|
|
else
|
2019-04-10 00:56:48 +01:00
|
|
|
echo -e "${Temp}$(printf "%5s" ${RealClockspeed})/$(printf "%4s" ${SysFSClockspeed}) MHz ${CoreVoltage}" >&2
|
2019-04-10 00:48:53 +01:00
|
|
|
fi
|
2019-04-10 01:08:47 +01:00
|
|
|
|
2019-04-10 01:24:51 +01:00
|
|
|
# analyse Voltage
|
2019-04-10 02:03:29 +01:00
|
|
|
voltFloat=$(echo "${CoreVoltage/V/}*1000000" | bc)
|
2019-04-10 01:24:51 +01:00
|
|
|
voltInt=${voltFloat/.*}
|
2019-04-10 01:35:11 +01:00
|
|
|
#echo "V -> ${voltFloat}/${voltInt}"
|
2019-04-10 02:03:29 +01:00
|
|
|
if [ ${voltInt} -lt 1200100 ]; then
|
|
|
|
powerFAIL=1
|
|
|
|
fi
|
|
|
|
if [ ${voltInt} -lt 1250000 ]; then
|
|
|
|
powerWARN=1
|
|
|
|
fi
|
|
|
|
if [ ${voltInt} -lt ${powerMIN} ]; then
|
|
|
|
powerMIN=${voltInt}
|
2019-04-10 01:24:51 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# analyse Temp
|
2019-04-10 01:32:44 +01:00
|
|
|
tempFloat=$(echo "${Temp/\'C/}*100" | bc)
|
|
|
|
tempInt=${tempFloat/.*}
|
2019-04-10 01:35:11 +01:00
|
|
|
#echo "T -> ${tempFloat}/${tempInt}"
|
|
|
|
if [ ${tempInt} -gt 6999 ]; then
|
2019-04-10 02:03:29 +01:00
|
|
|
tempFAIL=1
|
|
|
|
fi
|
|
|
|
if [ ${tempInt} -gt 6500 ]; then
|
|
|
|
tempWARN=1
|
|
|
|
fi
|
|
|
|
if [ ${tempInt} -gt ${tempMAX} ]; then
|
|
|
|
tempMAX=${tempInt}
|
2019-04-10 01:32:44 +01:00
|
|
|
fi
|
2019-04-10 01:08:47 +01:00
|
|
|
|
2019-04-10 00:43:25 +01:00
|
|
|
sleep 5
|
2019-04-10 02:03:29 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
echo "# result of powertest script"
|
|
|
|
echo "powerFAIL=${powerFAIL}"
|
|
|
|
echo "powerWARN=${powerWARN}"
|
|
|
|
echo "powerMIN=${powerMIN} microVolt"
|
|
|
|
echo "tempFAIL=${tempFAIL}"
|
|
|
|
echo "tempWARN=${tempWARN}"
|
|
|
|
echo "tempMAX=${tempMAX} centiGrad"
|