1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunset_cpu_freq() { 4*4882a593Smuzhiyun echo userspace > $1/scaling_governor 5*4882a593Smuzhiyun echo $2 > $1/scaling_setspeed 6*4882a593Smuzhiyun cur=`cat $1/scaling_cur_freq` 7*4882a593Smuzhiyun if [ "$cur" -eq "$2" ];then 8*4882a593Smuzhiyun echo "cpu freq policy:${d##*policy} success change to $cur KHz" 9*4882a593Smuzhiyun else 10*4882a593Smuzhiyun echo "cpu freq: failed change to $2 KHz, now $cur KHz" 11*4882a593Smuzhiyun exit 12*4882a593Smuzhiyun fi 13*4882a593Smuzhiyun} 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunif [ "$#" -eq "1" ];then 16*4882a593Smuzhiyun for d in /sys/devices/system/cpu/cpufreq/*; do 17*4882a593Smuzhiyun read -a array < $d/scaling_available_frequencies 18*4882a593Smuzhiyun let j=${#array[@]}-1 19*4882a593Smuzhiyun for i in `seq 0 $j`; do 20*4882a593Smuzhiyun if [ "$1" -eq "${array[$i]}" ];then 21*4882a593Smuzhiyun set_cpu_freq $d $1 22*4882a593Smuzhiyun exit 23*4882a593Smuzhiyun fi 24*4882a593Smuzhiyun done 25*4882a593Smuzhiyun echo "cpu freq: $1 is not in available frequencies: "${array[*]}"" 26*4882a593Smuzhiyun echo "cpu freq: now $(cat $d/scaling_cur_freq) Hz" 27*4882a593Smuzhiyun done 28*4882a593Smuzhiyunelse 29*4882a593Smuzhiyun cnt=0 30*4882a593Smuzhiyun RANDOM=$$$(date +%s) 31*4882a593Smuzhiyun while true; do 32*4882a593Smuzhiyun for d in /sys/devices/system/cpu/cpufreq/*; do 33*4882a593Smuzhiyun read -a FREQS < $d/scaling_available_frequencies 34*4882a593Smuzhiyun FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]} 35*4882a593Smuzhiyun echo -n "cnt: $cnt, " 36*4882a593Smuzhiyun set_cpu_freq $d ${FREQ} 37*4882a593Smuzhiyun let "cnt=$cnt+1" 38*4882a593Smuzhiyun done 39*4882a593Smuzhiyun done 40*4882a593Smuzhiyunfi 41