Управление вентиляторами NVIDIA Blackwell в Linux: снижение шума сервера | AiManual
AiManual Logo Ai / Manual.
06 Фев 2026 Гайд

Шшшшш! Как заставить NVIDIA Blackwell молчать: полный контроль над вентиляторами в headless Linux

Пошаговое руководство по контролю шума NVIDIA Blackwell в headless Linux. Настройка nvidia-smi, скрипты, автоматизация охлаждения для RTX PRO 6000.

Ты собрал сервер с двумя RTX 6000 Blackwell. Запускаешь Llama 3.2 405B - и через пять минут комната превращается в взлетную полосу. Вентиляторы выходят на 90%, температура VRAM подбирается к 100°C, а соседи стучат по батареям. Знакомая картина?

Чертовски знакомая. NVIDIA всегда считала, что серверное железо должно реветь как раненый бизон. Но в 2026 году это уже не работает. Особенно когда этот "сервер" стоит в твоей спальне или офисе.

Перед тем как что-то менять: управление вентиляторами GPU через ПО может снять гарантию. Если у тебя enterprise-оборудование с сервисным контрактом - подумай дважды. Для домашних сборок и лабораторий - вперед.

Почему Blackwell так шумит (и почему это тупо)

Новые Blackwell B200 и RTX 6000/7000 серии - монстры потребления. До 1000W на карту в пике. Но самое интересное - архитектура охлаждения.

NVIDIA использует агрессивные кривые вентиляторов по умолчанию. Почему? Потому что перегрев VRAM на HBM3e стоит дороже, чем жалобы на шум. Но эта логика ломается, когда ты:

  • Запускаешь инференс с паузами (чат-боты)
  • Используешь неполную загрузку GPU
  • Имеешь хороший airflow в корпусе
  • Просто не хочешь сойти с ума от гула

Вот типичная ситуация из моего прошлого проекта: GPU нагревается до 65°C, вентиляторы выходят на 80%, хотя реально хватило бы 40%. Идиотизм.

Диагностика: что шумит и насколько

Первое правило борьбы с шумом - измерение. Не на глаз, не на слух. Конкретные цифры.

1 Узнай, что у тебя вообще есть

Открываешь терминал и пишешь:

nvidia-smi -q | grep -A 10 "Fan Speed"

Или более читаемый вариант (спасибо NVIDIA за обновления 2025 года):

nvidia-smi --query-gpu=fan.speed,temperature.gpu,power.draw --format=csv

Должен получить что-то вроде:

GPU Fan Speed Temp Power
0 85 % 72 °C 320 W
1 90 % 78 °C 350 W

Видишь эти проценты? Это и есть твой враг. Все что выше 50% на Blackwell - уже заметно шумно. Выше 70% - невозможно работать в одной комнате.

Внимание! У некоторых карт RTX PRO 6000 Blackwell есть "тихий режим" в BIOS. Проверь через nvidia-smi -q | grep Performance. Если видишь "Quiet" - уже хорошо. Но обычно там стоит "Normal" или "Max Performance".

2 Проверь температуру памяти (самое важное!)

Температура GPU - это цветочки. VRAM на Blackwell - вот где ад. Особенно на картах с HBM3e.

nvidia-smi --query-gpu=memory.temp --format=csv

Если видишь значения выше 90°C - это красная зона. NVIDIA ставит thermal throttle на 105°C для VRAM, но уже при 95°C начинается деградация.

Почему это важно? Потому что вентиляторы охлаждают в первую очередь память. И если VRAM горячий - никакие настройки не помогут. Придется улучшать airflow. Об этом я писал в статье про интеллектуальное охлаждение.

Ручное управление: от тирана к диктатору

Теперь самое интересное - берем контроль. NVIDIA дает три способа управления вентиляторами:

  1. Через nvidia-settings (не работает в headless!)
  2. Через nvidia-smi (работает, но с ограничениями)
  3. Через драйвер напрямую (опасно, но эффективно)

Начнем с безопасного.

3 Фиксированная скорость вентилятора

Самый простой способ - заставить вентиляторы крутиться на определенном проценте:

sudo nvidia-smi -i 0 -pl 280  # Сначала ограничиваем мощность до 280W
sudo nvidia-smi -i 0 -fan 50  # Устанавливаем 50% скорости

Почему сначала ограничиваем мощность? Потому что если GPU потребляет 400W, а вентиляторы на 50% - он перегреется за минуты. Всегда сначала power limit, потом fan control.

💡
На Blackwell B200 и RTX 6000 PRO минимальная скорость вентилятора обычно 30%. Ниже - физически не могут. Максимальная - 100%, но выше 80% уже звучит как реактивный двигатель.

Проверяем:

watch -n 1 "nvidia-smi --query-gpu=fan.speed,temperature.gpu,power.draw --format=csv"

Смотри на температуру. Если растет выше 80°C - увеличивай скорость или уменьшай power limit.

4 Автоматическая кривая (умный способ)

Фиксированная скорость - для ленивых. Умные люди делают скрипт с температурной кривой. Вот мой рабочий вариант:

#!/bin/bash
# fan_curve.sh - адаптивное управление вентиляторами для Blackwell

GPU_INDEX=0
TEMP_TARGET=70  # Целевая температура
HYSTERESIS=3    # Гистерезис, чтобы вентиляторы не дрыгались

get_gpu_temp() {
    nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i $GPU_INDEX
}

set_fan_speed() {
    local temp=$1
    local speed
    
    if [ $temp -lt 50 ]; then
        speed=30
    elif [ $temp -lt 60 ]; then
        speed=40
    elif [ $temp -lt 70 ]; then
        speed=50
    elif [ $temp -lt 80 ]; then
        speed=60
    elif [ $temp -lt 85 ]; then
        speed=70
    else
        speed=85
    fi
    
    nvidia-smi -i $GPU_INDEX -fan $speed > /dev/null 2>&1
    echo "GPU $GPU_INDEX: ${temp}°C -> ${speed}%"
}

# Основной цикл
while true; do
    CURRENT_TEMP=$(get_gpu_temp)
    set_fan_speed $CURRENT_TEMP
    sleep 10

done

Сохраняешь как fan_curve.sh, делаешь исполняемым и запускаешь от root:

chmod +x fan_curve.sh
sudo ./fan_curve.sh

Важно! Этот скрипт не переживет перезагрузку. Для постоянной работы нужно делать systemd сервис. И да, он будет конфликтовать с любым другим софтом, который пытается управлять вентиляторами (включая драйвер NVIDIA).

Продвинутые техники: когда простого мало

Если у тебя несколько GPU (а у кого их нет в 2026?), ситуация усложняется. Особенно если карты разные или одна греется сильнее.

Мульти-GPU конфигурации

Вот сценарий из реального проекта с двумя RTX 6000 Blackwell:

#!/bin/bash
# multi_gpu_fan.sh

declare -A FAN_SPEEDS
FAN_SPEEDS[0]=40  # Верхняя карта (лучше охлаждается)
FAN_SPEEDS[1]=50  # Нижняя карта (горячее)

while true; do
    for gpu in 0 1; do
        temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i $gpu)
        
        # Динамическая корректировка
        if [ $temp -gt 75 ]; then
            FAN_SPEEDS[$gpu]=$((FAN_SPEEDS[$gpu] + 5))
        elif [ $temp -lt 65 ]; then
            FAN_SPEEDS[$gpu]=$((FAN_SPEEDS[$gpu] - 2))
        fi
        
        # Ограничения
        if [ ${FAN_SPEEDS[$gpu]} -lt 30 ]; then
            FAN_SPEEDS[$gpu]=30
        fi
        if [ ${FAN_SPEEDS[$gpu]} -gt 80 ]; then
            FAN_SPEEDS[$gpu]=80
        fi
        
        nvidia-smi -i $gpu -fan ${FAN_SPEEDS[$gpu]}
    done
    
    sleep 15
done

Этот скрипт помог решить проблему, описанную в статье про сбои vLLM на двух RTX 6000. Оказалось, одна карта перегревалась и вызывала throttling.

Интеграция с системными мониторами

Если используешь Grafana/Prometheus для мониторинга (а ты должен), можно прикрутить управление вентиляторами к нему. Пример экспортера для Prometheus:

#!/usr/bin/env python3
# nvidia_fan_exporter.py

import subprocess
import time
from prometheus_client import start_http_server, Gauge

gpu_temp = Gauge('gpu_temperature_celsius', 'GPU temperature', ['gpu_index'])
gpu_fan = Gauge('gpu_fan_percent', 'GPU fan speed', ['gpu_index'])

def get_gpu_info():
    cmd = "nvidia-smi --query-gpu=index,temperature.gpu,fan.speed --format=csv,noheader,nounits"
    result = subprocess.check_output(cmd, shell=True).decode().strip()
    
    for line in result.split('\n'):
        idx, temp, fan = line.split(', ')
        idx = int(idx)
        temp = float(temp)
        fan = float(fan.rstrip('%'))
        
        gpu_temp.labels(gpu_index=idx).set(temp)
        gpu_fan.labels(gpu_index=idx).set(fan)
        
        # Автоматическая регулировка
        if temp > 75:
            set_fan_speed(idx, min(80, fan + 10))
        elif temp < 65:
            set_fan_speed(idx, max(30, fan - 5))

def set_fan_speed(gpu_idx, speed):
    speed = int(speed)
    cmd = f"nvidia-smi -i {gpu_idx} -fan {speed}"
    subprocess.run(cmd, shell=True, capture_output=True)

if __name__ == '__main__':
    start_http_server(8000)
    while True:
        get_gpu_info()
        time.sleep(10)

Опасные игры: разгон и андервольтинг

Ты все еще здесь? Значит, готов к хардкору.

Blackwell архитектура позволяет андервольтинг - снижение напряжения при сохранении частоты. Меньше напряжение = меньше тепла = меньше шума.

ВНИМАНИЕ: Это может сжечь карту. Это точно снимет гарантию. Не делай этого на производственных серверах. Я предупредил.

Для андервольтинга нужен nvidia-smi с поддержкой управления частотой (есть на consumer картах, на серверных - не всегда). Проверяем:

nvidia-smi -q -d SUPPORTED_CLOCKS

Если видишь список частот - можно играться. Пример для RTX 6000 Blackwell:

# Устанавливаем фиксированную частоту GPU и памяти
sudo nvidia-smi -i 0 -lgc 2100,2100  # GPU clock
sudo nvidia-smi -i 0 -lmc 4000,4000  # Memory clock

# Ограничиваем напряжение (если поддерживается)
sudo nvidia-smi -i 0 -pl 250  # Power limit до 250W
sudo nvidia-smi -i 0 -fan 40  # Вентиляторы на 40%

В моем тесте это снизило температуру с 78°C до 65°C при той же вычислительной мощности (для LLM inference). Шум упал с "вертолет" до "тихий компьютер".

Systemd сервис: чтобы работало после перезагрузки

Все эти скрипты бесполезны, если они не запускаются автоматически. Вот правильный systemd сервис:

# /etc/systemd/system/nvidia-fan-control.service
[Unit]
Description=NVIDIA Fan Control Service
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/bin/fan_curve.sh
Restart=always
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target

Активируем:

sudo systemctl daemon-reload
sudo systemctl enable nvidia-fan-control.service
sudo systemctl start nvidia-fan-control.service
sudo systemctl status nvidia-fan-control.service  # Проверяем

Что делать, когда ничего не помогает

Бывает. Карта все равно греется. Вентиляторы на 100%, а температура ползет вверх. Варианты:

  1. Проверь термопасту. На серверных картах она часто высыхает за 2-3 года. Замена снижает температуру на 10-15°C.
  2. Добавь корпусные вентиляторы. Особенно важно для multi-GPU. Об этом я подробно писал в статье про SFF-сборки.
  3. Используй водяное охлаждение. Для RTX 6000 Blackwell есть кастомные ватерблоки. Дорого, но эффективно.
  4. Понизь power limit. Если карта потребляет 400W, а ограничить до 300W - потеряешь 10-15% производительности, но температура упадет на 20°C.

Мой личный рецепт для домашнего сервера с двумя RTX 6000:

  • Power limit: 280W на каждую
  • Вентиляторы: 40% в простое, 60% под нагрузкой
  • Температура GPU: 65-70°C
  • Температура VRAM: 80-85°C
  • Шум: сравним с игровым ПК, а не с промышленным чиллером

Частые ошибки (не повторяй их)

Ошибка Последствия Решение
Установить вентиляторы на 20% Перегрев за 5 минут, thermal throttle Никогда не ставить ниже 30% на Blackwell
Забыть про power limit Карта пытается взять 400W, вентиляторы не справляются Всегда сначала -pl, потом -fan
Игнорировать температуру VRAM Деградация памяти, артефакты Мониторить memory.temp каждые 10°C GPU = 15°C VRAM
Запускать скрипт без systemd После перезагрузки вентиляторы сбрасываются на 100% Обязательно systemd сервис

Будущее: когда NVIDIA наконец починит это

В драйверах 555.xx (релиз ожидается в Q2 2026) обещают наконец-то нормальный fan control API. С кривыми, профилями, и главное - работающий в headless.

Но пока что живем с костылями. И знаешь что? Эти костыли работают лучше, чем официальные инструменты.

Пока NVIDIA думает о датацентрах, мы в гаражах и домашних офисах собираем бюджетные AI-серверы и заставляем их работать тихо. Потому что шум - это не просто раздражение. Это показатель неэффективности. Каждый лишний децибел - это потраченная впустую энергия, лишний нагрев, сокращенный срок жизни железа.

Твой сервер не должен звучать как стартующий истребитель. Особенно когда он просто отвечает на вопросы в чате.