Skip to content

Commit

Permalink
Merge pull request #91 from vlad196/main
Browse files Browse the repository at this point in the history
Добавил описание NvBoost для nvidia-nouveau
  • Loading branch information
OlegShchavelev authored Aug 15, 2024
2 parents e383670 + 2c1dd55 commit 5bb6054
Showing 1 changed file with 54 additions and 22 deletions.
76 changes: 54 additions & 22 deletions docs/graphics/nvidia/nvidia-nouveau/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,9 @@ reboot
```

::: danger
Для видеокарт Kepler и Maxwell потребуется обязательное [внедрение прошивки NVIDIA](#внедрение-прошивки-nvidia).
Для видеокарт **Maxwell** потребуется обязательное [внедрение прошивки NVIDIA](#внедрение-прошивки-nvidia).
:::

## Управление питанием (Turing и новее)

Nouveau — драйвер с открытым исходным кодом для графических процессоров NVIDIA, развивается посредством реверс-инжиниринга. До архитектуры Turing, в управлении питанием возникали проблемы, о чём можно посмотреть на странице [Power Management](https://nouveau.freedesktop.org/PowerManagement.html).

Начиная с архитектуры Turing, видеокарты получили полную поддержку управления питанием благодаря GSP-прошивкам от NVIDIA. Видеокарты на базе архитектур Ampere и Ada Lovelace имеют эту поддержку по умолчанию. Для видеокарт на базе архитектуры Turing **необходимо указать специальный параметр ядра**.

Для того, чтобы на видеокартах Turing заработало управление питанием, необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nouveau.config=NvGspRm=1` и сгенерировать новый `grub.cfg`:

```shell
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg
```
## Внедрение прошивки NVIDIA

Большинство видеочипов NVIDIA имеют встроенный аппаратный декодер, и некоторые видеочипы для его работы отдельно требуют извлечённую из драйвера прошивку NVIDIA. Прошивка NVIDIA требуется для видеокарт с аппаратным декодером: VP1, VP2, VP3, VP4.0, VP4.2, VP5 или VP6+. Список видеокарт с данными декодерами можно посмотреть на странице [Video Acceleration](https://nouveau.freedesktop.org/VideoAcceleration.html) в блоке `Which card has what engine`
Expand All @@ -123,7 +110,7 @@ grub-mkconfig -o /boot/grub/grub.cfg
:::

::: danger
Видеочипы Kepler и Maxwell для их нормальной загрузки обязательно требуют внедрение прошивки. Если при первой установке или запуске системы на устройствах с видеочипом одной из этих архитектур наблюдаются проблемы, можно временно перейти на [другой видеорежим](/graphics/nvidia/nvidia-drivers/#черныи-экран-при-выборе-сессии-x11-или-ошибка-в-инициализации-cuda)
Видеочипы Maxwell для их нормальной загрузки обязательно требуют внедрение прошивки. Если при первой установке или запуске системы на устройстве с видеочипом одной из этих архитектур наблюдаются проблемы, можно временно перейти на [другой видеорежим](/graphics/nvidia/nvidia-drivers/#черныи-экран-при-выборе-сессии-x11-или-ошибка-в-инициализации-cuda)
:::

- Установка прошивки:
Expand Down Expand Up @@ -161,9 +148,25 @@ cp -d nv* vuc-* /lib/firmware/nouveau/

:::

### Reclocking (от Celsius до Fermi)
## Управление питанием (Turing и новее)

Nouveau — драйвер с открытым исходным кодом для графических процессоров NVIDIA, развивается посредством реверс-инжиниринга. До архитектуры Turing, в управлении питанием возникали проблемы, о чём можно посмотреть на странице [Power Management](https://nouveau.freedesktop.org/PowerManagement.html).

Начиная с архитектуры Turing, видеокарты получили полную поддержку управления питанием благодаря GSP-прошивкам от NVIDIA. Видеокарты на базе архитектур Ampere и Ada Lovelace имеют эту поддержку по умолчанию. Для видеокарт на базе архитектуры Turing **необходимо указать специальный параметр ядра**.

Видеочипы до архитектуры Turing не имеют поддержку управления питания на Nouveau, из-за чего остаются в режиме пониженного энергопотребления и пониженными частотами. Но на некоторых архитектурах есть возможность менять частоты GPU и видеопамяти через уже заготовленные пресеты состояния питания. Видеочипы от Celsius до Tesla имеют возможность изменять частоты видеопамяти, а видеокарты от Rankine до Fermi имеют возможность изменять частоты GPU. Все, кто входят и в 1-ый и 2-ой диапазоны имеют управление частот и GPU, и видеопамяти, что будет отображено в описании пресетов.
Для того, чтобы на видеокартах Turing заработало управление питанием, можно прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nouveau.config=NvGspRm=1` и сгенерировать новый `grub.cfg`, либо прописать в файле /etc/modprobe.conf.:

```shell
su -
cat << _EOF_ > /etc/modprobe.d/nouveau_power_management.conf
options nouveau config=NvGspRm=1
_EOF_
make-initrd
```

### Управление частотами через Reclocking (для GM10x Maxwell, Kepler и Tesla G94-GT218)

Видеочипы до архитектуры Turing не имеют поддержку управления питания на Nouveau, из-за чего остаются в режиме пониженного энергопотребления и пониженными частотами. Но на Maxwell, код которых начинается с GM10x, Kepler и Tesla G94-GT218 есть возможность менять частоты GPU и видеопамяти через уже заготовленные пресеты частот GPU и видеопамяти.

- Проверьте доступные состояния питания:

Expand Down Expand Up @@ -191,20 +194,25 @@ echo pstate > /sys/kernel/debug/dri/0/pstate

Если всё работает стабильно и нет проблем, можно записать пресет в параметры ядра. Обратите внимание, что в выводе у нас было значение в шестнадцатеричном формате, для добавления в параметры ядра, значение необходимо перевести в десятеричный формат (для этого можно использовать любой конвертер из десятичной системы счисления в шестнадцатеричную).

В примере будет указано значение 0f, которое перевели в десятеричный формат (15)
В примере будет указано значение **0f**, которое перевели в десятеричный формат (**15**)

| Параметр | Описание |
| ------------------------------- | --------------------------------------------------------------------------------------------------- |
| `nouveau.config=NvClkMode=15` | На этапе загрузки устанавливает необходимое состояние питания. |
| `nouveau.config=NvClkModeAC=15` | На этапе загрузки устанавливает необходимое состояние питания, если устройство работает от сети. |
| `nouveau.config=NvClkModeDC=15` | На этапе загрузки устанавливает необходимое состояние питания, если устройство работает от батареи. |

Необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` один или несколько значений и сгенерировать новых `grub.cfg`:
Можно прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` и сгенерировать новых `grub.cfg`, либо прописать в файле /etc/modprobe.conf.

Пример записи в /etc/modprobe.conf:
```shell
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg
cat << _EOF_ > /etc/modprobe.d/nouveau_recloking.conf
options nouveau config=NvClkMode=15
options nouveau config=NvClkModeAC=15
options nouveau config=NvClkModeDC=15
_EOF_
make-initrd
```

::: danger
Expand All @@ -213,6 +221,31 @@ grub-mkconfig -o /boot/grub/grub.cfg
Некоторые состояния могут перегреть устройство и навредить. Делая это, пожалуйста, следите за состоянием видеочипа.
:::

### Управление частотами через NVBoost (для Fermi, Kepler, Maxwell, Pascal и Volta):

Для **Fermi**, **Kepler**, **Maxwell**, **Pascal** и **Volta** существует способ управления частотами через 3 режима:

| Режим | Описание |
| ----- | ---------------------------------------|
| `0` | Базовые тактовые частоты (по умолчанию)|
| `1` | Тактовые частоты в режиме `Boost` |
| `2` | Максимальные тактовые частоты |

Управление происходит через параметр `config.NvBoost`.

Например, установка тактовых частот в режиме boost будет `config.NvBoost=1`

Можно прописать это в параметр `GRUB_CMDLINE_LINUX_DEFAULT` и сгенерировать новый `grub.cfg`, либо прописать в файле /etc/modprobe.conf.

Пример записи в /etc/modprobe.conf:
```shell
su -
cat << _EOF_ > /etc/modprobe.d/nouveau_nvboost.conf
options nouveau config=NvBoost=1
_EOF_
make-initrd
```

### Управление скоростью вентиляторов (от Rankine до Maxwell)

Видеочипы от Rankine до Maxwell имеют поддержку управления вентиляторами.
Expand Down Expand Up @@ -306,7 +339,6 @@ _EOF_
| `modeset` | Должен ли быть включён драйвер. `0` для отключённого, `1` для включённого, `2` для "безголового?" |
| `config.NvAGP` | Режим `agp` (`0` для отключения, `1` для включения |
| `config.NvBios` | Указать источник `VBIOS`, как один из OpenFirmware / PRAMIN / PROM / ACPI / PCIROM / PLATFORM или имя файла, переданное в `request_firmware` |
| `config.NvBoost` | Указать режим `Boost` для Fermi и новее. (`0` — базовые тактовые частоты (по умолчанию), `1` — тактовые частоты в режиме `Boost`, `2` — максимальные тактовые частоты) |
| `config.NvFanPWM` | Включить использование ШИМ для вентилятора, автоматическое определение по умолчанию |
| `config.NvForcePost` | Нужно ли принудительно выполнять POST устройства, по умолчанию отключено |
| `config.NvMemExec` | Принудительное включение/отключение выполнения сценария синхронизации памяти. |
Expand Down

0 comments on commit 5bb6054

Please sign in to comment.