
Конфигурирование драйвера видеокарт Nvidia в Linux
Мы находимся на временном отрезке слома эпох. Влияние информационно-технологических глобальных субъектов стало намного большим, чем государств с утратой последними части своих возможностей по обработке и политическому/идеологическому влиянию на людей. Непонимание протекающих в мире процессов, искаженное восприятие картины мира, отсутствие реально значимых знаний, облегчают манипулирование людьми. Фентези, а не научная фантастика, гей/ЛГБТ и прочие якобы ценности, дешевые (в смысле глубины сюжета) поделки в кино, а не искусство, впаривание в голову набора разрозненных фактов/перечня дат, а не обучение пониманию причин и последствий тех или иных исторических процессов, войн и революций… Реальные знания и истинное понимание ситуации стали уделом избранных. Система современных тестов позволяет даже дебилу получить неплохую оценку, угадав ответы, либо просто отметив вариант Б везде… Просто грустные мысли автора не в тему о текущей ситуации
Для увеличения производительности видеокарт Nvidia в операционных системах на ядре Linux можно задействовать опции, изначально не активированные в proprietary-драйверах.
Список доступных для изменения параметров драйвера nvidia в ubuntu можно посмотреть, выполнив консольную команду:
modinfo nvidia
Пример информации о конфигурации nvidia-driver-535 (версия 535.183.01) в xubuntu 24.04:
filename: /lib/modules/6.8.0-39-generic/updates/dkms/nvidia.ko.zst firmware: nvidia/535.183.01/gsp_tu10x.bin firmware: nvidia/535.183.01/gsp_ga10x.bin alias: char-major-195-* version: 535.183.01 supported: external license: NVIDIA srcversion: E1D7E062E93D47A443165F6 alias: pci:v000010DEd*sv*sd*bc06sc80i00* alias: pci:v000010DEd*sv*sd*bc03sc02i00* alias: pci:v000010DEd*sv*sd*bc03sc00i00* depends: retpoline: Y name: nvidia vermagic: 6.8.0-39-generic SMP preempt mod_unload modversions sig_id: PKCS#7 signer: intel40-I7-7700 Secure Boot Module Signature key sig_key: 50:C3:1C:42:16:66:9D:DB:0C:FC:22:B1:CD:23:B6:B3:8C:B8:FE:9E sig_hashalgo: sha512 signature: ... parm: NvSwitchRegDwords:NvSwitch regkey (charp) parm: NvSwitchBlacklist:NvSwitchBlacklist=uuid[,uuid...] (charp) parm: NVreg_ResmanDebugLevel:int parm: NVreg_RmLogonRC:int parm: NVreg_ModifyDeviceFiles:int parm: NVreg_DeviceFileUID:int parm: NVreg_DeviceFileGID:int parm: NVreg_DeviceFileMode:int parm: NVreg_InitializeSystemMemoryAllocations:int parm: NVreg_UsePageAttributeTable:int parm: NVreg_EnablePCIeGen3:int parm: NVreg_EnableMSI:int parm: NVreg_TCEBypassMode:int parm: NVreg_EnableStreamMemOPs:int parm: NVreg_RestrictProfilingToAdminUsers:int parm: NVreg_PreserveVideoMemoryAllocations:int parm: NVreg_EnableS0ixPowerManagement:int parm: NVreg_S0ixPowerManagementVideoMemoryThreshold:int parm: NVreg_DynamicPowerManagement:int parm: NVreg_DynamicPowerManagementVideoMemoryThreshold:int parm: NVreg_EnableGpuFirmware:int parm: NVreg_EnableGpuFirmwareLogs:int parm: NVreg_OpenRmEnableUnsupportedGpus:int parm: NVreg_EnableUserNUMAManagement:int parm: NVreg_MemoryPoolSize:int parm: NVreg_KMallocHeapMaxSize:int parm: NVreg_VMallocHeapMaxSize:int parm: NVreg_IgnoreMMIOCheck:int parm: NVreg_NvLinkDisable:int parm: NVreg_EnablePCIERelaxedOrderingMode:int parm: NVreg_RegisterPCIDriver:int parm: NVreg_EnableResizableBar:int parm: NVreg_EnableDbgBreakpoint:int parm: NVreg_RegistryDwords:charp parm: NVreg_RegistryDwordsPerDevice:charp parm: NVreg_RmMsg:charp parm: NVreg_GpuBlacklist:charp parm: NVreg_TemporaryFilePath:charp parm: NVreg_ExcludedGpus:charp parm: NVreg_DmaRemapPeerMmio:int parm: NVreg_RmNvlinkBandwidth:charp parm: rm_firmware_active:charp
Текущие параметры работы драйвера Nvidia в Linux можно посмотреть командой
cat /proc/driver/nvidia/params
Пример начальных параметров конфигурации драйвера версии 535.183.01 видеокарты Nvidia GeForce GTX 1660 Ti в xubuntu 24.04:
ResmanDebugLevel: 4294967295 RmLogonRC: 1 ModifyDeviceFiles: 1 DeviceFileUID: 0 DeviceFileGID: 0 DeviceFileMode: 438 InitializeSystemMemoryAllocations: 1 UsePageAttributeTable: 4294967295 EnableMSI: 1 EnablePCIeGen3: 0 MemoryPoolSize: 0 KMallocHeapMaxSize: 0 VMallocHeapMaxSize: 0 IgnoreMMIOCheck: 0 TCEBypassMode: 0 EnableStreamMemOPs: 0 EnableUserNUMAManagement: 1 NvLinkDisable: 0 RmProfilingAdminOnly: 1 PreserveVideoMemoryAllocations: 0 EnableS0ixPowerManagement: 0 S0ixPowerManagementVideoMemoryThreshold: 256 DynamicPowerManagement: 3 DynamicPowerManagementVideoMemoryThreshold: 200 RegisterPCIDriver: 1 EnablePCIERelaxedOrderingMode: 0 EnableResizableBar: 0 EnableGpuFirmware: 18 EnableGpuFirmwareLogs: 2 EnableDbgBreakpoint: 0 OpenRmEnableUnsupportedGpus: 0 DmaRemapPeerMmio: 1 RegistryDwords: "" RegistryDwordsPerDevice: "" RmMsg: "" GpuBlacklist: "" TemporaryFilePath: "" ExcludedGpus: ""
Для увеличения производительности можно активировать такие настройки, как:
- поддержка технологии PCIeGen3 (по умолчанию для совместимости проприетарный драйвер Nvidia задействует версию PCIe v2). Для использования более нового протокола обмена данными по шине PCI-E нужно активировать опцию NVreg_EnablePCIeGen3=1;
- параметр, отвечающий за предварительное обнуление памяти видеокарты перед ее выделением. Его лучше отключить — опция nvidia Nvreg_InitializeSystemMemoryAllocations=0;
- активировать поддержку CUDA Stream Memory операций в user-mode приложениях (опция NVreg_EnableStreamMemOPs=1);
- параметр Page Attribute Tables (сокращенно PAT, отвечает за работу CPU с памятью) — опция Nvreg_UsePageAttributeTable=1. Активация этого параметра особенно полезна на ноутбуках с гибридной графикой, так как существенно повышается скорость обмена кадрами между iGPU и dGPU.
Технология PAT создает таблицу типов разделов по определенному адресу, отображенному внутри регистра, и использует архитектуру памяти и набор команд более эффективно.

Активация этой опции теоретически должна повысить производительность центрального процессора. Ее поддерживают практически все CPU, начиная с модели Pentium III.
Чтобы проверить, поддерживает ли процессор технологию PAT, используется команда:
grep -E ‘^flags.+ pat( |$)’ /proc/cpuinfo
Информация о процессоре Intel Core I7-7700 3.60GHz, выдаваемая системой по этой команде:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities

Как оптимизировать работу драйверов nvidia в Linux?
Оптимизировать работу модулей ядра Linux, отвечающих за работу фирменного драйвера Nvidia, можно, отредактировав файл nvidia-graphics-drivers-kms.conf в каталоге /etc/modprobe.d/ (для операционной системы xubuntu 24.04) в редакторе nano:
sudo nano /etc/modprobe.d/nvidia-graphics-drivers-kms.conf
Изначально в этом файле содержится строка
options nvidia-drm modeset=1
которая активирует опцию modesetting для драйвера NVIDIA. Она нужна для использования рабочих окружений на базе Wayland, работы PRIME Sync/PRIME Offload на ноутбуках с гибридной графикой, корректной работы фреймбуфера, а также для использования VA-API драйвера для аппаратного ускорения видео в Firefox или видеоплеере.
Начальное содержимое файла nvidia-graphics-drivers-kms.conf в xubuntu 24.04:

Опции драйвера nvidia в xubuntu 24.04 находятся в файле /etc/modprobe.d/nvidia-graphics-drivers-kms.conf.
Оптимизированные параметры можно добавить в этот файл:
sudo nano /etc/modprobe.d/nvidia-graphics-drivers-kms.conf
Добавляем строки:
options nvidia NVreg_EnablePCIeGen3=1 options nvidia Nvreg_UsePageAttributeTable=1 options nvidia NVreg_InitializeSystemMemoryAllocations=0 options nvidia NVreg_EnableStreamMemOPs=1

После сохранения изменений перезагружаем компьютер и проверяем активацию указанных опций командой
cat /proc/driver/nvidia/params
видим:
... InitializeSystemMemoryAllocations: 0 UsePageAttributeTable: 4294967295 EnableMSI: 1 EnablePCIeGen3: 1 MemoryPoolSize: 0 ... TCEBypassMode: 0 EnableStreamMemOPs: 1 EnableUserNUMAManagement: 1 ... OpenRmEnableUnsupportedGpus: 0 DmaRemapPeerMmio: 1
Указанные выше изменения в алгоритме работы видеокарт Nvidia в Linux можно сделать в полуавтоматическом режиме с помощью утилиты nvidia-tweaks командами:
git clone https://www.github.com/ventureoo/nvidia-tweaks.git cd nvidia-tweaks sudo cp nvidia-tweaks.conf /etc/modprobe.d/nvidia-tweaks.conf sudo cp 60-nvidia.rules /etc/udev/rules.d/
Помимо опций, указанных выше, утилита активирует следующие параметры:
- NVreg_DynamicPowerManagement=0x02 — включение динамического управления потреблением мобильных видеокарт Turing и новее, отключающее дискретный GPU во время простоя;
- nvidia_drm.fbdev=1 — включение экспериментальной функции аппаратной поддержки управления фреймбуфером. Позволяет использовать нативное разрешение дисплея в консольном (tty) режиме.
Указанные в статье изменения могут дать некоторый прирост производительности в играх, влияние на хешрейт при майнинге криптовалют будет незначительным.


