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

нет, всё в норме : 12:04:04 up 15:07, 1 user, load average: 0.87, 0.67, 0.63
даже если запускаю вторую копию
top - 12:07:21 up 15:11, 2 users, load average: 0.89, 0.73, 0.66
автофан использует у меня 0.3% цпу и 0.1% памяти, майнер 21% и 17% соответственно

Ну собственно так, для интересу выкладываю, можно вот такую зависимость применить (главное преимущество полный уход от коэффициентов MIN_Coef и MAX_Coef уж что больно они меня в ступор вводят :wink: )

GPU Temp < MIN_temp FAN_SPEED= Min_speed

GPU Temp > MIN_temp && GPU Temp < MAX_temp FAN_SPEED= Min_speed +(100 - Min_speed)*((GPU Temp - MIN_temp)/(MAX_temp-MIN_temp))

GPU Temp > MAX_temp FAN_SPEED= 100%

как мне кажется максимально понятные для пользователя настройки получатся - всего три параметра надо будет ввести MIN_temp , MAX_temp и Min_speed

З.Ы. не критика) за начало разработки скрипта огромный респект

Vejtarn не заметил значительного увеличения нагрузки
System load (1, 5, 15 min): 1.48 1.43 1.35

может вам поиграться параметром DELAY ?

Ну и если уж заговорили об алгоритмах, то в идеале было бы реализовать как в клейморе (только не понятно как там реализовано? ПИД?) - т.к. красными как мне кажется он управляет отлично.
По большому счету я использую два параметра в клейморе для управления температурой -fanmin и -tt , я думаю к такому количеству параметров в итоге и надо привести скрипт. Не считая конечно критических уставок.

[quote=“Deret;3996”]Ну собственно так, для интересу выкладываю, можно вот такую зависимость применить (главное преимущество полный уход от коэффициентов MIN_Coef и MAX_Coef уж что больно они меня в ступор вводят :wink: )
GPU Temp < MIN_temp FAN_SPEED= Min_speed
GPU Temp > MIN_temp && GPU Temp < MAX_temp FAN_SPEED= Min_speed +(100 - Min_speed)*((GPU Temp - MIN_temp)/(MAX_temp-MIN_temp))
GPU Temp > MAX_temp FAN_SPEED= 100%
как мне кажется максимально понятные для пользователя настройки получатся - всего три параметра надо будет ввести MIN_temp , MAX_temp и Min_speed
З.Ы. не критика) за начало разработки скрипта огромный респект
[/quote]

ок, подумаем)

с загрузкой разобрался. на запускал с дуру просто кучу копий скрипта.
Благодарю за помощь.

Deret, вот, как бы, это да. Выставляем порог температур, выставляем желаемую минималку на пропеллере и вперед.

добавлена защита от запуска множественных копий в режиме сервиса через скрипт (при запуске с ключем -g).

=)))

Приветсвую, всех.

Заметил очень интересную особенность
Вот пример:

Установки такие:
Min_Speed - 60
Min_Temp - 45
Max_Temp - 60
Min_Coef - 100
при температуре менее или равной 45, стабильно держит 60%, но как только 46, получаем следующее:
Temp Fans
46°С - 47%
47°С - 49%
48°С - 51%
49°С - 53%
50°С - 55%
51°С - 57%
52°С - 59%
53°С - 61%

Поясню, Нижн формула отрабатывается на отлично, если температура карты ниже, чем Min_temp.
if [[ $GPU_TEMP -le $MIN_TEMP ]]
then
FAN_SPEED=$(($GPU_TEMP * ($MIN_COEF-($MIN_TEMP - $GPU_TEMP) * 2)/100))
[[ $FAN_SPEED -le $MIN_SPEED ]] && FAN_SPEED=$MIN_SPEED

Далее, как только мы выходим на формулу:
elif [[ $GPU_TEMP > $MIN_TEMP ]] && [[ $GPU_TEMP < $MAX_TEMP ]]
then
FAN_SPEED=$(( $GPU_TEMP *(($GPU_TEMP - $MIN_TEMP) * 4 + $MIN_COEF)/100 ))
Обороты падают до указанных мной выше.

Поправьте, если ошибаюсь, но мне кажется, что можно сделать так
elif [[ $GPU_TEMP > $MIN_TEMP ]] && [[ $GPU_TEMP < $MAX_TEMP ]]
then
FAN_SPEED=$(( $GPU_TEMP *(($GPU_TEMP - $MIN_TEMP) * 4 + $MIN_COEF)/100 ))
[[ $FAN_SPEED -le $MIN_SPEED ]] && FAN_SPEED=$MIN_SPEED

то есть мы добавляем сравнение, как в формуле если TempGPU<Min_speed, а обороты вентилятора ниже минимальных, тогда вертушки будут дуть значение Min_Speed.

Ошибка. написано TempGPU<Min_speed, а хотел TempGPU<Min_Temp

ПС. Опять же, это только мой частный случай, но мало ли кому поможет.
Изменил код
[[ $GPU_TEMP > $MIN_TEMP ]] && [[ $GPU_TEMP < $MAX_TEMP ]]
Добавил условие сравнения с минимальной температурой $FAN_SPEED -le $MIN_SPEED && FAN_SPEED=$MIN_SPEED, заработало как надо. Скрин прикрепить не могу, но теперь обороты держатся не ниже 60. Теперь получается так, в верхнем посте не верно указал данные из формулы, правлю тут
Temp Fans
45°С - 60% - по формуле 60% (Min_Coef = 110)
46°С - 60% - по формуле без условия сравнения 52% (Min_Coef = 110)
47°С - 60% - по формуле без условия сравнения 55% (Min_Coef = 110)
48°С - 60% - по формуле без условия сравнения 59% (Min_Coef = 110)
49°С - 61% - по формуле без условия сравнения 61% (Min_Coef = 110)
50°С - 65% - по формуле без условия сравнения 65% (Min_Coef = 110)
ПС c Min_Coef = 100 c добавлением сравнения
Temp Fans
45°С - 60% - по формуле сравнения с MIN_temp 60%
46°С - 60% - по формуле без условия сравнения 48%
47°С - 60% - по формуле без условия сравнения 51%
48°С - 60% - по формуле без условия сравнения 54%
49°С - 60% - по формуле без условия сравнения 57%
50°С - 60% - по формуле без условия сравнения 60%
51°С - 63% - по формуле 63%

[quote=“Vejtarn;4058”]Приветсвую, всех.

[/quote]
Привет. По твоим данным я вижу, что можно просто поставить 65% обороты и не парить себе мозг.

После твоей правки, он не заработал как надо, ты просто его сломал:)
В настройках, если тебе надо было мин 60% оборотов, можно было просто поставить МИН_ТЕМП=59. В скрипте есть все необходимые переменные для необходимой настройки. МИН_СПИД нужна для того чтобы при снижении температуры ниже МИН_ТЕМП обороты кулера не считались по формуле, а сразу выставлялись из переменной.

Приведу такой пример. Кривая температур в Афтербернере. Выставляешь на графике несколько точек с желаемой температурой и оборотами. Так вот, одна точка имеет две координаты (температура и обороты). Чтобы построить прямую, нужно минимум две точки.
Вот тебе и есть 2 точки в диапазоне : МИН_ТЕМП/МИН_КОЕФ и МАКС_ТЕМП/МАКС_КОЕФ. А сама формула видна.
Но тут проблема в том, что какие должны быть обороты при разных условиях при температуре карты, например, 65 градусов мы не знаем. И каждый настраивает под свои условия. Примеры условий я приводил.

Смысл в том, чтобы не крутить вентиляторы на много оборотов при холодных алгоритмах и наоборот, увеличивать обороты при нагревах.

Ну да ладно, сейчас думаю над тем, ка оставить только одну-две настройки температуры, остальное будет делать логика скрипта.
И ещё одна отличная идея появилась:)

Кстати, можешь обновиться, если этого не сделал.
Под твои требования такие настройки:
DELAY=30
MIN_SPEED=60
MIN_TEMP=55
MAX_TEMP=60
MIN_COEF=105
MAX_COEF=125
MINER_STOP=0
CRITICAL_TEMP_MINER_STOP=90
PL_LIMIT=0
CRITICAL_TEMP_PL=75

п.с. вообще если есть вопросы, пиши в личку. чем смогу - помогу)

Благодарю за совет)
Ну… кстати, не сломал)) я просто добавил доп. условие сравнения, чтобы удержать Min_speed в устраивающем меня температурном диапазоне т.е. от 45 до 60.(солнечная сторона, балкон).

Согласен, что можно было выставить Min_Temp 50 c Min_Coef 110, или как ты написал, 55 при 105, но, блин, меня немного пугают такие цифры температуры в минимальных значениях. Плюс по этим параметрам выход на 100% будет идти уже на 65 градусах по третьей формуле =)))
Как ты писал ранее, столько параметров необходимо для того, чтобы каждый выбрал то, что необходимо… Вторые сутки кручу-верчу со значениями в комфортном “психологическом” пороге для себя, и пришел к выводу, что мне необходимо именно такое условие в скрипте во второй формуле, поскольку значения MIN_ и MAX_coef я подобрал таким образом(110 и 155 соответсвенно), чтобы полностью исключить задействование третьего условия и выход на 100% оборотов при достижении Max_temp по второй формуле, т.е. я для себя исключил параметр Max_Coef в работе скрипта. далее движение до Crit_Temp на 100%, поскольку я сомневаюсь в выходе кулеров на 100%+++ мощности без дополнительного колхоза с их питанием.

Я не говорю, что необходимо вносить какие либо изменения, просто поделился особенностью именно моего случая, вдруг будет кому то интересно.
Все же, пока меня полностью устраивает работа скрипта + внесенные мной изменения.
Благодарю за его создание. Здорово что у него открыт код и его можно крутить по своему усмотрению. Хочу еще попробовать вариант предложенный Deret посмотреть что из этого получится. Уж очень и меня самого завлекло, так сказать, уменьшения возможных параметров при настройке работы.

Хочется пожелать чтобы ты добился своей цели при создании этого скрипта, и было бы здорово, чтобы его в конечном итоге включили в сборку HiveOS, скажем в интерфейс Nvidia Overlocking, и он был максимально прост в настройке как и сама Ось:
http://forum.hiveos.farm/uploads/editor/0k/ca41dd2p8i45.png

ты сам себя понимаешь? у тебя кулеры при моих настройках не будут крутить меньше 60%. какая разница сколько он будет крутить при температуре 65 (91%), если ты хочешь температуру не выше 60???
я не просто дал настройки, я их просчитал предварительно.

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

По древнейшей задумке автофан должен быть как для зеленых так и для красных.
Но какая-то борода с реализацией тянется уже больше чем полгода … ((((

Ага, автор даже из To Do теперь убрал свою задумку с автофаном нвидиа. Быстрее уже в клейморе реализуют, под винду то уже реализовали, ждем только под *nix реализации.

клеймор это хорошо, но с другими майнерами как быть?

С другими майнерами тогда остается нерешенный вопрос и с красными)
Ну а скрипт в любом случае имеет право на жизнь и должен развиваться!

… скрипт взял в работу другой человек … а там растянулось в том числе и по семейным обстоятельствам … на завтра-послезавтра-скоро-вот-вот и т.д.
Оно конечно так себе отмазка … но такое есть, прошу понять и простить разработчика.

Подскажите как удалить скрипт.У меня жутко глючит после установки.Команда -к,не помогла.

в чем выражается “жутко глючить”? может настройки правильные нужно задать?
-к отключает скрипт. потом примените настройки оверклокинга из админки хайва. для удаление автозапуска нужно удалить файл xinit.user.sh