master
GPU Fan Controller — Delta QFR1212GHE
Автоматическое управление вентилятором на Tesla V100-PCIE-32GB (1 или 2 карты) по температуре GPU.
Вентилятор обдувает обе карты. Скрипт определяет количество карт и берёт max(temp) для логики режимов.
Burst-детекция срабатывает если max(temp1, temp2) растёт на ≥3°C за 2 секунды.
Подключение
| Вентилятор | Arduino Uno |
|---|---|
| красный (+12V) | к блоку питания |
| чёрный (GND) | GND Arduino |
| жёлтый (tach) | D2 |
| синий (PWM) | D9 |
| синий (PWM) | отключить (не подтягивать!) |
Установка
git clone ...
sudo cp scripts/gpu_fan_ctrl.sh /root/
sudo chmod +x /root/gpu_fan_ctrl.sh
sudo cp systemd/gpu-fan-ctrl.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now gpu-fan-ctrl.service
tail -f /var/log/gpu_fan.log
Ручное управление
stty -F /dev/ttyUSB0 115200
echo "6" > /dev/ttyUSB0 # полная
echo "3" > /dev/ttyUSB0 # средний
echo "s" > /dev/ttyUSB0 # статус
echo "RPM" > /dev/ttyUSB0 # обороты
Режимы
| Режим | PWM | Температура (эффективная, с учётом гистерезиса) |
|---|---|---|
| STOP | 10000 | — |
| STANDBY | 8000 | < 23°C |
| LOW | 5000 | 23–28°C |
| MED | 3000 | 28–33°C |
| HIGH | 2500 | 33–39°C |
| FULL | 0 (2 мин) | ≥ 45°C ИЛИ рост ≥ 3°C/2с |
Пороги в коде: TH_COLD=25, TH_LOW=30, TH_MED=35, TH_HIGH=40, TH_BURST=45. Гистерезис 2°C оттягивает переключение вниз для стабильности. FULL режим удерживается 2 минуты даже при снижении температуры.
Логика выбора источника температуры
- 1+ NVIDIA GPU — мониторинг всех GPU, берётся
max(temp)по всем картам. - 0 NVIDIA GPU — фоллбэк на материнские
thermal_zone,max(temp)по всем зонам.
Логика режимов
- FULL (6) — при
max(temp) ≥ 45°Cили быстрый рост ≥3°C за 2 сек → удерживается 2 мин. - HIGH/MED/LOW/STANDBY (5/4/3/2) — обычные пороги с 2°C гистерезисом.
- Режим вентилятора применяется ко всем картам одновременно (один физический вентилятор).
Подпись
Собрано при участии Qwen3.8-35B-A3B-Q4_K_M @ Tesla V100 32GB (PID 3666) на debi9.
Languages
Shell
73.7%
C++
26.3%