Re: [PATCH] mm/util.c: Add error logs for commitment overflow

From: pintu
Date: Fri Oct 02 2020 - 12:23:44 EST


On 2020-10-02 17:47, Michal Hocko wrote:

__vm_enough_memory: commitment overflow: ppid:150, pid:164, pages:62451
fork failed[count:0]: Cannot allocate memory

While I understand that fork failing due to overrcomit heuristic is non
intuitive and I have seen people scratching heads due to this in the
past I am not convinced this is a right approach to tackle the problem.

Dear Michal,
First, thank you so much for your review and comments.
I totally agree with you.

First off, referencing pids is not really going to help much if process
is short lived.

Yes, I agree with you.
But I think this is most important mainly for short lived processes itself.
Because, when this situation occurs, no one knows who could be the culprit.
However, user keeps dumping "ps" or "top" in background to reproduce once again.
At this time, we can easily match the pid, process-name (at least in most cases).

Secondly, __vm_enough_memory is about any address space
allocation. Why would you be interested in parent when doing mmap?


Yes agree, we can remove ppid from here.
I thought it might be useful at least in case of fork (or short lived process).

Last but not least _once is questionable as well. The first instance
might happen early during the system lifetime and you will not learn
about future failures so the overall point of debuggability is seriously
inhibited.

Maybe what you want is to report higher up the call chain (fork?) and
have it ratelimited rather than _once? Or maybe just try to live with
the confusing situation?


Okay agree. I can change to pr_err_ratelimited.
In-fact, initially I thought to use ratelimited itself but then I thought
just once also should be fine at least.


Thanks,
Pintu