On Thu 07-12-17 17:23:05, Suren Baghdasaryan wrote: > Slab shrinkers can be quite time consuming and when signal > is pending they can delay handling of the signal. If fatal > signal is pending there is no point in shrinking that process > since it will be killed anyway. The thing is that we are _not_ shrinking _that_ process. We are shrinking globally shared objects and the fact that the memory pressure is so large that the kswapd doesn't keep pace with it means that we have to throttle all allocation sites by doing this direct reclaim. I agree that expediting killed task is a good thing in general because such a process should free at least some memory. > This change checks for pending > fatal signals inside shrink_slab loop and if one is detected > terminates this loop early. This changelog doesn't really address my previous review feedback, I am afraid. You should mention more details about problems you are seeing and what causes them. If we have a shrinker which takes considerable amount of time them we should be addressing that. If that is not possible then it should be documented at least. The changelog also should describe how does this play along with the rest of the allocation path. The patch is not mergeable in this form I am afraid. > Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx> > > --- > V2: > Sergey Senozhatsky: > - Fix missing parentheses > --- > mm/vmscan.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index c02c850ea349..28e4bdc72c16 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -486,6 +486,13 @@ static unsigned long shrink_slab(gfp_t gfp_mask, int nid, > .memcg = memcg, > }; > > + /* > + * We are about to die and free our memory. > + * Stop shrinking which might delay signal handling. > + */ > + if (unlikely(fatal_signal_pending(current))) > + break; > + > /* > * If kernel memory accounting is disabled, we ignore > * SHRINKER_MEMCG_AWARE flag and call all shrinkers > -- > 2.15.1.424.g9478a66081-goog > -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>