NVIDIA (Русский)/Tips and tricks (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи NVIDIA/Tips and tricks. Дата последней синхронизации: 23 марта 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Смотрите главную статью NVIDIA.

Исправление разрешения терминала

Переход с драйвера nouveau будет сопровождаться низким разрешением экрана терминала при загрузке. Для загрузчика GRUB, обратитесь к GRUB/Tips and tricks#Setting the framebuffer resolution, чтобы увеличить разрешение.

Использование ТВ-выхода

Хорошая статья об этом есть тут.

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 добавив в секцию Device строки:

Option "ConnectedMonitor" "DFP"
Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid"

Опция ConnectedMonitor принуждает драйвер распознавать DFP так, как буд-то он подключен. CustomEDID предоставляет данные EDID для устройства и говорит, что при загрузке ТВ/DFP как бы был подключен во время процесса запуска X.

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

Если вышеуказанные изменения не работают, в xorg.conf в секции Device вы можете попробовать удалить строку Option "ConnectedMonitor" "DFP" и добавить следующие строки:

Option "ModeValidation" "NoDFPNativeResolutionCheck"
Option "ConnectedMonitor" "DFP-0"

Опция драйвера NVIDIA NoDFPNativeResolutionCheck предотвращает отключение всех режимов, которые не подходят к основному разрешению.

Проверьте источник питания

С помощью драйвера NVIDIA можно выяснить текущий источник питания видеокарты. Для этого нужно получить значение параметра 'GPUPowerSource' с помощью утилиты nvidia-settings (0 - питание от сети переменного напряжения, 1 - питание от батареи):

$ nvidia-settings -q GPUPowerSource -t
1

Прослушивание ACPI-событий

Драйверы NVIDIA автоматически пытаются подключиться к демону acpid и получать уведомления о ACPI событиях (подключение/отключение источника питания, некоторые горячие клавиши и т.д.). Если соединение завершается неудачей, то X сервер выведет следующее предупреждение:

~/.local/share/xorg/Xorg.0.log
NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
NVIDIA(0):     may not be running or the "AcpidSocketPath" X
NVIDIA(0):     configuration option may not be set correctly.  When the
NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will
NVIDIA(0):     try to use it to receive ACPI event notifications.  For
NVIDIA(0):     details, please see the "ConnectToAcpid" and
NVIDIA(0):     "AcpidSocketPath" X configuration options in Appendix B: X
NVIDIA(0):     Config Options in the README.

Вы можете запретить вывод этого сообщения, отключив опцию ConnectToAcpid в вашем конфигурационном файле:

/etc/X11/xorg.conf.d/20-nvidia.conf
 Section "Device"
   ...
   Driver "nvidia"
   Option "ConnectToAcpid" "0"
   ...
 EndSection

Однако если вы пользователь ноутбука, возможно более грамотным решением проблемы станет установка и запуск acpid демона.

Отображение температуры графического процессора в оболочке

Method 1 - nvidia-settings

Примечание: Данный метод требует наличия сервера X. Используйте второй или третий метод если X сервер вам не нужен. Также, третий метод не работает с новыми картами NVIDIA, такими как GeForce 200 series, и с интегрированными графическими решениями, такими как 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 или conky и др.:

$ nvidia-settings -q gpucoretemp -t
41

Method 2 - nvidia-smi

nvidia-smi может читать температуру прямо с графического процессора без использования сервера X. Это важно для небольшой группы пользователей, которые не имеют запущенного сервера X, те, кто используют ОС для серверных приложений. Отображение температуры графического процессора с использованием nvidia-smi:

$ nvidia-smi

Пример вывода результата работы программы:

$ nvidia-smi
Fri Jan  6 18:53:54 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 2.290.10   Driver Version: 290.10         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 8500 GT           | 0000:01:00.0  N/A    |       N/A        N/A |
|  30%   62 C  N/A   N/A /  N/A |  17%   42MB /  255MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           ERROR: Not Supported                                          |
+-----------------------------------------------------------------------------+

Только температура:

$ nvidia-smi -q -d TEMPERATURE

==============NVSMI LOG==============

Timestamp                           : Sun Apr 12 08:49:10 2015
Driver Version                      : 346.59

Attached GPUs                       : 1
GPU 0000:01:00.0
    Temperature
        GPU Current Temp            : 52 C
        GPU Shutdown Temp           : N/A
        GPU Slowdown Temp           : N/A

Пример того, как получить значение температуры для использования в утилитах rrdtool или conky и др.:

$ nvidia-smi -q -d TEMPERATURE | awk '/GPU Current Temp/ {print $5}'
52

Ссылка на руководство: https://www.question-defense.com/2010/03/22/gpu-linux-shell-temp-get-nvidia-gpu-temperatures-via-linux-cli.

Method 3 - nvclock

Используйте nvclockAUR.

Примечание: nvclock не может получить доступ к тепловому сенсору на картах NVIDIA новее Geforce 200 series.

Могут быть расхождения значений температуры между nvclock и nvidia-settings/nv-control. В соответствии с этим сообщением от автора (thunderbird) nvclock, значения выдаваемые nvclock более точные.

Установка скорости вентилятора при входе

Tango-preferences-desktop-locale.pngЭта статья или раздел нуждается в переводеTango-preferences-desktop-locale.png

Примечания: Плохой стиль оригинала. (обсуждение: Talk:NVIDIA (Русский)/Tips and tricks (Русский)#)

Вы можете выставить скорость вентилятора вашей графической карты с помощью консольного интерфейса nvidia-settings. Сначала убедитесь в том, что в вашем конфигурационом файле Xorg значения опции Coolbits установлены в 4, 5 или 12 для архитектуры Ферми и выше в секции Device для включения управления скоростью вентилятора.

Option "Coolbits" "4"
Примечание: Для карт GeForce 400/500 series, на текущий момент, этот метод при входе не устанавливает скорость вентилятора. Также, этот метод только позволяет настраивать скорость вентилятора только для текущей сессии X через nvidia-settings.

Поместите следующую строку в ваш файл xinitrc для управления вентилятором при запуске Xorg. Замените n на значение скорости вентилятора нужное вам в процентах.

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n"

Также вы можете указать и второй графический процессор, путем увеличения счетчика графического процесора и вентилятора.

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n" \
                -a "[gpu:1]/GPUFanControlState=1" -a  [fan:1]/GPUCurrentFanSpeed=n" &

Если вы ипользуете менеджер входа такой как GDM или KDM, вы можете создать файл настроек. Создайте ~/.config/autostart/nvidia-fan-speed.desktop и вставьте следующий текст.Снова измените n на значение скорости вентилятора нужное вам в процентах.

[Desktop Entry]
Type=Application
Exec=nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n"
X-GNOME-Autostart-enabled=true
Name=nvidia-fan-speed
Примечание: С версии драйвера 349.16, опция GPUCurrentFanSpeed заменена на GPUTargetFanSpeed. [1]

Переключение драйверов NVIDIA и nouveau

Если вам необходимо переключиться между драйверами, вы можете воспользоваться следующим скриптом (запускайте с правами суперпользователя и пишите yes во всех подтверждениях) :

#!/bin/bash
BRANCH= # Enter a branch if needed, i.e. -340xx or -304xx
NVIDIA=nvidia${BRANCH} # If no branch entered above this would be "nvidia"
NOUVEAU=xf86-video-nouveau

# Replace -R with -Rs to if you want to remove the unneeded dependencies
if [ $(pacman -Qqs ^mesa-libgl$) ]; then
    pacman -S $NVIDIA ${NVIDIA}-libgl # Add lib32-${NVIDIA}-libgl and ${NVIDIA}-lts if needed
    # pacman -R $NOUVEAU
elif [ $(pacman -Qqs ^${NVIDIA}$) ]; then
    pacman -S --needed $NOUVEAU mesa-libgl # Add lib32-mesa-libgl if needed
    pacman -R $NVIDIA # Add ${NVIDIA}-lts if needed
fi

Как избежать разрывов/тиринга на картах GeForce серий 500/600/700/900

Разрывов можно избежать принудительным включением цепочки полного композитинга, независимо от используего вами композитора. Для проверки работоспособности опции, выполните

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Вам будет сообщено, что производительность некоторых приложений OpenGL может быть снижена.

Для постоянного использования сделанных изменений, вам необходимо добавить следующую строку в секцию "Screen" вашего конфигурационного файла Xorg, например /etc/X11/xorg.conf.d/20-nvidia.conf:

Option  "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Если у вас нет конфигурационного файла Xorg, вы можете создать его для текущей видеокарты исполльзуя nvidia-xconfig (смотрите #Автоматическая настройка[ссылка недействительна: раздел не найден]) и переместить его из /etc/X11/xorg.conf в более удобное место /etc/X11/xorg.conf.d/20-nvidia.conf.

Ручная конфигурация

Некоторые настройки (которые не могут быть настроены автоматически[ссылка недействительна: раздел не найден] или с помощью GUI) можно выполнить с помощью редактирования конфигурационного файла. Для вступления изменений в силу перезапустите X сервер.

Обратитесь к NVIDIA Accelerated Linux Graphics Driver README and Installation Guide для дополнительных сведений.

Отключение логотипа при загрузке

Добавьте опцию "NoLogo" внутри секции Device:

Option "NoLogo" "1"

Переопределение обнаружения монитора

Опция "ConnectedMonitor" в секции Device позволяет переопределить обнаружение монитора при старте Х сервера, что может сэкономить значительное время при запуске системы. Возможные значения: "CRT" для аналоговых соединений, "DFP" для цифровых соединений и "TV" для телевизоров.

Следующее выражение заставляет драйвер NVIDIA пропустить стартовые проверки и распознать монитор как DFP:

Option "ConnectedMonitor" "DFP"
Примечание: Используйте "CRT" для всех 15-контактных VGA подключений, даже если диплей является плоскопанельным. Значение "DFP" предназначено только для DVI, HDMI, или DisplayPort соединений.

Включение SLI

Важно: По состоянию на Май 7, 2011, вы можете испытывать проблемы с производительностью видео в GNOME 3, после включения SLI.

Выдержка из README драйвера NVIDIA Приложение B: Данная опция контролирует рендеринг SLI в поддерживаемых конфигурациях. Другими словами, в "поддерживаемых конфигурациях" обозначены компьютеры оборудованные материнской платой c сертифицированной поддержкой SLI и 2 или 3 графических процессора GeForce, также с сертифицированной поддержкой SLI. Смотрите Зона SLI (англ.)[устаревшая ссылка 2020-08-04] для получения подробной информации.

Найдем первый PCI Bus ID графического процессора, используя lspci:

$ lspci | grep VGA
03:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2)
05:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2)

Добавим BusID (3 в нашем случае) в секцию Device:

BusID "PCI:3:0:0"
Примечание: Формат написания очень важен. Значение BusID должно быть указано в таком формате "PCI:<BusID>:0:0"

Добавьте желаемое значение режима рендеринга SLI в секцию Screen:

Option "SLI" "AA"

Следущая таблица описывает доступные режимы рендеринга.

Значение Описание
0, no, off, false, Single Использовать только один графический процессор для рендеринга.
1, yes, on, true, Auto Включить SLI и позволить драйверу автоматически выбрать режим рендеринга.
AFR Включить SLI и использовать режим поочередного рендеринга кадров.
SFR Включить SLI и использовать режим разделённого рендеринга кадров.
AA Включить SLI и использовать сглаживание SLI. Используйте в сочетании с полным сглаживанием сцены, для улучшения качества визуализации.

Другой вариант, вы можете использовать утилиту nvidia-xconfig для вставки изменений в xorg.conf одной командой:

# nvidia-xconfig --busid=PCI:3:0:0 --sli=AA

Для проверки работы режима SLI в консольном режиме:

$ nvidia-settings -q all | grep SLIMode
  Attribute 'SLIMode' (arch:0.0): AA 
    'SLIMode' is a string attribute.
    'SLIMode' is a read-only attribute.
    'SLIMode' can use the following target types: X Screen.
Важно: После включения SLI ваша система может зависать/не отвечать после запуска Xorg. Желательно отключить менеджер входа до перезагрузки.

Включение разгона

Важно: Помните, что разгон может привести к повреждению оборудования и авторы этой страницы снимают с себя любую ответственность за повреждение оборудования, вся информация, в том числе и возможность разгона, указывается изготовителем в спецификации к оборудованию.

Разгон контролируется через опцию Coolbits в секции Device, позволяя использовать различные неподдерживаемые свойства:

Option "Coolbits" "value"
Совет: Опция Coolbits легко контролируется через nvidia-xconfig, которая может управлять файлами конфигурации Xorg:
# nvidia-xconfig --cool-bits=value

Значение Coolbits - сумма его составляющих битов в двоичной системе исчисления. Типы битов:

  • 1 (bit 0) - Включает возможность разгона для старых (до архитектуры Fermi) ядер, вкладка Clock Frequencies в nvidia-settings.
  • 2 (bit 1) - Когда бит установлен, драйвер "будет пытаться инициализировать режим SLI, когда используются два графических процессора с разным количеством видеопамяти".
  • 4 (bit 2) - Включает ручное управление охлаждением графического процессора вкладка Thermal Monitor в nvidia-settings.
  • 8 (bit 3) - Включает возможность разгона на вкладке PowerMizer в nvidia-settings. Доступна с версии 337.12 для архитектур Fermi и новее. [2]
  • 16 (bit 4) - Включает возможность повышения напряжения через параметры командной строки nvidia-settings. Доступна с версии 337.12 для архитектур Fermi и новее.[3]

Чтобы включить несколько свойств, сложите значения Coolbits. Например, чтобы включить возможности разгона и повышения напряжения для архитектуры Fermi, установите значение Option "Coolbits" "24".

Документация по Coolbits находится в /usr/share/doc/nvidia/html/xconfigoptions.html. Последния онлайн-версия документации по Coolbits (версия драйвера 355.11) находится тут (англ.).

Примечание: Также, возможно отредактировать и переписать BIOS графического процессора, используя DOS (предпочтительнее) или с использованием Win32 окружения с помощью nvflash[устаревшая ссылка 2020-08-04] и NiBiTor 6.0[устаревшая ссылка 2020-08-04]. Преимущество данного способа в том, что вы можете поднять не только напряжение, но и повысить стабильность программных методов разгона, такие как Coolbits. Руководство по модификации BIOS архитектуры Fermi (англ.)

Настройка статического 2D/3D разгона

Установите следующую строку в секции Device для включения PowerMizer на максимальную производительность (VSync не будет работать без этой строки):

Option "RegistryDwords" "PerfLevelSrc=0x2222"