Linux Test Project
 help / color / mirror / Atom feed
From: Andrea Cervesato via ltp <ltp@lists.linux.it>
To: "Wei Gao" <wegao@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v1] mmapstress06: Rate limit page-dirtying loop to prevent MemCG OOM-kills
Date: Tue, 25 Aug 2026 12:16:08 +0000	[thread overview]
Message-ID: <6a8d8789.e23a4405.3c1b2a.58c7@mx.google.com> (raw)
In-Reply-To: <20260825022926.9649-1-wegao@suse.com>

Hi Wei,

> Reduce the throttling interval from 2 MB to 64 KB (usleep for 200us
> every 64 KB) in the page-dirtying loop. This smooths out allocation
> spikes and gives asynchronous swap writeback time to catch up under
> slower VM storage environments, avoiding unexpected MemCG OOM-kills.

Unfortunately this is not a solution but a workaround, we need to make
sure that we are able to see any change to the swap memory while
allocating dirty pages close to the memory.max. This is probably a
fix for a specific target rather than complete fix.

We need to find an another way to ensure that OOM killer won't kick in.
That is caused by the time between releasing swap and storing swapped
data inside the hard disk. If that is not gonna happen for a certain
amount of times, the OOM killer kicks. By reducing the throttling
interval, we simply pause more time over 256MB of memory, but an even
slower machine won't fit into these intervals of 64KB.

There's not a "clean" solution, but we can use the v2 cgroup support
for `memory.reclaim` and request enough data while we are swapping it.

On v1 we can either disable the cgroup OOM killer via memory.oom_control
so the child blocks instead of being killed, or keep the loop unthrottled
(the kernel already blocks faults in direct reclaim at memory.max) and
report an OOM kill as TBROK via the child's exit status.

Regards,
--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  parent reply	other threads:[~2026-08-25 12:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-25  2:13 [LTP] [PATCH v1] mmapstress06: Rate limit page-dirtying loop to prevent MemCG OOM-kills Wei Gao via ltp
2026-08-25  3:00 ` [LTP] " linuxtestproject.agent
2026-08-25 12:16 ` Andrea Cervesato via ltp [this message]
2026-08-26  7:13   ` [LTP] [PATCH v1] " Wei Gao via ltp
2026-08-26  7:58     ` Andrea Cervesato via ltp
2026-08-26  9:31       ` Wei Gao via ltp
2026-08-26  9:49         ` Andrea Cervesato via ltp
2026-08-26 13:38           ` Wei Gao via ltp
2026-08-27  8:06             ` Andrea Cervesato via ltp
2026-08-27 14:21               ` Cyril Hrubis
2026-09-01  2:04                 ` Wei Gao via ltp
2026-09-01  7:38                   ` Andrea Cervesato via ltp
2026-09-01  8:22                     ` Wei Gao via ltp
2026-09-01  8:47                   ` Cyril Hrubis
2026-09-02  2:57 ` [LTP] [PATCH v2] mmapstress06: Use memory.high in cgroup v2 to start swapping early Wei Gao via ltp
2026-09-02  8:28   ` [LTP] " linuxtestproject.agent
2026-09-04  8:53   ` [LTP] [PATCH v2] " Andrea Cervesato via ltp
2026-09-04 10:23   ` Cyril Hrubis
2026-09-04 10:43   ` Andrea Cervesato via ltp

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=6a8d8789.e23a4405.3c1b2a.58c7@mx.google.com \
    --to=ltp@lists.linux.it \
    --cc=andrea.cervesato@suse.com \
    --cc=wegao@suse.com \
    /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