Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function setfreq {
- LAST_FREQUENCY=$CURRENT_FREQUENCY
- echo -n " => setting frequency to ${FREQUENCY[$NEXT_FREQUENCY]}"
- xenpm set-scaling-maxfreq ${FREQUENCY[$NEXT_FREQUENCY]}
- CURRENT_FREQUENCY=$NEXT_FREQUENCY
- LAST_CHANGE=$(date +%s)
- }
- FREQUENCY[0]=1000000
- FREQUENCY[1]=1333000
- FREQUENCY[2]=1667000
- FREQUENCY[3]=2000000
- TEMP_INPUT_SRC="/sys/class/hwmon/hwmon0/temp2_input"
- TEMP_CRITICAL_SRC="/sys/class/hwmon/hwmon0/temp2_crit"
- LAST_FREQUENCY=0
- CURRENT_FREQUENCY=0
- LAST_CHANGE=0
- xenpm set-scaling-governor userspace
- xenpm set-scaling-minfreq 1000000
- xenpm set-scaling-maxfreq 1000000
- while true
- do
- TEMP_INPUT=$(cat $TEMP_INPUT_SRC)
- TEMP_CRITICAL=$(cat $TEMP_CRITICAL_SRC)
- CURRENT_TIMESTAMP=$(date +%s)
- TIME_DIFF=$(( $CURRENT_TIMESTAMP - $LAST_CHANGE ))
- PERCENT=$(( $TEMP_INPUT * 100 / $TEMP_CRITICAL ))
- echo -n "${PERCENT}%"
- if [ $PERCENT -ge 95 ]
- then
- echo -n " >= 95%"
- if [ $CURRENT_FREQUENCY -ne 0 ]
- then
- NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY - 1 ))
- setfreq $NEXT_FREQUENCY
- else
- echo 1 > /proc/acpi/ibm/beep
- fi
- elif [ $PERCENT -ge 90 ]
- then
- echo -n " >= 90%"
- if [ $CURRENT_FREQUENCY -lt 1 ] && [ $TIME_DIFF -ge 20 ]
- then
- NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
- setfreq $NEXT_FREQUENCY
- fi
- elif [ $PERCENT -ge 85 ]
- then
- echo -n " >= 85%"
- if [ $CURRENT_FREQUENCY -lt 2 ] && [ $TIME_DIFF -ge 15 ]
- then
- NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
- setfreq $NEXT_FREQUENCY
- fi
- else
- echo -n " < 85%"
- if [ $CURRENT_FREQUENCY -lt 3 ] && [ $TIME_DIFF -ge 10 ]
- then
- NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
- setfreq $NEXT_FREQUENCY
- fi
- fi
- echo ""
- sleep 1
- done
- xenpm set-scaling-governor powersave
- xenpm set-scaling-minfreq $FREQUENCY[0]
- xenpm set-scaling-maxfreq $FREQUENCY[3]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement