Re: [PATCH] memcg: add interface to force disable swap

From: Huang, Ying
Date: Mon Oct 09 2023 - 02:00:39 EST


Jianlin Lv <iecedge@xxxxxxxxx> writes:

> On Sun, Oct 8, 2023 at 4:26 PM Huang, Ying <ying.huang@xxxxxxxxx> wrote:
>>
>> Jianlin Lv <iecedge@xxxxxxxxx> writes:
>>
>> > On Sun, Oct 8, 2023 at 9:17 AM Huang, Ying <ying.huang@xxxxxxxxx> wrote:
>> >>
>> >> Jianlin Lv <iecedge@xxxxxxxxx> writes:
>> >>
>> >> > From: Jianlin Lv <iecedge@xxxxxxxxx>
>> >> >
>> >> > Global reclaim will swap even if swappiness is set to 0.
>> >>
>> >> Why? Can you elaborate the situation?
>> >
>> > We reproduced the issue of pages being swapped out even when swappiness is
>> > set to 0 in the production environment through the following test program.
>> > Not sure whether this program can reproduce the issue in any environment.
>> >
>> > From the implementation of the get_scan_count code, it can be seen that,
>> > based on the current runtime situation, memory reclamation will choose a
>> > scanning method (SCAN_ANON/SCAN_FILE/SCAN_FRACT) to determine how
>> > aggressively the anon and file LRU are scanned. However, this introduces
>> > uncertainty.
>> >
>> > For the JVM issue at hand, we expect deterministic SCAN_FILE scan to avoid
>> > swapping out anon pages.
>>
>> Why doesn't memory.swap.max work?
>
> The main reason is that deployed nodes are kept on cgroups v1.

Check the code again. IIUC, for swappiness == 0, anonymous pages will
only be reclaimed if sc->file_is_tiny is true. If we don't swap in that
situation, OOM may be triggerred. I don't think that it's a good idea
to do that. Or I miss something?

--
Best Regards,
Huang, Ying