Гул вентиляторов сразу после загрузки и 70 °C в простое на ноутбуке — это не обязательно поломка: карта может не спать, а композитор или фоновое приложение её держит загруженной. Разбираемся, где искать источник нагрузки, чем ограничить лимит мощности, как включить Coolbits и перевести вентиляторы на ручной режим или на скрипт по температуре.
Сначала убедись, что нагрузка действительно есть. Моментальный срез:
nvidia-smi --query-gpu=name,temperature.gpu,fan.speed,utilization.gpu,pstate,power.draw --format=csv
nvidia-smi dmon -s pucvmt
nvidia-smi pmon -c 1
pmon покажет конкретные процессы, а не просто «график есть». Типичные виновники в покое:
Отдельно прочитай pstate: состояния P8 и P0c означают сон и частичную активность. Если в простое карта висит в P0 постоянно, вопрос закрыт — у неё нет режима сна в текущей конфигурации. Сон дискретной карты настраивается через выбор видеокарты для приложений, и про это подробно в статье о гибридной графике и prime-run.
Два параметра драйвера отвечают за энергопотребление. Первый — persistence mode: он держит модуль в памяти и ускоряет пробуждение, но сам по себе греть не должен.
sudo nvidia-smi -pm 1
nvidia-smi -q -d POWER | head -40
Второй — лимит мощности в ваттах. Это самый предсказуемый способ срезать и шум, и нагрев: карта упирается в заданный потолок вместо максимального.
nvidia-smi -q -d POWER | grep -i "power limit"
sudo nvidia-smi -pl 150
nvidia-smi -q -d POWER | grep -i "power limit"
Значение сверху — текущий лимит, рядом Default Power Limit, к которому можно вернуться в любой момент:
sudo nvidia-smi -pl 220 # значение Default из вывода выше
Потери производительности обычно заметны только в тяжёлых сценах, а температура и шум падают заметно. На части ноутбуков команда вернёт отказ: там лимиты задаёт производитель, и с этим не поспоришь. Тогда работают только программные средства из следующих разделов.
Coolbits — битовая маска в конфигурации Xorg, которая открывает скрытые возможности драйвера. Расшифровка значений:
Самый полезный бит для владельца ноутбука — 4, он даёт ползунок вентиляторов в nvidia-settings. Файл с настройкой:
mkdir -p /etc/X11/xorg.conf.d
cat > /etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
Identifier "Nvidia Card"
Driver "nvidia"
Option "Coolbits" "28"
EndSection
28 — это 16 + 8 + 4: вентиляторы, разгон и dynamic boost. Практичный минимум без разгона — 20, то есть 16 + 4. Разгон требует запас по питанию и вентиляции, а сдвиг частот при просадке питания превращается в артефакты, поэтому для повседневной машины разгон лучше не включать.
Три подводных камня:
xorg.conf игнорируется, и ползунок вентиляторов в nvidia-settings не появится./etc/X11/xorg.conf перекрывает xorg.conf.d. Если пакет nvidia-xconfig создал основной конфиг, твои настройки из каталога не применяются. Проверь вывод Xorg -configure и журнал запуска.nvidia-settings во вкладке PowerMizer появятся новые пункты — это и есть проверка, что параметр применился.После включённого Coolbits вентиляторами управляет nvidia-settings, и делается это из командной строки:
DISPLAY=:0 nvidia-settings -a "[gpu:0]/GPUFanControlState=1"
DISPLAY=:0 nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=45"
nvidia-settings --query-gpu=fan.speed
Первой командой включается ручной режим, второй задаётся скорость в процентах — обычно хватает диапазона от 30 до 60. Ставить 100 % постоянно незачем: это лишний шум и износ подшипника, а ставить 0 опасно — охлаждение падает вместе с шумом. Вернуть автоматику:
DISPLAY=:0 nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
На части ноутбуков вентиляторы вообще не поддаются ручному управлению: ползунок в интерфейсе серый, и никакой Coolbits это не исправит. Если столкнулся с таким поведением, твои инструменты ограничены лимитом мощности и дисциплиной с фоновыми процессами. По поводу «дискретная карта не засыпает и ест батарею» отдельно разбиралась гибридная графика и работа с prime-run: если рабочий стол живёт на встроенной видеокарте, nvidia-smi в покое показывает нули.
Раз в минуту по cron — самый простой способ. Скрипт с логикой от температуры и сравнением с текущей скоростью, чтобы не дёргать настройки без нужды:
#!/usr/bin/env bash
# ~/.local/bin/gpu-fans.sh
set -euo pipefail
temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits | head -1)
current=$(nvidia-settings --query-gpu=fan.speed 2>/dev/null \
| grep -oE '[0-9]+' | head -1 || echo 0)
case "$temp" in
<55) target=35 ;;
<70) target=45 ;;
<80) target=60 ;;
*) target=75 ;;
esac
if [ "$current" != "$target" ]; then
DISPLAY=:0 nvidia-settings -a "[gpu:0]/GPUFanControlState=1" >/dev/null
DISPLAY=:0 nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$target" >/dev/null
fi
chmod +x ~/.local/bin/gpu-fans.sh
crontab -e
# строка в crontab:
* * * * * /home/твой_юзер/.local/bin/gpu-fans.sh
Скрипт требует работающей X-сессии на дисплее :0 и включённого Coolbits с битом 4. Если вентиляторы не управляются, он будет лишь молча менять цифры, поэтому после первого запуска проверь фактическую скорость командой nvidia-settings --query-gpu=fan.speed.
Разовая проверка мало что говорит — нужен журнал. Периодический вывод в файл:
nvidia-smi --query-gpu=temperature.gpu,fan.speed,clocks_throttle_reasons.active,power.draw \
--format=csv -l 5 | tee -a ~/nvidia-monitor.log
Ориентиры по цифрам:
fan.speed 0 % вместе с состоянием сна — это не поломка, карта просто отключилась.Поле clocks_throttle_reasons.active важнее термометра: значение SwThermalSlowdown или HwThermalSlowdown означает, что карта уже урезает частоты, а SwPowerCap — что упёрлась в лимит мощности. В таком случае сначала снижай лимит и фоневую нагрузку, и только потом лезь к железу. Порядок установки драйвера с нуля, если настройки слетели после обновления, я разбирал в статье про драйвер NVIDIA на Arch Linux.
Так себя ведёт новый драйвер: по умолчанию карта несколько секунд держит высокие частоты для быстрой инициализации. Если шум не прекращается, проверь, не застряла ли она в максимальном PowerMizer, и не грузит ли GPU композитор: nvidia-smi pmon -c 1 покажет источник. Помогает снижение лимита мощности.
Проверь три вещи: в сессии ли ты X11, а не Wayland; не перекрывает ли настройки файл /etc/X11/xorg.conf; перезапущен ли X после правки. В журнале запуска Xorg строка с Coolbits покажет, прочитал ли сервер параметр вообще.
Убери опцию Coolbits из xorg.conf.d, верни лимит мощности к Default из nvidia-smi -q -d POWER и отключи ручной режим вентиляторов через GPUFanControlState=0. Удаление скрипта из cron завершает автоматику.
Ветки 340 и 390 поддерживают лишь часть возможностей, а часть элементов в nvidia-settings там просто отсутствует. Если карта из этих серий, сначала прочитай про legacy-драйверы NVIDIA 340/390 — там же разобрано, почему для таких карт выбор ограничен, а не настройками. Если система вообще перестала грузиться с этими настройками, выручает консоль и временный откат, описанный в статье про чёрный экран и nomodeset.
На корпусе с нормальным обдувом выигрыш в шуме минимален, а потеря кадров реальна. Снижать лимит стоит в тонких корпусах, ноутбуках и mini-PC, где охлаждение упирается в размер.
-pm, -pl, запросы --query-gpu.Температура и шум почти всегда лечатся тремя рычагами: убрать фоновую нагрузку, опустить лимит мощности и включить ручное управление вентиляторами через Coolbits с понятным скриптом по температуре. Поставь журнал в файл, возвращай лимит по команде в любой момент, и карта перестанет диктовать условия.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии