Перейти к содержимому


vatfree

Регистрация: 17 окт 2019
Offline Активность: мар 19 2021 12:54
-----

#124928 Автоматическое управление вентиляторами NVIDIA

Написано vatfree 22 октября 2019 - 06:05

ты только сейчас пишешь, что твой скрипт под линукс? ты гений просто. в нормально оформленных темах обычно в шапке сразу ТС пишут о чём речь


  • 1


#124904 Автоматическое управление вентиляторами NVIDIA

Написано vatfree 20 октября 2019 - 11:15

афтербёрнере под линуху?


  • 2


#124862 Автоматическое управление вентиляторами NVIDIA

Написано vatfree 17 октября 2019 - 02:20

Добрый день,

я небольшой специалист в программиоровани, но с помощью инета и друзей написал вот такой скрипт. запускаю его в автостарте и он удерживает температуру процессоров в пределенном диапазоне.

скрипт следит за любым количеством карт, нужно указать сколько. держит температуру в диапазоне 72-77 градусов. если температура выше 77 - увеличивает скорость вентиляторов. если ниже 72 - снижает. причем увеличивает быстро, снижает неторопливо, но скоростью можно управлять.


 

Код:
#! /bin/bash
#----------------------------------------------------------------------
# Description: adaptive fan speed management for NVIDIA GPUs on Linux
# to maintain the given temperature
#----------------------------------------------------------------------


FSCTLLOG="/home/srgmnr/Mining/log/fsctl.log"

numberofgpu=2 #how many GPU do you have
polltime=3 # in seconds
remindevery=600 #seconds

targethi=77 # HI target GPU temperature
targetlow=72 # LOW target GPU temperature
fansmin=35 # minimum GPU fan speed
fansmax=90 # maximum GPU fan speed
faninit=35 # initial GPU fan speed

stepup=5 #increase step for fan speed
stepdown=1 #decrease step for fan speed



trap ctrl_c INT

ctrl_c() {
echo >> $FSCTLLOG
echo -n "Resetting GPU fan management: ">> $FSCTLLOG
for (( i=0; i<numberofgpu; i++)); do
nvidia-settings -a "[gpu:$i]/GPUFanControlState=0">> $FSCTLLOG
done
exit 0
}

setspeed()
{
echo "GPU $1 (temp=$4) fan speed changed from $2 to $3">> $FSCTLLOG
nvidia-settings -a "[fan:$1]/GPUTargetFanSpeed=$3" >> $FSCTLLOG
}

#start script

echo "Fan Speed Control script started" > $FSCTLLOG
date >> $FSCTLLOG

#export DISPLAY=:0

echo "Lets check all $numberofgpu yours GPU(s)..." >> $FSCTLLOG
for (( i=0; i<numberofgpu; i++)); do

result=`nvidia-settings -a [gpu:$i]/GPUFanControlState=1 | grep "assigned value 1"`
test -z "$result" && echo "Fan speed management is not supported on this GPU. Exiting">> $FSCTLLOG && exit 1

nvidia-settings -a "[gpu:$i]/GPUFanControlState=1" -a "[fan:$i]/GPUTargetFanSpeed=$faninit" >> $FSCTLLOG
done

#and than let's rock!
secondstoremind=0

while :; do
for (( i = 0; i < numberofgpu; i++ )); do
temp=`nvidia-settings -q [gpu:$i]/GPUCoreTemp -t | head -1`
fanspeed=`nvidia-settings -q [fan:$i]/GPUCurrentFanSpeed -t | head -1`

if [ $temp -lt $targetlow ]; then
fannewspeed=$(($fanspeed-$stepdown))
if [ $fannewspeed -lt $fansmin ]; then
fannewspeed=$fansmin
fi
fi
if [ $temp -gt $targethi ]; then
fannewspeed=$(($fanspeed+$stepup))
if [ $fannewspeed -gt $fansmax ]; then
fannewspeed=$fansmax
fi
fi

if [ $fannewspeed -ne $fanspeed ]; then
setspeed $i $fanspeed $fannewspeed $temp
fi
done
sleep $polltime

secondstoremind=$(($secondstoremind+$polltime))

if [ $secondstoremind -gt $remindevery ]; then
secondstoremind=0
echo>> $FSCTLLOG
echo "... another $remindevery seconds left">> $FSCTLLOG
nvidia-smi>> $FSCTLLOG
fi
done

  • 1