NVIDIA (Русский)/Tips and tricks (Русский)
Исправление разрешения терминала
Переход с драйвера nouveau будет сопровождаться низким разрешением экрана терминала при загрузке.
Для загрузчика GRUB, обратитесь к GRUB/Tips and tricks#Setting the framebuffer resolution, чтобы увеличить разрешение.
Для systemd-boot установите console-mode
в esp/EFI/loader/loader.conf
, смотрите systemd-boot (Русский)#Настройка.
Для rEFInd добавьте esp/EFI/refind/refind.conf
и /etc/refind.d/refind.conf
(последний опционален, но рекомендуется):
use_graphics_for linux
Небольшая оговорка заключается в том, что это скроет отображение параметров ядра во время загрузки.
Использование ТВ-выхода
Смотрите Wikibooks:nVidia/TV-OUT.
X with a TV (DFP) as the only display
Сервер X откатывается к CRT-0, если нет автоматически определённого монитора. Это может стать проблемой при использовании подключения ТВ через DVI как основной монитор, и сервер X был запущен при выключенном ТВ или он был не подключен.
Для принудительного использования DFP драйвером NVIDIA, сохраните копию EDID в файловой системе там, где его сможет прочитать сервер X, вместо чтения EDID с ТВ/DFP.
Для получения EDID запустите nvidia-settings. Появится различная информация в древовидном формате, игнорируя все настройки выберите графический процессор (соответствующее поле должно называться "GPU-0" или быть похожим на него), щелкните по DFP
секции (также возможно DFP-0
или что-то похожее), нажмите на кнопку Acquire Edid
и сохраните куда-нибудь, например в /etc/X11/dfp0.edid
.
Если у вас не подключена мышь и клавиатура, EDID может быть получен из командной строки. Запустите сервер X с нужным логированием для вывода блока EDID:
$ startx -- -logverbose 6
После окончания иницализации сервера X закройте его, ваш лог файл сохранится в /var/log/Xorg.0.log
. Извлеките блок EDID используя nvidia-xconfig:
$ nvidia-xconfig --extract-edids-from-file=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/dfp0.bin
Отредактируйте xorg.conf
добавив в секцию строки:
Option "ConnectedMonitor" "DFP" Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid"
Опция принуждает драйвер распознавать DFP так, как буд-то он подключен. предоставляет данные EDID для устройства и говорит, что при загрузке ТВ/DFP как бы был подключен во время процесса запуска X.
Таким образом, можно автоматически запускать менеджер экрана при загрузке, иметь рабочий и настроенный экран для X до включения питания ТВ.
Если вышеуказанные изменения не работают, в xorg.conf
в секции вы можете попробовать удалить строку и добавить следующие строки:
Option "ModeValidation" "NoDFPNativeResolutionCheck" Option "ConnectedMonitor" "DFP-0"
Опция драйвера NVIDIA NoDFPNativeResolutionCheck
предотвращает отключение всех режимов, которые не подходят к основному разрешению.
Разрешение без подключенных мониторов
В headless-режиме выставляется разрешение 640x480, которое будет использоваться в VNC или Steam Link. Чтобы выставить разрешение побольше, например 1920x1080, пропишите в подсекции Screen
:
Section "Screen" [...] SubSection "Display" Depth 24 Virtual 1920 1080 EndSubSection EndSection
Проверьте источник питания
С помощью драйвера NVIDIA можно выяснить текущий источник питания видеокарты. Для этого нужно получить значение параметра 'GPUPowerSource' с помощью утилиты (0 - питание от сети переменного напряжения, 1 - питание от батареи):
Прослушивание ACPI-событий
Драйверы NVIDIA автоматически пытаются подключиться к демону acpid и получать уведомления о ACPI событиях (подключение/отключение источника питания, некоторые горячие клавиши и т.д.). Если соединение завершается неудачей, то X сервер выведет следующее предупреждение:
Вы можете запретить вывод этого сообщения, отключив опцию в вашем конфигурационном файле:
Однако если вы пользователь ноутбука, возможно более грамотным решением проблемы станет установка и запуск демона acpid.
Отображение температуры графического процессора в оболочке
Существует три метода запроса температуры видеокарты. nvidia-settings требует использования X, nvidia-smi или nvclock — не требуют. Также обратите внимание, что nvclock в настоящее время не работает с новыми картами NVIDIA, такими как карты серии GeForce 200, а также интегрированными графическими решениями, такими как Zotac IONITX's 8800GS.
nvidia-settings
Для отображения температуры графического ядра в оболочке используйте как указано ниже:
$ nvidia-settings -q gpucoretemp
Вывод должен быть примерно такой:
Attribute 'GPUCoreTemp' (hostname:0.0): 41. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, GPU.
Температура графического процессора этой платы 41 °C.
Пример того, как получить значение температуры для использования в утилитах rrdtool
или и др.:
nvidia-smi
nvidia-smi
может читать температуру прямо с графического процессора без использования сервера X. Это важно для небольшой группы пользователей, которые не имеют запущенного сервера X, те, кто используют ОС для серверных приложений.
Отображение температуры графического процессора с использованием nvidia-smi:
$ nvidia-smi
Пример вывода результата работы программы:
Только температура:
Пример того, как получить значение температуры для использования в утилитах rrdtool
или и др.:
Ссылка на руководство: https://www.question-defense.com/2010/03/22/gpu-linux-shell-temp-get-nvidia-gpu-temperatures-via-linux-cli.
nvclock
Используйте .
Могут быть расхождения значений температуры между nvclock и nvidia-settings/nv-control. В соответствии с этим сообщением от автора (thunderbird) nvclock, значения выдаваемые nvclock более точные.
Разгон и охлаждение
Включение разгона
Разгон контролируется через опцию Coolbits в секции , позволяя использовать различные неподдерживаемые свойства:
Option "Coolbits" "value"
Значение Coolbits - сумма его составляющих битов в двоичной системе исчисления. Типы битов:
1
(bit 0) - Включает возможность разгона для старых (до архитектуры Fermi) ядер, вкладка Clock Frequencies в nvidia-settings.- (bit 1) - Когда бит установлен, драйвер "будет пытаться инициализировать режим SLI, когда используются два графических процессора с разным количеством видеопамяти".
- (bit 2) - Включает ручное управление охлаждением графического процессора вкладка Thermal Monitor в nvidia-settings.
8
(bit 3) - Включает возможность разгона на вкладке PowerMizer в nvidia-settings. Доступна с версии 337.12 для архитектур Fermi и новее.- (bit 4) - Включает возможность повышения напряжения через параметры командной строки nvidia-settings. Доступна с версии 346.16 для архитектур Fermi и новее.
Чтобы включить несколько свойств, сложите значения Coolbits. Например, чтобы включить возможности разгона и повышения напряжения для архитектуры Fermi, установите значение .
Документация по Coolbits находится в и здесь.
Настройка статического 2D/3D разгона
Установите следующую строку в секции для включения PowerMizer на максимальную производительность (VSync не будет работать без этой строки):
Option "RegistryDwords" "PerfLevelSrc=0x2222"
Сохранение настроек разгона
Как правило, изменения частоты и напряжения, сделанные через интерфейс nvidia-settings, не сохраняются, теряясь после перезагрузки. К счастью, существуют инструменты, предлагающие интерфейс для разгона под проприетарным драйвером, способные сохранять настройки разгона пользователя и автоматически применять их при загрузке. Вот некоторые из них:
- — графический, применяет настройки при запуске сеанса рабочего стола
- и — графический, применяет настройки при загрузке системы
- nvocAUR — текстовый, профили представляют собой конфигурационные файлы в , применяет настройки при запуске сеанса рабочего стола
Изменение лимита TDP
Современные видеокарты Nvidia сбрасывают частоту, чтобы оставаться в пределах своего TDP и температуры. Для повышения производительности можно изменить предел TDP, что привёдет к повышению температуры и увеличению энергопотребления.
Например, чтобы установить предел энергопотребления на 160,30 Вт
# nvidia-smi -pl 160.30
Чтобы установить предел во время загрузки системы:
Установка скорости вентилятора при входе
Вы можете выставить скорость вентилятора вашей графической карты с помощью консольного интерфейса nvidia-settings. Сначала убедитесь в том, что в вашем конфигурационом файле Xorg для опции Coolbits установлен бит 2.
Поместите следующую строку в ваш файл xinitrc для управления вентилятором при запуске Xorg. Замените на значение скорости вентилятора нужное вам в процентах.
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=n"
Также вы можете указать и второй графический процессор, путем увеличения счетчика графического процесора и вентилятора.
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=n" \ -a "[gpu:1]/GPUFanControlState=1" -a [fan:1]/GPUTargetFanSpeed=n" &
Если вы ипользуете менеджер входа такой как GDM или SDDM, вы можете создать файл настроек. Создайте ~/.config/autostart/nvidia-fan-speed.desktop
и вставьте следующий текст.Снова измените на значение скорости вентилятора нужное вам в процентах.
[Desktop Entry] Type=Application Exec=nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=n" X-GNOME-Autostart-enabled=true Name=nvidia-fan-speed
Чтобы можно было регулировать скорость вращения вентиляторов более чем одной видеокарты, выполните команду:
$ nvidia-xconfig --enable-all-gpus $ nvidia-xconfig --cool-bits=4
Параметры модуля ядра
Некоторые параметры могут быть установлены как параметры модуля ядра, полный список можно получить, выполнив или посмотрев . Смотрите также Gentoo:NVidia/nvidia-drivers#Kernel module parameters.
Например, включение следующих параметров включит kernel mode settings и PAT , что влияет на то, как выделяется память. PAT была впервые представлена в Pentium III и поддерживается большинством более новых процессоров (wikipedia:Page attribute table#Processors). Если ваша система может поддерживать эту функцию, это должно повысить производительность.
На некоторых ноутбуках, чтобы разрешить изменения через nvidia-settings, необходимо включить этот параметр, иначе он будет отвечать "Setting applications clocks is not supported" и т.д.
/etc/modprobe.d/nvidia.conf
options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1"
Сохранение видеопамяти в ждущем режиме
По умолчанию драйверы NVIDIA Linux сохраняют и восстанавливают в ждущем режиме только основные распределения видеопамяти. Цитируя NVIDIA (, также доступно с пакетом в ): Потеря содержимого видеопамяти частично компенсируется драйверами NVIDIA и некоторыми приложениями, но может привести к таким сбоям, как повреждение рендеринга и сбои приложений при выходе из циклов управления питанием.
Пока ещё экспериментальная система позволяет сохранять всю видеопамять (при наличии достаточного места на диске или в оперативной памяти). Интерфейс доступен через файл и работает следующим образом: запишите "suspend" (или "hibernate") в непосредственно перед записью в обычный файл , запись "resume" в сразу после пробуждения или после неудачной попытки ухода в ждущий или спящий режим.
Драйверы NVIDIA полагаются на определённую пользователем файловую систему для хранения данных. Выбранная файловая система должна поддерживать безымянные временные файлы (ext4 подходит) и иметь достаточный объём для хранения распределения видеопамяти (например, как минимум ). Используйте команду для получения списка объёмов памяти всех GPU в системе.
Чтобы выбрать файловую систему, используемую для хранения видеопамяти во время сна системы (и изменить стратегию сохранения/восстановления видеопамяти по умолчанию на сохранение и восстановление всех распределений видеопамяти), необходимо передать две опции модулю ядра "nvidia". Например, запишите следующую строку в и перезагрузитесь:
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/tmp-nvidia
Можно заменить /tmp-nvidia
а другой желаемый вами путь.
Взаимодействие с обрабатывается простым скриптом , который сам будет вызван таким инструментом вроде systemd. Пакет поставляется с соответствующими службами systemd (которые, по сути, просто вызывают nvidia-sleep.sh
): , , . Вопреки инструкциям NVIDIA, в настоящее время нет необходимости включать (и на самом деле, возможно, это не очень хорошая идея), потому что скрипт делает то же самое, что и эта служба (но немного раньше) и включен по умолчанию (systemd вызывает его после пробуждения). Включите и/или .
Драйвер persistence
Есть демон, который можно запускать при загрузке. В стандартной настольной среде с одной видеокартой демон не нужен и может создавать проблемы . Смотрите раздел Driver Persistence документации Nvidia для получения подробной информации.
Для запуска демона persistence включите службу . Для использования вручную смотрите документацию разработчика.