Re: [PATCH] mm: add config option to select the initial overcommit mode

From: Austin S. Hemmelgarn
Date: Fri May 13 2016 - 09:27:25 EST


On 2016-05-13 06:18, Mason wrote:
On 13/05/2016 11:52, Michal Hocko wrote:
On Fri 13-05-16 10:44:30, Mason wrote:
On 13/05/2016 10:04, Michal Hocko wrote:

On Tue 10-05-16 13:56:30, Sebastian Frias wrote:
[...]
NOTE: I understand that the overcommit mode can be changed dynamically thru
sysctl, but on embedded systems, where we know in advance that overcommit
will be disabled, there's no reason to postpone such setting.

To be honest I am not particularly happy about yet another config
option. At least not without a strong reason (the one above doesn't
sound that way). The config space is really large already.
So why a later initialization matters at all? Early userspace shouldn't
consume too much address space to blow up later, no?

One thing I'm not quite clear on is: why was the default set
to over-commit on?

Because many applications simply rely on large and sparsely used address
space, I guess.

What kind of applications are we talking about here?

Server apps? Client apps? Supercomputer apps?

I heard some HPC software use large sparse matrices, but is it a common
idiom to request large allocations, only to use a fraction of it?
Just looking at my laptop right now, I count the number of processes which have a RSS which is more than 25% of their allocated memory to be about 15-20 out of ~170 processes and ~360 threads. Somewhat unsurprisingly, most of the ones that fit this are highly purpose specific (cachefilesd, syslogd, etc), and the only ones whose RSS is within 1% of their allocated memory are BOINC applications (distributed and/or scientific computing apps tend to be really good about efficient usage of memory, even when they use sparse matrices). There are in fact a lot of 'normal' daemons that do this (sshd on my system for example has 460k resident and 28.5M allocated, atd has 122k resident and 12.6M allocated, acpid has 120k resident and 4.2M allocated).