#!/bin/bash
|
|
usage()
|
{
|
echo "Usage: cpu_freq_test.sh [test_second] [every_freq_stay_second]"
|
echo "example: cpu_freq_test.sh 3600 30"
|
echo "means cpu_freq_test.sh will run 1 hour and every cpu frequency stay 10s"
|
}
|
|
echo "test will run $1 seconds"
|
echo "every cpu frqeucny will stay $2 seconds"
|
|
#disalbe thermal
|
if [ -e /sys/class/thermal/thermal_zone0 ]; then
|
echo user_space >/sys/class/thermal/thermal_zone0/policy
|
fi
|
|
if [ -e /sys/class/thermal/thermal_zone1 ]; then
|
echo user_space > /sys/class/thermal/thermal_zone1/policy
|
fi
|
|
#caculate how many cpu core
|
cpu_cnt=`cat /proc/cpuinfo | grep processor | sort | uniq | wc -l`
|
|
stressapptest -s $1 --pause_delay 10 --pause_duration 1 -W --stop_on_errors -M 128&
|
|
RANDOM=$$$(date +%s)
|
time_cnt=0
|
|
while true; do
|
if [ $time_cnt -ge $1 ]
|
then
|
echo "======TEST SUCCESSFUL, QUIT====="
|
exit 0
|
fi
|
for d in /sys/devices/system/cpu/cpufreq/*; do
|
echo userspace > $d/scaling_governor
|
|
read -a FREQS < $d/scaling_available_frequencies
|
FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]}
|
echo Set $d freq to ${FREQ}
|
echo ${FREQ} > $d/scaling_setspeed
|
cur_freq=`cat $d/scaling_cur_freq`
|
echo Get "***$d freq $cur_freq***"
|
done
|
sleep $2
|
let "time_cnt=$time_cnt+$2"
|
done
|