Re: Increase Default vm_max_map_count to Improve Compatibility with Modern Games

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Adding Pierre-Loup to cc list.


* David Hildenbrand <david@xxxxxxxxxx> [691231 23:00]:
> On 02.04.24 09:34, Oleksandr Natalenko wrote:
> > Hello.
> > 
> > On středa 20. března 2024 22:05:34, CEST vincentdelor@xxxxxxx wrote:
> > > Hello,
> > > 
> > > I am writing to highlight an issue impacting many Linux users, especially those who enjoy modern gaming. The current default setting of `vm_max_map_count` at 65530 has been linked to crashes or launch failures in several contemporary games.
> > > 
> > > To address this, I have opened a detailed bug report (218616 – Increase Default vm_max_map_count to Improve Gaming Experience on Linux) available at: 218616 – Increase Default vm_max_map_count to Improve Gaming Experience on Linux (kernel.org) .
> > > 

This is change is getting more traction as distributions switch to a
higher number of VMAs.  I feel we need to educate them as to what this
really means and why it is unnecessary and wrong.

> > > 
> > > We have identified that several modern games such as Hogwarts Legacy, Star Citizen, and others experience crashes or fail to start on Linux due to the default `vm_max_map_count` being set to 65530. These issues can be mitigated by increasing the `vm_max_map_count` value to over 1048576, which has been confirmed to resolve the crashes without introducing additional bugs related to map handling.
> > > 
> > > This issue affects a wide range of users and has been noted in distributions like Fedora and Pop!_OS, which have already adjusted this value to accommodate modern gaming requirements.
> > > 
> > > For reference, here is the change for Fedora:
> > > https://fedoraproject.org/wiki/Changes/IncreaseVmMaxMapCount
> > > 
> > > Here is a list of games affected by this low value in vm_max_map_count as reported to Valve:
> > > 
> > > THE FINALS
> > > https://github.com/ValveSoftware/Proton/issues/7317#issuecomment-1974837850
> > > 
> > > Hogwarts Legacy
> > > https://github.com/ValveSoftware/Proton/issues/6510#issuecomment-1422781100
> > > 
> > > DayZ
> > > https://github.com/ValveSoftware/Proton/issues/3899#issuecomment-1304397069
> > > 
> > > Counter-Strike 2
> > > https://github.com/ValveSoftware/Proton/issues/2704#issuecomment-1705199788
> > > 
> > > 

Most of these do not have the vma information available anymore, if it
was there (expired pastebin links, etc).

...

> > > 
> > > **Affected Games:**
> > > - Hogwarts Legacy
> > > - Star Citizen
> > > - THE FINALS
> > > - DayZ
> > > - Counter-Strike 2
> > > - Payday 2
> > > - (and potentially others)
> > > 
> > > **References:**
> > > - Fedora's change documentation: https://fedoraproject.org/wiki/Changes/IncreaseVmMaxMapCount
> > > - Various user reports and confirmations on gaming performance improvement with increased `vm_max_map_count`.

Absolutely not.  This will do nothing for performance.  The game may run
vs not run, but it won't get faster.

...

> 
> Using a high VMA count usually implies that the application is doing
> something suboptimal. Having many VMAs can degrade performance of MM
> operations and result in memory waste.
> 
> Running into VMA limits usually implies that the application is not
> optimized and should handle things differently. Likely, the memory allocator
> is doing something "bad" (e.g., mmap()+munmap() instead of MADV_DONTNEED)
> and should be optimized.
> 

To be clear, what you are doing here is akin to adding more memory to
your system when there is a memory leak.  This is not the solution you
should be pushing.  Ironically, this is using more memory and performing
worse than it should.  At best, the limit increase is a workaround for
buggy programs.

At worst, you are enabling bad things to keep happening and normalising
poor programming choices.  Please put pressure on the applications that
clearly have issues.

To put this into perspective, normal applications on Linux use in the
100s.  Insane applications (chromium) use 1000 to 2000. The heavier user
is Android and that uses in the 1000s regularly (usually topping out at
around 3000). You are allowing one process to use over 65,530 vmas.

Again, this is per process.

Currently, if you run Wolfenstein II: The New Colossus (proton game),
there are 4 proton processes with 115, 104, 99, and 24 vmas.  I wanted a
newer example, but steam (or nvidia) is having A Day on my gaming PC and
won't start.

You are enabling (and normalising across multiple popular distributions)
a change from less than 120 to 1048576.  That is an increas of ~870x
of virtual memory areas - not tiny chunks of memory, areas that can span
large amounts of memory.  Assuming the *best* scenario in the buggy
programs, you'd use 65531 vmas - that is still a multiple of 546x the
number used by wolfenstein's largest thread.

> I don't think we should be raising the limit for everybody out there.

If there is an underlying technical reason for needing this number of
vmas, then it isn't provided.  I'm going to guess it's DRM/anti-cheat
that needs fixing.

I'd like the problem to please be fixed and not hide it.  You are at a
performance disadvantage with the current approach - and enabling others
to do the same.

Thank you,
Liam






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux