Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #!/bin/bash
  2. # Copyright Dobromir Dobrev &copy 2017 : dobreff@gmail.com
  3. # Remember to start Xorg server first using "sudo X :0 &"
  4. # The configuration file
  5. JSON=`cat /root/config.json`
  6. osSeries=`echo $JSON | jq -r .osSeries`
  7.  
  8. # Getting GPU Cards
  9. if [ "$osSeries" == "nvidia" ]; then
  10. GPU_COUNT=`nvidia-smi -a |grep Temperature | wc -l`
  11. else
  12. echo "Get going, no nvidia cards are supported"
  13. fi
  14.  
  15. # Default values
  16. nvTempTarget=70
  17. nvFanSpeedMin=45
  18. # User defined values
  19. nvTempTargetUser=`echo $JSON | jq -r .nvTempTarget`
  20. nvFanSpeedMinUser=`echo $JSON | jq -r .nvFanSpeedMin`
  21.  
  22. if [ "$nvTempTargetUser" -ge 30 ] && [ "$nvTempTargetUser" -le 85 ]; then
  23. nvTempTarget="$nvTempTargetUser"
  24. fi
  25.  
  26. if [ "$nvFanSpeedMinUser" -ge 20 ] && [ "$nvFanSpeedMin" -le 100 ]; then
  27. nvFanSpeedMin="$nvFanSpeedMinUser"
  28. fi
  29.  
  30. x=0
  31. while [ $x -lt $GPU_COUNT ]; do
  32.  
  33. if [ "$osSeries" == "nvidia" ]; then
  34. GPU_FAN=`nvidia-smi -q --gpu=$x |grep "Fan Speed" | awk -F " " '{print $4}' | tr -d '%'`
  35. GPU_TEMP=`nvidia-smi -q --gpu=$x |grep "GPU Current Temp" | awk -F " " '{print $5}' | tr -d 'C'`
  36. fi
  37.  
  38. FAN_UP_STEP=30
  39. FAN_DOWN_STEP=2
  40.  
  41. DIFF=`echo "$((nvTempTarget-GPU_TEMP))" | sed 's/-//g'`
  42.  
  43. if [ $DIFF -ge 7 ]; then
  44. FAN_UP_STEP=100
  45. FAN_DOWN_STEP=2
  46. elif [ $DIFF -ge 5 ]; then
  47. FAN_UP_STEP=30
  48. FAN_DOWN_STEP=1
  49. elif [ $DIFF -ge 4 ]; then
  50. FAN_UP_STEP=12
  51. FAN_DOWN_STEP=1
  52. elif [ $DIFF -ge 3 ]; then
  53. FAN_UP_STEP=8
  54. FAN_DOWN_STEP=1
  55. elif [ $DIFF -ge 2 ]; then
  56. FAN_UP_STEP=1
  57. FAN_DOWN_STEP=1
  58. elif [ $DIFF -ge 1 ]; then
  59. FAN_UP_STEP=1
  60. FAN_DOWN_STEP=0
  61. elif [ $DIFF -ge 0 ]; then
  62. FAN_UP_STEP=0
  63. FAN_DOWN_STEP=0
  64.  
  65. fi
  66.  
  67. NEW_GPU_FAN=$GPU_FAN
  68.  
  69. if [ $GPU_TEMP -gt $((nvTempTarget)) ]; then
  70. NEW_GPU_FAN=$(( GPU_FAN + FAN_UP_STEP ))
  71. fi
  72.  
  73. if [ $GPU_TEMP -lt $((nvTempTarget-2)) ]; then
  74. NEW_GPU_FAN=$(( GPU_FAN - FAN_DOWN_STEP ))
  75. fi
  76.  
  77.  
  78. if [ $NEW_GPU_FAN -le $nvFanSpeedMin ]; then
  79. NEW_GPU_FAN=$nvFanSpeedMin
  80. fi
  81.  
  82. if [ $NEW_GPU_FAN -ge 100 ]; then
  83. NEW_GPU_FAN=100
  84. fi
  85.  
  86. if [ "$osSeries" == "nvidia" ]; then
  87. DISPLAY=:0.$x /usr/bin/nvidia-settings -a [gpu:$x]/GPUFanControlState=1 -a [fan:$x]/GPUTargetFanSpeed=$NEW_GPU_FAN
  88. fi
  89. x=$((x+1))
  90. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement