pop-os / nvidia-graphics-drivers

Pop!_OS NVIDIA Graphics Drivers
134 stars 7 forks source link

Enable nvidia-powerd.service by default #173

Closed mmstick closed 1 year ago

mmstick commented 1 year ago

Enables Dynamic Boost to function in Linux with Intel and AMD CPUs

https://download.nvidia.com/XFree86/Linux-x86_64/510.60.02/README/dynamicboost.html

It's included, but not enabled by default with Ubuntu packaging.

ziprasidone146939277 commented 1 year ago

An expected feature. I have tried to activate or make use of this myself by following the official instructions from NVIDIA, without success. (pop_OS!22.04) Thank You for this!

leviport commented 1 year ago

I don't think I'm getting this to work on oryp9 in hybrid or Nvidia graphics modes:

$ nvidia-settings -q DynamicBoostSupport

  Attribute 'DynamicBoostSupport' (levioryx:1[gpu:0]): 0.
    'DynamicBoostSupport' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false).
    'DynamicBoostSupport' is a read-only attribute.
    'DynamicBoostSupport' can use the following target types: GPU

I tried looking for nvidia-dbus.conf like the linked article mentions, but I'm not seeing a /usr/share/doc/NVIDIA_GLX-1.0/ directory. I also tried starting nvidia-powerd.service, which didn't output anything (usually means it worked, I think) and didn't change the above output.

Also in Software Requirements on that article, point number three sounds like something that might be an issue: "Use the cpufreq infrastructure." I thought that cpufreq and system76-power were mutually exclusive? Perhaps I was mistaken about that though.

mmstick commented 1 year ago

Found it in /usr/share/doc/nvidia-driver-525/nvidia-dbus.conf, but should be installed in the correct path by default.

ziprasidone146939277 commented 1 year ago

There is a file with same name in:

/usr/share/doc/nvidia-driver-525/nvidia-dbus.conf

I don't know if that file is the same as the nvidia's article. Which is what I've used when tried to enable the nvidia-powerd.srevice without success. In other hand: nothing to do with systemd, that file does not seems to be a systemd unit AFAIK. Anyway, I did not research a lot and I don't know how this really works. oryp9 here too.

mmstick commented 1 year ago

It should be fine for nvidia-powerd to tweak those parameters. There is some overlap with system76-power though because it also tweaks the max scaling frequencies when the profile is changed, but only when the user changes the profile.

mmstick commented 1 year ago

Two packages had the same file, and the docs package took precedence. It should be getting placed in /usr/share/dbus-1/system.d/ now.

leviport commented 1 year ago

I have the file now in the expected place, and I enabled the service, but it still appears to not be working:

\ [levi@levioryx:~]$ nvidia-settings -q DynamicBoostSupport

  Attribute 'DynamicBoostSupport' (levioryx:1[gpu:0]): 0.
    'DynamicBoostSupport' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false).
    'DynamicBoostSupport' is a read-only attribute.
    'DynamicBoostSupport' can use the following target types: GPU.

\ [levi@levioryx:~]$ systemctl status nvidia-powerd.service
× nvidia-powerd.service - nvidia-powerd service
     Loaded: loaded (/lib/systemd/system/nvidia-powerd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2022-12-15 18:06:09 MST; 4min 5s ago
    Process: 1139 ExecStart=/usr/bin/nvidia-powerd (code=exited, status=1/FAILURE)
   Main PID: 1139 (code=exited, status=1/FAILURE)
        CPU: 9ms

Dec 15 18:06:08 levioryx systemd[1]: Starting nvidia-powerd service...
Dec 15 18:06:08 levioryx /usr/bin/nvidia-powerd[1139]: nvidia-powerd version:1.0(build 1)
Dec 15 18:06:09 levioryx /usr/bin/nvidia-powerd[1139]: SBIOS support not found for NVPCF GET_SUPPORTED function
Dec 15 18:06:09 levioryx /usr/bin/nvidia-powerd[1139]: No matching GPU found
Dec 15 18:06:09 levioryx /usr/bin/nvidia-powerd[1139]: Failed to initialize RM Client
Dec 15 18:06:09 levioryx systemd[1]: nvidia-powerd.service: Main process exited, code=exited, status=1/FAILURE
Dec 15 18:06:09 levioryx systemd[1]: nvidia-powerd.service: Failed with result 'exit-code'.
Dec 15 18:06:09 levioryx systemd[1]: Failed to start nvidia-powerd service.
\ [levi@levioryx:~]$ nvidia-smi
Thu Dec 15 18:10:26 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.60.11    Driver Version: 525.60.11    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   51C    P8    16W /  N/A |   1464MiB / 16384MiB |     22%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      2747      G   /usr/lib/xorg/Xorg                333MiB |
|    0   N/A  N/A      2885      G   /usr/bin/gnome-shell              320MiB |
|    0   N/A  N/A      3477      G   /usr/lib/firefox/firefox-bin      797MiB |
|    0   N/A  N/A      5349      G   x-terminal-emulator                10MiB |
+-----------------------------------------------------------------------------+
\ [levi@levioryx:~]$ system76-power graphics
nvidia

The oryp9 should support this, if I'm reading the article correctly.

mmstick commented 1 year ago

I wonder what's missing. Will look into it more tomorrow.

mmstick commented 1 year ago

I did read that you need this to be true for dynamic boost to be supported:

$ cat /proc/driver/nvidia/gpus/0000:01:00.0/power
Runtime D3 status:          Enabled (fine-grained)
leviport commented 1 year ago

I think that's good to go:

\ [levi@levioryx:~]$ cat /proc/driver/nvidia/gpus/0000:01:00.0/power
Runtime D3 status:          Enabled (fine-grained)
Video Memory:               Active

GPU Hardware Support:
 Video Memory Self Refresh: Supported
 Video Memory Off:          Supported
jackpot51 commented 1 year ago

For this to work on our open firmware laptops we need to add some ACPI code. I'm working on that now.

jackpot51 commented 1 year ago

@mmstick can you rebase this on #180?

mmstick commented 1 year ago

Yeah

ziprasidone146939277 commented 1 year ago

I can´t remember if this was done by me or some update. The question is if the nvidia-powerd will only work in nvidia mode.

In this moment I am on Hybrid mode, and this is the unit status:

× nvidia-powerd.service - nvidia-powerd service
     × nvidia-powerd.service - nvidia-powerd service
     Loaded: loaded (/lib/systemd/system/nvidia-powerd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-04-13 18:22:47 -03; 2min 38s ago
    Process: 783 ExecStart=/usr/bin/nvidia-powerd (code=exited, status=1/FAILURE)
   Main PID: 783 (code=exited, status=1/FAILURE)
        CPU: 11ms

Apr 13 18:22:31 oryx.wonder.boy systemd[1]: Starting nvidia-powerd service...
Apr 13 18:22:31 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: nvidia-powerd version:1.0(build 1)
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: SBIOS support not found for NVPCF GET_SUPPORTED function
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: No matching GPU found
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: Failed to initialize RM Client
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: nvidia-powerd.service: Main process exited, code=exited, status=1/FAILURE
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: nvidia-powerd.service: Failed with result 'exit-code'.
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: Failed to start nvidia-powerd service.Loaded: loaded (/lib/systemd/system/nvidia-powerd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-04-13 18:22:47 -03; 2min 38s ago
    Process: 783 ExecStart=/usr/bin/nvidia-powerd (code=exited, status=1/FAILURE)
   Main PID: 783 (code=exited, status=1/FAILURE)
        CPU: 11ms

Apr 13 18:22:31 oryx.wonder.boy systemd[1]: Starting nvidia-powerd service...
Apr 13 18:22:31 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: nvidia-powerd version:1.0(build 1)
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: SBIOS support not found for NVPCF GET_SUPPORTED function
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: No matching GPU found
Apr 13 18:22:47 oryx.wonder.boy /usr/bin/nvidia-powerd[783]: Failed to initialize RM Client
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: nvidia-powerd.service: Main process exited, code=exited, status=1/FAILURE
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: nvidia-powerd.service: Failed with result 'exit-code'.
Apr 13 18:22:47 oryx.wonder.boy systemd[1]: Failed to start nvidia-powerd service.
jackpot51 commented 1 year ago

Obsolete, included in #180

jackpot51 commented 1 year ago

A firmware update is also required for dynamic boost. We will be releasing those as they pass QA.