Nvidia autofan script mod2|Автоуправление вентиляторами Nvidia mod 2

My fans seem to max out at around 75%, even if the card temp is above 71 degrees which is what I have configured at the max temp. Here’s an example from one of my rigs:

I know I had an issue with my CPU loads being high, but I don’t think that’s the case here. Top on above rig as follows:

And a view of GPU temps across a larger section of miners. So for the most part, autofan is doing a good job of adjusting fan speeds, but a few don’t seem to spin as fast as they should.

@crazydane wait new release please. Autofan will be built in HiveOS with more aggresive algo and AMD support.
p.s. in current version change MIN_TEMP=55 . MIN_COEF|MAX_COEF will be setted automatic.

I have my own take on the autofan which targets a fixed temperature rather than a coefficient-based fan increase:

for (( i = 0; i < $NV_CARDS; i++ )); do
  NV_DATA=`nvidia-smi -i $i --query-gpu=fan.speed,temperature.gpu --format=csv,noheader,nounits`
  CURRENT_FAN=`awk -F', ' '{print $1}' <<< $NV_DATA`
  CURRENT_TEMP=`awk -F', ' '{print $2}' <<< $NV_DATA`
  DIFF=$(( $CURRENT_TEMP - $TARGET_TEMP )) # low: 60-65=-5  High: 70-65=5
  NEW_FAN=$CURRENT_FAN

  if [[ $DIFF -ge 2 ]]; then # too high temperature
	NEW_FAN=$(( $CURRENT_FAN + $DIFF ))
	if [[ $NEW_FAN -gt $MAX_SPEED ]]; then
	  NEW_FAN=$MAX_SPEED
	fi
  elif [[ $DIFF -le -2 ]]; then # too low temperature
	NEW_FAN=$(( $CURRENT_FAN - ${DIFF#-} / 2 )) # get absolute number of $DIFF and divide it by 2
	if [[ $NEW_FAN -lt $MIN_SPEED ]]; then
	  NEW_FAN=$MIN_SPEED
	fi
  fi

  if [[ $NEW_FAN -eq 0 || $NEW_FAN -eq $CURRENT_FAN ]]; then # do nothing
	echo -e "GPU${i}	${CURRENT_TEMP}\xc2\xb0C	${CURRENT_FAN}%"
  else
	echo -e "GPU${i}	${CURRENT_TEMP}\xc2\xb0C	${CURRENT_FAN}% -> ${NEW_FAN}%"
	ARGS+=" -a [gpu:$i]/GPUFanControlState=1 -a [fan:$i]/GPUTargetFanSpeed=$NEW_FAN"
  fi
done

This essentially increase the fan speed by the temp difference and then if it gets too cold, reduces it by diff/2. Runs only if the difference is >=2 degrees and doesn’t go below and above a specified min/max fan %.
It’d be lovely if you can implement it into your script. I’ve been running it for nearly 2 months and works just fine.

@brnfex sorry, but FAN_SPEED -ne GPU_TEMP. It’s will be very simple. Just look at the AfterBurner fan curve.
But it’s may be good for this rig.

@steambot, sorry but I didn’t understand that. :smiley:
AMD’s temperature target (keep the same temperature and increase/decrease the fan in order to keep it) makes the GPU run at constant temperature, which is good for the chip itself. I’m not saying that my solution is better, it is just another way of achieving a fan control.

@steambot setting MIN_TEMP = 55 did the trick! That one CPU that was hitting low to mid 70’s with fan speed maxing out around 75%, is now running at 68 degrees with fan speed of 90%. I’ll look forward to the version integrated with the OS. Ideally, I’d like to get it dialed in to where the fans run at whatever speed is needed to keep the temp at 71 degrees. Don’t really need the fan to run faster than this and cool the GPU even more.

In HiveOS version will be only Target Temp setting and miner stop temperature.

tested new version in hive 59, and it works really bad with 13 P106 cards.
with target 65C - temp is jumping up and down from 55 to 72 and fan speed 50% - 95%.
(if i set manually 60% - I getting about 66C on all cards.)
Imho, it is due to big step in fan speed change. it must go up fast and down slow.
the same as brnfex idea. I will try his script

@Bio just wait 15 minutes and “jumping” must be stopped and script set stable fan speed.
give me screenshot with script work, please.
скрипт стабилизирует обороты минут через 15, если жарко, чтобы температура карты не поднималась выше установленного таргет темп.
скриншот работы скрипта и настроек покажи плиз, чтобы глянуть что не так.

second time i started with 60% in OC.
and it looks like problem with card numbering. first card remained unchanged on 60%.
and on others I see 100% with low temp, and 30% with 73C.

@Bio я вижу на некоторых картах разница в показаниях температура/скорость. странные показание 6 и 7-й карт.
на клее отключена регулировка скорости кулеров?
зачем включена встроенная карта? майнер на цпу при 13 картах, что он накапает???
коэффициенты увеличиваются, скрипт работает. почему параметры разные, нужно отдельно на риге смотреть.

если бы клей регулировал нвидию, в скрипте не было бы такой такой нужды.
в скрипте есть ошибка из за которой он не регулирует первую карту.
и показания остальных не все совпадают. из за этого скрипт неправильно регулирует некоторые карты. это видно по разнице показаний и объясняет его странную работу.
возможно это возникает из за встройки, но если бы был смешанный риг, то был бы такой же глюк. в параметры передается индекс из хайва, а nvsettings нумерует карты начиная 0. исправил это, и вроде как работает. без этого регулировалась скорость соседнего вентилятора.

а встройка удобна для настройки, причем на любых ригах 1060/Р106/1070/RX это не создавало проблем.

ок, проверю. спасибо
скрипт тестировался не один день. это какая то трабла с данными из массива, а не в коде.

в массиве первые данные идут 0, 0 (fans_array, temperatures_array), что логично.
они как раз берутся правильные, с индекса 1. это видно по тому, что карты на автофан скрине нумеруются с 1 до 13. и эти же индексы передаются в nvsettings,
хотя туда должны попадать с 0 до 12

Autofan works ok, but the steps are quite aggressive. It keeps on increasing and decreasing the fan speed by 3-4% every minute or so:

[spoiler]

2018-06-18 22:50:58
GPU 0 ADM [04:00.0]: 64°C 44%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 64°C 44%

2018-06-18 22:51:18
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:51:38
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 64°C 44%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:51:58
GPU 0 ADM [04:00.0]: 64°C 44%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:52:18
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 64°C 44%

2018-06-18 22:52:38
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 64°C 44%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:52:58
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:53:18
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:53:38
GPU 0 ADM [04:00.0]: 64°C 44%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

2018-06-18 22:53:58
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 63°C 40%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 64°C 44%

2018-06-18 22:54:18
GPU 0 ADM [04:00.0]: 63°C 40%
GPU 1 ADM [05:00.0]: 64°C 44%
GPU 2 ADM [06:00.0]: 61°C 40%
GPU 3 ADM [07:00.0]: 63°C 40%

[/spoiler]

Fan speed increase/decrease should be more gradual.
CPU load also increased on another rig (10 nvidia cards) from 3.5 with my version of the script to 5.5 with yours after 0.5-69 upgrade. Another 6-gpu nvidia rig increased the load from 0.2 to 1.5. CPU load on AMD is fine.

Вам спасибо.
немного смущает название TARGET_TEMP. ожидается что это некая средняя температура. а на практике получается, что это предельная. при 65С - карты по факту 60-63, редко даже 64.

@brnfex show me your config please

@Bio таргет как бы целевая температура. никак не средняя. на практике да, крайняя.
все риги, которые тестировали, начинали с ГПУ_0. нужно разобраться почему у вас не так.