Support for GPU VRAM Booster coming to Linux drivers?

Putting aside the general VRAM-topics because there’s not a direct relation between this and the following topics:

Additionally, GreenBoost feels like it is trying to fix the problem at the wrong layer, and has been designed for other workloads but games.

There’s new work on using a cgroup controller to manage or prioritize VRAM eviction aka boost memory usage for foreground apps at the cost of evicting VRAM for background processes.

KDE Plasma will probably soon implement it, CachyOS has a first preview implementation.

Demo: https://youtu.be/zdaco79JE0o?si=2agZuHA6rQXvJODk

Blog: Fixing AMDGPU's VRAM management for low-end GPUs | pixelcluster's GPU blog

Again, the forum links above are not relevant for this because implementing dmemcg-booster and plasma-foreground-booster depends on very different kernel infrastructure: cgroups for device memory (dmemcg).

What is NVIDIA’s take on supporting dmemcg? Is driver support being worked on / planned? I’m pretty sure that previously mentioned forum posts need partial fixing first before we can even think of this because without eviction support in the NVIDIA driver at all, no dmemcg would be possible anyways, right? At least, it would be worth considering support for dmemcg while designing the fixes for the general VRAM allocation problems.

It would be really cool if NVIDIA will consider that or come up with their own solution. I’m not asking “when” but “if”. I don’t expect any implementation to appear this year, or even next year, because other driver improvements need to land first.

Also curious if there are plans to implement dmem cgroup support in the GPU driver to help optimize VRAM usage.

It’s quite apparent that NVIDIA has been making investments in Linux gaming support lately, so something like this could be a good fit…

Looks like support was added added in 615.71.09:

  • Added support for cgroups-based memory partitioning.

I wonder if this is enough to support the VRAM management improvements implemented for other vendor GPUs as described in pixelcluster’s GPU blog post.

I gave it a try and, yes, it does something but i’m not sure if it’s correct. It caps the VRAM usage of processes to half of the card’s capacity which is 4.0/8.0GB. This could be an error from the Steam Overlay performance meter, but to me it seems like a bug.

nvidia-smi reports the full 8192MiB, and the game process using 732MiB (Portal 2), but Steam Overlay reports 0.7/4.0GB usage, the cap is gone when the booster is disabled.

I’ll ask to see if someone with an AMD card reports the same, to be 100% sure. Entirely possible this is a case that needs fixing on dmemcg-booster’s side, and not from NV, like getting VRAM capacity in some AMD specific way.

Update: On AMD it seems to show the full capacity. Strange.

Another user, with a 12GB 4070 this time. Also displaying 4GB:

Interesting, maybe try testing with a game that will use over 8 GB VRAM and see what happens? I’m also assuming you’ve already tried this on kernel 7.3.
Maybe try reaching out to the author and see if she has some ideas.

Also, curious what your system reports for these:
/sys/fs/cgroup/dmem.current
/sys/fs/cgroup/dmem.capacity

It looks more like the overlay is showing some sort of dynamic eviction bucket. On my 12 GB card, it also shows 4 GB, so it’s not simply “half the VRAM”. And games usually start with only 0.1 GB used in that bucket until it needs to start streaming textures. nividia-smi confirms that the game is using 5-6 GB after being loaded. So it’s also not just some difference, otherwise it would show 1-2 GB in that case.

I found that, with this feature enabled, games stream textures a little slower but usually can use the GPU better (stays at 100% instead of 98-99%) - not a big difference, and may also just mean that the GPU becomes busy with other stuff like bus transfers.

Concurrency with other processes using VRAM has certainly become better.

Running KDE Plasma here with dmegcg-booster installed and enabled.

dmemcg-booster does not work with the newly added cgroups in 615.71.09 on 4070 mobile, it seems that all services are active but when starting a game it does not use the cgroups to allocate thats why i get 8gb vram and 5.4gb pvram. anyone know how to fix that? i tried everything i know of

To answer your question, I’ll provide some information about NVIDIA’s stance on supporting dmemcg (device memory cgroups) for VRAM management.

While NVIDIA has not explicitly announced plans to support dmemcg, there are some indications that they are aware of the importance of VRAM management and are working on improving their drivers.

In the provided context, there is no direct mention of dmemcg support. However, there are discussions about improving VRAM allocation and eviction management in the NVIDIA drivers. For example, the context mentions that NVIDIA is working on fixing VRAM allocation issues and improving eviction management, but it does not provide a specific timeline or details about dmemcg support.

Given the current state of the NVIDIA drivers and the importance of VRAM management for gaming and other workloads, it is likely that NVIDIA will consider supporting dmemcg or implementing their own solution for VRAM management. However, without an official announcement or confirmation from NVIDIA, it is difficult to provide a definitive answer.

In summary, while there is no concrete evidence of NVIDIA’s plans to support dmemcg, the company is aware of the importance of VRAM management and is working on improving their drivers. It would be beneficial for NVIDIA to consider supporting dmemcg or implementing their own solution for VRAM management, especially given the growing interest in this area from the Linux community.

Thanks for the insight. But in that case, what does the new support added in the release notes for driver 615.71.09 do?

  • Added support for cgroups-based memory partitioning.

https://www.nvidia.com/en-us/drivers/details/278450/

Is the cgroups-based memory partitioning in the release notes for something else?

And @hurikhan77 noticed an improvement in memory management in his testing. I suppose it could be a coincidence but would love it if you or someone from NVIDIA could provide a clarification on the support that was added in the latest release.

You’re replying to either:

A). A ChatGPT bot masquerading as an actual Nvidia employee

or

B). An actual Nvidia employee using ChatGPT to reply on the forums

Either way, the chance of them know appears to be zero. It was pretty clear from the way the response refers to Nvidia in the third person…

yo, do you maybe have an idea what the problem could be with the dmemcg booster not prioritizing the vram the game needs on a mobile gpu, cus i couldnt figure it out

also the fact that the response basically said the same thing 4 times…

we got it after the first

While NVIDIA has not explicitly announced plans to support dmemcg, there are some indications that they are aware of the importance of VRAM management and are working on improving their drivers.

Yeah… constant new bugs, ignoring existing bugs, shadowbanning people from their subreddit, and now replying to posts with ChatGPT.

In the Windows driver, they’ve even introduced a fan control bug that can damage hardware: Overclocking doesn't work on Maxwell GPUs - #18 by BlueGoliath

AI is so amazing.

Yeah, “the context”, we know which context that is. I’ll rather wait for a real answer. Thanks for the effort, tho. Here, take a token.

:D :D :D