(Ubuntu 20.04) Настройка скоростей вентиляторов в зависимости от температуры GPU

Вопрос или проблема

Я получил старый ПК от друга, который оснащен MSI Nvidia GTX 970. Вентиляторы видеокарты больше не работали должным образом и качались, что вызывало нестабильное поведение в охлаждении. Я удалил старые вентиляторы и заменил их на 2 Arctic P12 PWM PST аналогичным образом, используя пластиковые стяжки, как показано в этом видео. Теперь оба вентилятора работают нормально, но я не могу понять, как правильно регулировать их скорости.

Существуют 2 варианта (оба вентилятора подключены через PST):

  1. Подключить открытый разъем вентилятора к разъему SYS_FAN / CHA_FAN на материнской плате
  2. Подключить открытый разъем вентилятора к разъему на GPU

GTX использует 6-контактный разъем, в котором ПИН 1, 3, 4 подключают PWM, Ground, +V к вентиляторам, а ПИН 2, 6 являются тахометрическими сигналами вентиляторов. Таким образом, мне нужно подключить разъем PST вентилятора к контактам 1, 3, 4 и 2 или 6. Расположение кабеля не позволяет мне использовать контакт 2, поэтому мне приходится использовать контакт 6, который, похоже, неисправен, потому что nvidia-smi сообщает о скорости вентилятора 0%, хотя вентиляторы вращаются. Хотя я бы предпочел этот вариант, так как GPU будет управлять всем PWM, я не могу определить проблему и исправить неправильные скорости вентилятора. Таким образом, мне придется придерживаться варианта 1,

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

Что я могу сделать, чтобы заставить вентиляторы вращаться в зависимости от температуры GPU? Это означает, что я либо получаю возможность контролировать температуры GPU через fancontrol, либо исправляю неправильное измерение об/мин при использовании разъема GPU.

Материнская плата: Asus Z97-A

pwmconfig вывод с панели управления nvidia (обратите внимание, что ни одна из температур не совпадает)

Вывод sensors:

nct6791-isa-0290
Адаптер: ISA адаптер
Vcore:                 848.00 мВ (мин =  +0.00 В, макс =  +1.74 В)
in1:                     1.02 В  (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
AVCC:                    3.33 В  (мин =  +2.98 В, макс =  +3.63 В)
+3.3V:                   3.33 В  (мин =  +2.98 В, макс =  +3.63 В)
in4:                   1000.00 мВ (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
in5:                     1.98 В  (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
in6:                     0.00 В  (мин =  +0.00 В, макс =  +0.00 В)
3VSB:                    3.39 В  (мин =  +2.98 В, макс =  +3.63 В)
Vbat:                    3.25 В  (мин =  +2.70 В, макс =  +3.63 В)
in9:                     1.02 В  (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
in10:                    0.00 В  (мин =  +0.00 В, макс =  +0.00 В)
in11:                  920.00 мВ (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
in12:                    0.00 В  (мин =  +0.00 В, макс =  +0.00 В)
in13:                   88.00 мВ (мин =  +0.00 В, макс =  +0.00 В)  АЛАРМ
in14:                    0.00 В  (мин =  +0.00 В, макс =  +0.00 В)
fan1:                     0 об/мин  (мин =    0 об/мин)
fan2:                   418 об/мин  (мин =    0 об/мин)
fan3:                     0 об/мин  (мин =    0 об/мин)
fan4:                     0 об/мин  (мин =    0 об/мин)
fan5:                     0 об/мин  (мин =    0 об/мин)
fan6:                     0 об/мин  (мин =    0 об/мин)
SYSTIN:                 +27.0°C  (высокий =  +0.0°C, гистерезис =  +0.0°C)  АЛАРМ  датчик = термистор
CPUTIN:                 +28.5°C  (высокий = +80.0°C, гистерезис = +75.0°C)  датчик = термистор
AUXTIN0:               +127.0°C    датчик = термистор
AUXTIN1:               -128.0°C    датчик = термистор
AUXTIN2:                +30.0°C    датчик = термистор
AUXTIN3:               +127.0°C    датчик = термистор
PECI Agent 0:           +27.5°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
вторжение0:            АЛАРМ
вторжение1:            АЛАРМ
включение зуммера:           отключено

acpitz-acpi-0
Адаптер: ACPI интерфейс
temp1:        +27.8°C  (крит = +105.0°C)
temp2:        +29.8°C  (крит = +105.0°C)

coretemp-isa-0000
Адаптер: ISA адаптер
Package id 0:  +35.0°C  (высокий = +80.0°C, критический = +100.0°C)
Core 0:        +32.0°C  (высокий = +80.0°C, критический = +100.0°C)
Core 1:        +32.0°C  (высокий = +80.0°C, критический = +100.0°C)
Core 2:        +30.0°C  (высокий = +80.0°C, критический = +100.0°C)
Core 3:        +33.0°C  (высокий = +80.0°C, критический = +100.0°C)

Я решил эту проблему, написав небольшой скрипт на Python, который запускается при старте и grep -P \d{1,3}(?=C) извлекает температуру из nvidia-smi. Эта температура используется для расчета значения PWM (0, 255), которое затем записывается в файл /etc/fancontrol, предоставленный изначально pwmconfig:

...(не трогать INTERVAL, FCTEMPS, FCFANS, так как мы сделаем это программно)
MINTEMP=0
MAXTEMP=1
MINSTART=hwmon/pwm/={PWM}
MINSTOP=hwmon/pwm/={PWM}
MINPWM=hwmon/pwm/={PWM}
MAXPWM=hwmon/pwm/={PWM}+1

затем с sudo service fancontrol restart.

Ответ или решение

Управление скоростью вентиляторов в зависимости от температуры GPU на Ubuntu 20.04

Ваша ситуация с управлением скоростью вентиляторов на видеокарте Nvidia GTX 970 в системе Ubuntu 20.04 требует детального внимания ко многим аспектам, включая подключение вентиляторов, использование программного обеспечения для контроля и программирование автоматических операций. Давайте разберём основные шаги для достижения устойчивого решения.

1. Подключение вентиляторов

Вы рассмотрели два варианта подключения вентиляторов, и правильный выбор здесь ключевой. Безусловно, предпочтительнее подключить вентиляторы к разъёму на видеокарте, чтобы обеспечить автоматическое управление скоростью на основе температуры GPU. Однако, если ваш текущий разъём на видеокарте не работает корректно, следует использовать разъёмы на материнской плате (SYS_FAN или CHA_FAN).

2. Установка и настройка fancontrol

Чтобы управлять скоростью вентиляторов в зависимости от температуры, вы можете использовать утилиту fancontrol, которая является важным инструментом для автоматизации этого процесса:

  1. Установка fancontrol:

    sudo apt install fancontrol
  2. Настройка pwmconfig:
    Запустите pwmconfig для настройки управления PWM:

    sudo pwmconfig

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

  3. Проблема с отсутствием температурных датчиков:
    Если вы не видите термометры GPU, следует установить драйвера Nvidia. Используйте команду:

    sudo apt install nvidia-driver-<version>

3. Мониторинг температуры GPU

Если стандартные утилиты не способны получить данные о температуре, вы можете извлечь данные напрямую из nvidia-smi. Это можно сделать с помощью небольшого скрипта на Python, который будет запускаться при загрузке системы.

4. Скрипт для вычисления PWM

Следующий пример Python-скрипта сможет извлекать температуру GPU и обновлять файл конфигурации fancontrol:

import subprocess
import re

def get_gpu_temp():
    output = subprocess.check_output("nvidia-smi", shell=True).decode()
    temp_match = re.search(r'(\d+)\s*C', output)
    return int(temp_match.group(1)) if temp_match else 0

def update_fancontrol(temp):
    pwm = min(max(0, (temp - 30) * 255 // 70), 255)  # Примерный алгоритм
    with open('/etc/fancontrol', 'w') as f:
        f.write(f"""# Настройки PWM
INTERVAL=10
FCTEMPS=hwmon/pwm1={temp}
FCFANS=hwmon/pwm1={pwm}\n""")
    subprocess.call(['sudo', 'service', 'fancontrol', 'restart'])

if __name__ == '__main__':
    gpu_temp = get_gpu_temp()
    update_fancontrol(gpu_temp)

5. Автоматизация запуска скрипта

Чтобы гарантировать автоматический запуск этого скрипта при загрузке системы, добавьте его в crontab:

@reboot /usr/bin/python3 /path/to/your_script.py

Заключение

С помощью этого решения, вы можете эффективно управлять скоростью вентиляторов вашего GPU в зависимости от температуры, что обеспечит стабильную и безопасную работу вашей системы. Кроме того, регулярные обновления драйверов Nvidia и взаимодействие с сообществом пользователей на форумах могут помочь в быстром решении возникающих проблем.

Оцените материал
Добавить комментарий

Капча загружается...