On Fri, Apr 8, 2022 at 7:55 AM Dan Schatzberg schatzberg.dan@gmail.com wrote:
On Fri, Apr 08, 2022 at 04:11:05PM +0200, Michal Hocko wrote:
Regarding "max" as a possible input. I am not really sure to be honest. I can imagine that it could be legit to simply reclaim all the charges (e.g. before removing the memcg) which should be achieveable by reclaiming the reported consumption. Or what exactly should be the semantic?
Yeah, it just allows you to avoid reading memory.current to just reclaim everything if you can specify "max" - you're still protected by nretries to eventually bail out. Mostly, though I just feel like supporting "max" makes memory.reclaim semetric with a lot of the cgroup memory control files which tend to support "max".
One possible approach here is to have force_empty behavior when we write "max" to memory.reclaim. From Google's perspective we don't have a preference, but it seems to me like logical behavior. We can do this either by directly calling mem_cgroup_force_empty() or just draining stock and lrus in memory_reclaim().
This actually brings up another interesting point. Do you think we should drain lrus if try_to_free_mem_cgroup_pages() fails to reclaim the request amount? We can do this after the first call or before the last one. It could introduce more evictable pages for try_to_free_mem_cgroup_pages() to free.