All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Michal Hocko <mhocko@kernel.org>
Cc: Chris Down <chris@chrisdown.name>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tejun Heo <tj@kernel.org>,
	linux-mm@kvack.org, cgroups@vger.kernel.org,
	linux-kernel@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH] mm, memcg: reclaim more aggressively before high allocator throttling
Date: Thu, 21 May 2020 10:22:31 -0400	[thread overview]
Message-ID: <20200521142231.GA812233@cmpxchg.org> (raw)
In-Reply-To: <20200521135152.GA810429@cmpxchg.org>

On Thu, May 21, 2020 at 09:51:55AM -0400, Johannes Weiner wrote:
> On Thu, May 21, 2020 at 09:32:45AM +0200, Michal Hocko wrote:
> > I wouldn't mind to loop over try_to_free_pages to meet the requested
> > memcg_nr_pages_over_high target.
> 
> Should we do the same for global reclaim? Move reclaim to userspace
> resume where there are no GFP_FS, GFP_NOWAIT etc. restrictions and
> then have everybody just reclaim exactly what they asked for, and punt
> interrupts / kthread allocations to a worker/kswapd?

Oof, typo: I meant limit reclaim by memory.max and
memory.limit_in_bytes. Not physical memory reclaim of course.

> > > > > > Also if the current high reclaim scaling is insufficient then we should
> > > > > > be handling that via memcg_nr_pages_over_high rather than effectivelly
> > > > > > unbound number of reclaim retries.
> > > > > 
> > > > > ???
> > > > 
> > > > I am not sure what you are asking here.
> > > 
> > > You expressed that some alternate solution B would be preferable,
> > > without any detail on why you think that is the case.
> > > 
> > > And it's certainly not obvious or self-explanatory - in particular
> > > because Chris's proposal *is* obvious and self-explanatory, given how
> > > everybody else is already doing loops around page reclaim.
> > 
> > Sorry, I could have been less cryptic. I hope the above and my response
> > to Chris goes into more details why I do not like this proposal and what
> > is the alternative. But let me summarize. I propose to use memcg_nr_pages_over_high
> > target. If the current calculation of the target is unsufficient - e.g.
> > in situations where the high limit excess is very large then this should
> > be reflected in memcg_nr_pages_over_high.
> > 
> > Is it more clear?
> 
> Well you haven't made a good argument why memory.high is actually
> different than any other form of reclaim, and why it should be the
> only implementation of page reclaim that has special-cased handling
> for the inherent "unfairness" or rather raciness of that operation.
> 
> You cut these lines from the quote:
> 
>   Under pressure, page reclaim can struggle to satisfy the reclaim
>   goal and may return with less pages reclaimed than asked to.
> 
>   Under concurrency, a parallel allocation can invalidate the reclaim
>   progress made by a thread.
> 
> Even if we *could* invest more into trying to avoid any unfairness,
> you haven't made a point why we actually should do that here
> specifically, yet not everywhere else.
> 
> (And people have tried to do it for global reclaim[1], but clearly
> this isn't a meaningful problem in practice.)
> 
> I have a good reason why we shouldn't: because it's special casing
> memory.high from other forms of reclaim, and that is a maintainability
> problem. We've recently been discussing ways to make the memory.high
> implementation stand out less, not make it stand out even more. There
> is no solid reason it should be different from memory.max reclaim,
> except that it should sleep instead of invoke OOM at the end. It's
> already a mess we're trying to get on top of and straighten out, and
> you're proposing to add more kinks that will make this work harder.
> 
> I have to admit, I'm baffled by this conversation. I consider this a
> fairly obvious, idiomatic change, and I cannot relate to the
> objections or counter-proposals in the slightest.
> 
> [1] http://lkml.iu.edu/hypermail//linux/kernel/0810.0/0169.html

  reply	other threads:[~2020-05-21 14:22 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-20 14:37 [PATCH] mm, memcg: reclaim more aggressively before high allocator throttling Chris Down
2020-05-20 14:37 ` Chris Down
     [not found] ` <20200520143712.GA749486-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-20 16:07   ` Michal Hocko
2020-05-20 16:07     ` Michal Hocko
2020-05-20 16:51     ` Johannes Weiner
2020-05-20 17:04       ` Michal Hocko
2020-05-20 17:51         ` Johannes Weiner
     [not found]           ` <20200520175135.GA793901-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-21  7:32             ` Michal Hocko
2020-05-21  7:32               ` Michal Hocko
     [not found]               ` <20200521073245.GI6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-21 13:51                 ` Johannes Weiner
2020-05-21 13:51                   ` Johannes Weiner
2020-05-21 14:22                   ` Johannes Weiner [this message]
     [not found]                   ` <20200521135152.GA810429-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-21 14:35                     ` Michal Hocko
2020-05-21 14:35                       ` Michal Hocko
     [not found]                       ` <20200521143515.GU6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-21 15:02                         ` Chris Down
2020-05-21 15:02                           ` Chris Down
2020-05-21 16:38                         ` Johannes Weiner
2020-05-21 16:38                           ` Johannes Weiner
     [not found]                           ` <20200521163833.GA813446-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-21 17:37                             ` Michal Hocko
2020-05-21 17:37                               ` Michal Hocko
     [not found]                               ` <20200521173701.GX6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-21 18:45                                 ` Johannes Weiner
2020-05-21 18:45                                   ` Johannes Weiner
     [not found]                                   ` <20200521184505.GA815980-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-28 16:31                                     ` Michal Hocko
2020-05-28 16:31                                       ` Michal Hocko
     [not found]                                       ` <20200528163101.GJ27484-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-28 16:48                                         ` Chris Down
2020-05-28 16:48                                           ` Chris Down
     [not found]                                           ` <20200528164848.GB839178-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-29  7:31                                             ` Michal Hocko
2020-05-29  7:31                                               ` Michal Hocko
2020-05-29 10:08                                               ` Chris Down
     [not found]                                                 ` <20200529100858.GA98458-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-29 10:14                                                   ` Michal Hocko
2020-05-29 10:14                                                     ` Michal Hocko
2020-05-28 20:11                                         ` Johannes Weiner
2020-05-28 20:11                                           ` Johannes Weiner
     [not found]     ` <20200520160756.GE6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-20 20:26       ` Chris Down
2020-05-20 20:26         ` Chris Down
     [not found]         ` <20200520202650.GB558281-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21  7:19           ` Michal Hocko
2020-05-21  7:19             ` Michal Hocko
2020-05-21 11:27             ` Chris Down
     [not found]               ` <20200521112711.GA990580-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21 12:04                 ` Michal Hocko
2020-05-21 12:04                   ` Michal Hocko
     [not found]                   ` <20200521120455.GM6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-21 12:23                     ` Chris Down
2020-05-21 12:23                       ` Chris Down
     [not found]                       ` <20200521122327.GB990580-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21 12:24                         ` Chris Down
2020-05-21 12:24                           ` Chris Down
2020-05-21 12:37                       ` Michal Hocko
2020-05-21 12:57                         ` Chris Down
     [not found]                           ` <20200521125759.GD990580-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21 13:05                             ` Chris Down
2020-05-21 13:05                               ` Chris Down
     [not found]                               ` <20200521130530.GE990580-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21 13:28                                 ` Michal Hocko
2020-05-21 13:28                                   ` Michal Hocko
2020-05-21 13:21                             ` Michal Hocko
2020-05-21 13:21                               ` Michal Hocko
     [not found]                               ` <20200521132120.GR6462-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-05-21 13:41                                 ` Chris Down
2020-05-21 13:41                                   ` Chris Down
     [not found]                                   ` <20200521133324.GF990580-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-21 13:58                                     ` Michal Hocko
2020-05-21 13:58                                       ` Michal Hocko
2020-05-21 14:22                                       ` Chris Down
2020-05-21 12:28                 ` Michal Hocko
2020-05-21 12:28                   ` Michal Hocko
2020-05-28 18:02 ` Shakeel Butt
     [not found]   ` <CALvZod7rSeAKXKq_V0SggZWn4aL8pYWJiej4NdRd8MmuwUzPEw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-05-28 19:48     ` Chris Down
2020-05-28 19:48       ` Chris Down
     [not found]       ` <20200528194831.GA2017-6Bi1550iOqEnzZ6mRAm98g@public.gmane.org>
2020-05-28 20:29         ` Johannes Weiner
2020-05-28 20:29           ` Johannes Weiner
     [not found]           ` <20200528202944.GA76514-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2020-05-28 21:02             ` Shakeel Butt
2020-05-28 21:02               ` Shakeel Butt
2020-05-28 21:14             ` Chris Down
2020-05-28 21:14               ` Chris Down
2020-05-29  7:25             ` Michal Hocko
2020-05-29  7:25               ` Michal Hocko

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=20200521142231.GA812233@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=chris@chrisdown.name \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=tj@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.