Advertisement
cyla

freqd

Oct 23rd, 2012
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.82 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. function setfreq {
  4.     LAST_FREQUENCY=$CURRENT_FREQUENCY
  5.  
  6.     echo -n " => setting frequency to ${FREQUENCY[$NEXT_FREQUENCY]}"
  7.     xenpm set-scaling-maxfreq ${FREQUENCY[$NEXT_FREQUENCY]}
  8.  
  9.     CURRENT_FREQUENCY=$NEXT_FREQUENCY
  10.     LAST_CHANGE=$(date +%s)
  11. }
  12.  
  13. FREQUENCY[0]=1000000
  14. FREQUENCY[1]=1333000
  15. FREQUENCY[2]=1667000
  16. FREQUENCY[3]=2000000
  17.  
  18. TEMP_INPUT_SRC="/sys/class/hwmon/hwmon0/temp2_input"
  19. TEMP_CRITICAL_SRC="/sys/class/hwmon/hwmon0/temp2_crit"
  20.  
  21. LAST_FREQUENCY=0
  22. CURRENT_FREQUENCY=0
  23. LAST_CHANGE=0
  24.  
  25. xenpm set-scaling-governor userspace
  26. xenpm set-scaling-minfreq 1000000
  27. xenpm set-scaling-maxfreq 1000000
  28.  
  29. while true
  30. do
  31.     TEMP_INPUT=$(cat $TEMP_INPUT_SRC)
  32.     TEMP_CRITICAL=$(cat $TEMP_CRITICAL_SRC)
  33.     CURRENT_TIMESTAMP=$(date +%s)
  34.     TIME_DIFF=$(( $CURRENT_TIMESTAMP - $LAST_CHANGE ))
  35.  
  36.     PERCENT=$(( $TEMP_INPUT * 100 / $TEMP_CRITICAL ))
  37.     echo -n "${PERCENT}%"
  38.  
  39.     if [ $PERCENT -ge 95 ]
  40.     then
  41.         echo -n " >= 95%"
  42.         if [ $CURRENT_FREQUENCY -ne 0 ]
  43.         then
  44.             NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY - 1 ))
  45.             setfreq $NEXT_FREQUENCY
  46.         else
  47.             echo 1 > /proc/acpi/ibm/beep
  48.         fi
  49.     elif [ $PERCENT -ge 90 ]
  50.     then
  51.         echo -n " >= 90%"
  52.         if [ $CURRENT_FREQUENCY -lt 1 ] && [ $TIME_DIFF -ge 20 ]
  53.         then
  54.             NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
  55.             setfreq $NEXT_FREQUENCY
  56.         fi
  57.     elif [ $PERCENT -ge 85 ]
  58.     then
  59.         echo -n " >= 85%"
  60.         if [ $CURRENT_FREQUENCY -lt 2 ] && [ $TIME_DIFF -ge 15 ]
  61.         then
  62.             NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
  63.             setfreq $NEXT_FREQUENCY
  64.         fi
  65.     else
  66.         echo -n " < 85%"
  67.         if [ $CURRENT_FREQUENCY -lt 3 ] && [ $TIME_DIFF -ge 10 ]
  68.         then
  69.             NEXT_FREQUENCY=$(( $CURRENT_FREQUENCY + 1 ))
  70.             setfreq $NEXT_FREQUENCY
  71.         fi
  72.     fi
  73.  
  74.     echo ""
  75.     sleep 1
  76. done
  77.  
  78. xenpm set-scaling-governor powersave
  79. xenpm set-scaling-minfreq $FREQUENCY[0]
  80. xenpm set-scaling-maxfreq $FREQUENCY[3]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement