LINUX.ORG.RU

Debian 10 и Nvidia

 ,


2

2

Обновился сегодня на Debian 10 «Buster». Вроде бы всё замечательно, кроме одного, перестала работать волшебная опция в /etc/X11/xorg.conf в секции Device (или можно в Screen):

Option «RegistryDwords» «PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3;»

Которая снижала производительность видеокарты Nvidia и следовательно её температуру. В моём случае с 60 градусов (> 60 включался вентилятор) до 35 +/- градусов, при этом окошки и даже простенькие игры и фильмы в хорошем качестве не тормозили.

Судя по nvidia-settings эта опция не работает.

Ничего нагуглить не получается. Возможно это связано с переходом на Wayland или с новым драйвером Nvidia?

Может кто-то сталкивался с подобной проблемой?


переходом на Wayland

да, выбери в меню ГДМа gnome on Xorg. Вайланд - недопиленная хрень, а нвидия вобще на вайланд ложила с высокой колокольни. Вон даже разработчики оконного менеджера sway должны были переключатель командной строки --my-next-gpu-wont-be-nvidia добавить (форсит запуск WM на нвидии). Вайланду пофиг на конфиг хорга. все эти вещи внутри конфига или поддерживает твой вм (композитор) или не поддерживаются вообще.

MikeWortin ★★ ()

Возможно это связано с переходом на Wayland или с новым драйвером Nvidia?

Скорее со вторым, потому что Wayland (Гнум на Wayland) не запустится на нвидии пока вручную не включишь последней KMS через строку в грабе

Sunderland93 ★★★★★ ()

Погуглил как проверить X11 у меня или Wayland. Оказалось всё таки X11:

$ echo $XDG_SESSION_TYPE
x11
$ loginctl show-session 2 -p Type
Type=x11
Значит, в новой версии драйвера Nvidia (как минимум 418.74) это перестало работать :(

sMax ()

Знаю, что не совсем по теме, но я об этой опции впервые слышу. На сколько она снижает тепловыделение? Мне бы вообще хотелось выключить жужжащий кулер на своей GT 520 и не перегреть ее, возможно ли? P.S. У меня иксы, да.

anonymous ()
Ответ на: комментарий от alexferman

Когда там наконец сделают нормальную работу KDE Wayland на Nvidia? Уже столько времени прошло с момента добавления патча, а оно так и не работает. Или Wayland только на словах нужен? Не говоря уже о «готов».

Macrocosm ()

Может пойти другим путём — найти и убить того, кто без спросу насилует мою видеокарту? Т.е. зачем KDE, когда не запущено ни одного приложения и я не произвожу никаких действий, разгоняет видеокарту? Performance Level из nvidia-settings постоянно прыгает от 0 до 3. Или это драйвер Nvidia глючит и зря жрёт электричество? В настройках KDE пробовал менять «Механизм отрисовки», не помогло.

Можно ли посмотреть какие процессы используют GPU? Например, в Windows 10 можно в Диспетчере задач добавить столбец GPU (отображается в % использование ГП). Есть ли аналогичная возможность в Linux для Nvidia?

sMax ()
Ответ на: комментарий от sMax

Может пойти другим путём — найти и убить того, кто без спросу насилует мою видеокарту?

Эти люди, которые насиловали твой процесс загрузки, твою аудиосистему, твой dns, /dev/, /var/log/ и много чего ещё, находятся под надёжным крылом IBM и добраться до них нельзя никак.

До сих пор вся /sbin/ взъерошена.

anonymous ()
Ответ на: комментарий от anonymous

На сколько я помню, она включала режим экономии энергии, предназначенный для ноутбуков, при этом perfomance level всегда развен 0 и не скачет, в зависимости от нагрузки. Сейчас уже не работает.

А тепловыделение, естественно, зависит от конкретной модели.

sMax ()
$ nvidia-smi
Thu Jul 11 18:48:25 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.74       Driver Version: 418.74       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  On   | 00000000:01:00.0  On |                  N/A |
|  0%   61C    P0    67W / 280W |    500MiB / 11175MiB |      4%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1534      G   /usr/lib/xorg/Xorg                           244MiB |
|    0      1874      G   /usr/bin/kwin_x11                            124MiB |
|    0      1882      G   /usr/bin/krunner                              31MiB |
|    0      1884      G   /usr/bin/plasmashell                          95MiB |
+-----------------------------------------------------------------------------+

Какой именно процесс потребляет почему-то не отображается (по всей видимости, это первый столбец последней таблицы, где везде 0).

Там где 4% это похоже общая нагрузка. Она была 0, иногда поднималась до 1, и редко когда больше (значение 4% я долго ловил). Но этого хватает, чтобы perfomance level постоянно менялся, а температура быстро росла.

Я думаю, это драйвер Nvidia так глючит.

sMax ()

В общем, решение следующее (из форума nvidia):

Теперь драйвер Nvidia параметр RegistryDwords не читает из xorg.conf, нужно указывать его в виде параметра модуля ядра (себе я дописал сюда /etc/modprobe.d/nvidia.conf) и появился параметр OverrideMaxPerf, с помощью которого как раз можно зафиксировать Performance level.

Например, для себя добавил такую строчку:

options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1"
После чего в nvidia-settings Performance level у меня всегда был равен 0. Температура ниже 40 градусов и не поднимается, вентилятор карты не включается, ничего не тормозит, что и требовалось.

Если так:

options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x3"
То в nvidia-settings Performance level у меня всегда был равен 2. Другие значения не пробовал.

Несколько параметров можно указывать таким образом:

options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1" "что-то_ещё"
Сам я не пробовал.

sMax ()

Статистика потребления мощности

Статистика потребления мощности для моей GTX1080Ti в разных Performance level при отсутствии нагрузки (почти, 0-5%, чаще 0%).

Уровень | Мощность
--------|---------
0 (P8)  | ~21W
1 (P5)  | ~27W
2 (P2)  | ~56W
3 (P0)  | ~62W

Получается экономия до 3-х раз, если зафиксировать на уровне 0. Когда запустил фильм (FHD), GPU Utilization поднялась до 20%, а потребляемая мощность увеличилась всего где-то на 2W.

Ещё что интересно, при OverrideMaxPerf=0x1 частота ГП в MHz зафиксировалось на максимуме (для level 0) и не меняется.

Может кому-то будет интересно.

sMax ()
Ответ на: комментарий от sMax

Кстати, команда modinfo nvidia выведет список параметров ядра, которые можно задавать. Прочитать их описания можно, например, здесь: http://us.download.nvidia.com/XFree86/Linux-x86_64/418.74/README/index.html Например для драйвера 304.xx мне очень помог параметр EnableVia4x, который специально для материнок на базе Via KX133.

ZenitharChampion ★★★★★ ()
Ответ на: Статистика потребления мощности от sMax

Использую дефолтный автоматический режим для моей GTX1050Ti и не испытывал каких-либо проблем с производительностью в играх и Blender (фризов, лагов). Балансируется нормально. При просмотре фильмов Performance level автоматически выставляется на 0 как и должно быть.

RedEyedMan4 ★★★★★ ()
Ответ на: комментарий от RedEyedMan4

64 градуса в простое (загрузка ГП на 0-5%) мне тоже не нравится. Мне нравится мои 35 градусов :)

А у меня Performance Level постоянно хаотично прыгает в простое без этих опций. Много разных версий драйверов от Nvidia было.

sMax ()

Всё таки я остановился на старых опциях, но в виде параметров модуля ядра (/etc/modprobe.d/nvidia.conf):

options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3;"
Так Performance Level зафиксирован тоже на 0, но Graphics Clock не зафиксирован на максимуме, а меняется в доступном диапазоне (в моём случае 139 - 607 MHz). Температура чуть ниже и потребляемая мощность ниже на 1-2W :)

sMax ()
Ответ на: комментарий от sMax

64 градуса

Это у меня в нагрузке :)

А в простое 35-40.

Performance Level постоянно хаотично прыгает в простое без этих опций

Так и должно быть, это режим энергосбережения. По уровням скачет даже если просто щелкаешь по окошкам.

Ты бы видюху почистил, термопасту и термопрокладки заменил (если руки из нужного места), а то 64 градуса в простое это не ок.

RedEyedMan4 ★★★★★ ()
Последнее исправление: RedEyedMan4 (всего исправлений: 1)
Ответ на: комментарий от sMax

Зажимать мощность такой карты... не проще ли заменить эту GTX 1080Ti на какую-нибудь GT1030?

Так Performance Level зафиксирован тоже на 0, но Graphics Clock не зафиксирован на максимуме, а меняется в доступном диапазоне (в моём случае 139 - 607 MHz). Температура чуть ниже и потребляемая мощность ниже на 1-2W :)

Поиграть не сможешь :)

RedEyedMan4 ★★★★★ ()
Ответ на: комментарий от RedEyedMan4

Так и должно быть, это режим энергосбережения. По уровням скачет даже если просто щелкаешь по окошкам.

Я не считаю, что это правильно. Зачем разгонять чистоту ГП если он загружен на <5%? С увеличением частоты вырастает потребляемая мощность в 3 раза и следовательно тепловыделение, наверное в те же 3 раза.

А если бы у меня это был ноутбук, то это поведение драйвера было бы совсем недопустимым.

Почему бы Nvidia не дать возможность пользователю самому выбирать стратегию энергосбережения через nvidia-settings, а не ломать голову с какими-то опциями.

sMax ()
Ответ на: комментарий от RedEyedMan4

Поиграть не сможешь :)

Я играю раз в неделю, а работаю каждый день. Когда захочу поиграть, мог и убрать опции и перезагрузить. Хотя конечно, это бесит, хочется иметь возможность всё это через nvidia-settings менять.

sMax ()
Ответ на: комментарий от sMax

А если бы у меня это был ноутбук, то это поведение драйвера было бы совсем недопустимым.

Я как-то вообще не запариваюсь с энергосбережением на ПК с БП 750 ватт, ну набежит летом на 1000рубликов, а то и больше если кондиционер включаешь. Работает комп от электросети, а значит нечего экономить. Ты вроде бы работаешь каждый день, а экономишь на насущном.

Почему бы Nvidia не дать возможность пользователю самому выбирать стратегию энергосбережения

Это удобно реализовано в драйверах NVIDIA для Windows (чтобы хомячки осилили),

через nvidia-settings, а не ломать голову с какими-то опциями.

А линуксоидам дали гуевый конфигуратор и «какие-то» опции. Если ты их не осилил, значит ты не мужик линуксоид, пересаживайся на Windows, где тебе не придется «ломать голову».

RedEyedMan4 ★★★★★ ()
Последнее исправление: RedEyedMan4 (всего исправлений: 1)
Ответ на: комментарий от RedEyedMan4

А линуксоидам дали гуевый конфигуратор и «какие-то» опции. Если ты их не осилил, значит ты не мужик линуксоид, пересаживайся на Windows, где тебе не придется «ломать голову».

Эм… как раз я и осилил, при этом информацию собирал непонятно где. Даже на их официальном форуме есть несколько тем с моей проблемой без ответа.

Вообще, мне странно видеть подобную позицию. Не будь терпилой. Тебе, я думаю, как и мне, это устройство от Nvidia не бесплатно досталось и ожидать какого-то качество, а когда его не получаешь хотя бы возмущаться, вполне нормально.

sMax ()
Ответ на: комментарий от sMax

Не будь терпилой. Тебе, я думаю, как и мне, это устройство от Nvidia не бесплатно досталось и ожидать какого-то качество, а когда его не получаешь хотя бы возмущаться, вполне нормально.

Эм. Чувак. Зачем мне что-то менять в настройках электропитания видеокарты в моем ПК? Во-первых, она изначально не топовая игровая, потребляет жалкие 90 ватт вместо 190 на производительных моделях. Во-вторых, меня устраивают дефолтные настройки. Автоматический режим уровней даже не отражается на производительности в играх и 3D. Алсо, у меня не референс, а вариант ASUS Strix 1050Ti OC и качество нормальное, не шумит не перегревается. А уж этот вендор-картоклепатель к nvidia-settings отношения не имеет. Нормальная карта за 200 баксов. Купил тогда, когда амудеподелки на полярисе и не думали дешеветь ниже $300-400.

RedEyedMan4 ★★★★★ ()
Последнее исправление: RedEyedMan4 (всего исправлений: 3)
Ответ на: комментарий от sMax

Может пойти другим путём — найти и убить того, кто без спросу насилует мою видеокарту? Т.е. зачем KDE, когда не запущено ни одного приложения и я не произвожу никаких действий, разгоняет видеокарту? Performance Level из nvidia-settings постоянно прыгает от 0 до 3.

Какой же ты дотошный. Каждый ватт считаешь :) Может это не KDE дергает ее, а, например, браузер. Попробуй выключить композитинг и эффекты, закрыть браузер или перейти на WM в конце концов.

В режиме браузинга или просмотра фильмов меня как-то не колышет что там дергает мою карту (если только это что-то не урежет ее производительность).

RedEyedMan4 ★★★★★ ()
Последнее исправление: RedEyedMan4 (всего исправлений: 1)
Ответ на: комментарий от RedEyedMan4

Зачем мне что-то менять…

Так я про тебя ничего и не писа́л. Я лишь писа́л, что это мне надо, а ты меня убеждал, что ты лучше знаешь, что мне надо.

Я тебе уже сказал, нет смысла энергосберегать на 1080Ti, эта карта создавалась не для этого. Можешь даунвольтить или забить.

Может быть «даунвольтить» решило бы мою проблему. Но, мне видится это бо́льшими костылями, чем добавить опцию энергосбережения от самой Nvidia, которая, внимание, полностью решает мою проблему. А проблема была больше не в экономии электроэнергии, а в том, чтобы выключить печку дующую мне на ноги (хотя зимой это сошло бы за фичу).

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

Я же писа́л, ок, повторю: Я закрыл всё, что только можно было. Осталось только 4 процесса, которые использовали ГП, если судить по nvidia-smi:

/usr/lib/xorg/Xorg
/usr/bin/kwin_x11
/usr/bin/krunner
/usr/bin/plasmashell 

Не трогал мышь и клаву, общая нагрузка на ГП была 0% (изредка и не на долго поднималась до 1-5%), при этом драйвер каждые секунд 5-10 (навскидку, не замерял) переключал уровни производительности, как мне кажется, рендомно, увеличивая тем самым потребляемую мощность в 3 раза. И да, я считаю, что это бага, за которую ответственна Nvidia так или иначе. Кстати, в Windows такой проблемы нет — это опять же говорит о том, что проблема в драйвере. Ну хоть костыли дали в виде этой опции с энергосбережением.

sMax ()
Ответ на: комментарий от sMax

Все же прибей процесс plasmashell и замерь.

Может быть «даунвольтить» решило бы мою проблему. Но, мне видится это бо́льшими костылями,

Насколько я помню можно разблокировать возможность снизить или наоборот повысить частоты добавлением

Section "Device"
***
   Option "Coolbits" "4"
***
EndSection

Подробнее тут и тут с картинками

И нагуглено на реддите:

# Enabling persistence mode makes sure that the driver doesn't get unloaded.
sudo nvidia-smi -pm ENABLED

# Adjust the power limit. In Afterburner you set a % but here you must specify value. You can get
# base power limit through nvidia-smi
# In my case, the value for GPU0 is 151W, so 70% power limit is 151*0.70~106
# You specify the card through the parameter -i, so GPU is -i 0
sudo nvidia-smi -i 0 -pl 106
sudo nvidia-smi -i 1 -pl 106

edit /etc/rc.local to include before exit 0
RedEyedMan4 ★★★★★ ()
Последнее исправление: RedEyedMan4 (всего исправлений: 3)