linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Paul Menzel <pmenzel@molgen.mpg.de>
To: David Hildenbrand <david@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, it+linux-mm@molgen.mpg.de
Subject: Re: Cannot allocate memory despite buff/cache non-zero
Date: Thu, 10 Jun 2021 07:58:55 +0200	[thread overview]
Message-ID: <2033f112-6704-100c-1eb9-7e1ad3187cce@molgen.mpg.de> (raw)
In-Reply-To: <d362c7b5-cf77-8731-ba7f-819ca55f6d16@redhat.com>

Dear David,


Thank you for your reply.

Am 09.06.21 um 13:17 schrieb David Hildenbrand:
> On 04.06.21 13:36, Paul Menzel wrote:

>> On a 1 TB RAM compute server with Linux 5.10.24 and memory
>> overcommitting disabled, we ran into a situation where processes like
>> SSH couldn’t allocate memory anymore.
>>
>>       $ more /proc/cmdline
>>       BOOT_IMAGE=/boot/bzImage-5.10.24.mx64.375 root=LABEL=root ro crashkernel=256M console=ttyS0,115200n8 console=tty0 init=/bin/systemd audit=0 random.trust_cpu=on
>>
>>       2021-06-03T22:00:28+02:00 godsavethequeen sshd[89163]: pam_systemd(sshd:session): Failed to create session: Unit session-25654.scope not found.
>>       2021-06-03T22:00:29+02:00 godsavethequeen sshd[89163]: error: do_exec_no_pty: fork: Cannot allocate memory
>>       2021-06-03T22:00:29+02:00 godsavethequeen sshd[89163]: pam_unix(sshd:session): session closed for user root
>>       2021-06-03T22:01:41+02:00 godsavethequeen sshd[1834]: error: fork: Cannot allocate memory
>>       2021-06-03T22:01:41+02:00 godsavethequeen sshd[1834]: error: ssh_msg_send: write: Broken pipe
>>       2021-06-03T22:01:41+02:00 godsavethequeen sshd[1834]: error: send_rexec_state: ssh_msg_send failed
>>
>>       $ free -h
>>                     total        used        free      shared  buff/cache available
>>       Mem:           1.0T        606G        2.6G        2.2M        395G      391G
>>       Swap:            0B          0B          0B
>>
>> Looking at this, I would have expected, that the pages(?) in buff/cache
>> would be moved/deleted to make memory available.
>>
>> Looking at `/proc/meminfo` (attached):
>>
>>       MemTotal:       1052411824 kB
>>       MemFree:         2709976 kB
>>       MemAvailable:   410847908 kB
>>       […]
>>       CommitLimit:    1052411824 kB
>>       Committed_AS:   1052455260 kB
>>       […]
> 
> With memory overcommit disabled, each accountable mapping 
> (mm/mmap.c:accountable_mapping()) will count towards Committed_AS. So 
> you might still have plenty of free memory in the system reserved for 
> these mappings, yet Linux won't allow for more accountable mappings. 
> That's why you see the "Cannot allocate memory" messages. mmap() failed.

     Buffers:            3212 kB
     Cached:         411083788 kB
     SwapCached:            0 kB
     Active:         303175824 kB
     Inactive:       740080100 kB
     Active(anon):       1448 kB
     Inactive(anon): 632169724 kB
     Active(file):   303174376 kB
     Inactive(file): 107910376 kB

The documentation [1] describes *MemAvailable*, *Buffers*, and *Cached*:

> MemAvailable
>               An estimate of how much memory is available for starting new
>               applications, without swapping. Calculated from MemFree,
>               SReclaimable, the size of the file LRU lists, and the low
>               watermarks in each zone.
>               The estimate takes into account that the system needs some
>               page cache to function well, and that not all reclaimable
>               slab will be reclaimable, due to items being in use. The
>               impact of those factors will vary from system to system.
> Buffers
>               Relatively temporary storage for raw disk blocks
>               shouldn't get tremendously large (20MB or so)
> Cached
>               in-memory cache for files read from the disk (the
>               pagecache).  Doesn't include SwapCached

So I would have assumed, the kernel removes files from the in-memory 
cache for files.

>> Committed_AS is greater than the commit limit (total memory).
>>
>> Is such behavior expected?
> 
> We're talking about 43436 kB that exceed the CommitLimit.
> 
> The CommitLimit might change (grow/shrink) when
> a) The number of hugetlb pages changes
> b) Swap space is resized
> 
> If CommitLimit did not change, Committed_AS should actually not exceed 
> it. IIUC, it can only happen temporarily while trying creation of a new 
> mapping. We increase Committed_AS unconditionally and decrease it again 
> if we reject it.

I can’t say for sure, as the system was rebooted, but I thought the 
value stayed the same.


Kind regards,

Paul


[1]: https://www.kernel.org/doc/html/latest/filesystems/proc.html#meminfo


      reply	other threads:[~2021-06-10  5:59 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-04 11:36 Paul Menzel
2021-06-09 11:17 ` David Hildenbrand
2021-06-10  5:58   ` Paul Menzel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2033f112-6704-100c-1eb9-7e1ad3187cce@molgen.mpg.de \
    --to=pmenzel@molgen.mpg.de \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=it+linux-mm@molgen.mpg.de \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox