Re: [PATCH] mm,page_alloc: Serialize warn_alloc() if schedulable.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat 08-07-17 13:59:54, Tetsuo Handa wrote:
[...]
> Quoting from http://lkml.kernel.org/r/20170705081956.GA14538@xxxxxxxxxxxxxx :
> Michal Hocko wrote:
> > On Sat 01-07-17 20:43:56, Tetsuo Handa wrote:
> > > You are rejecting serialization under OOM without giving a chance to test
> > > side effects of serialization under OOM at linux-next.git. I call such attitude
> > > "speculation" which you never accept.
> > 
> > No I am rejecting abusing the lock for purpose it is not aimed for.
> 
> Then, why adding a new lock (not oom_lock but warn_alloc_lock) is not acceptable?
> Since warn_alloc_lock is aimed for avoiding messages by warn_alloc() getting
> jumbled, there should be no reason you reject this lock.
> 
> If you don't like locks, can you instead accept below one?

No, seriously! Just think about what you are proposing. You are stalling
and now you will stall _random_ tasks even more. Some of them for
unbound amount of time because of inherent unfairness of cmpxchg.

If there is a _real_ problem it should be debugged and fixed. If this
is a limitation of what printk can handle then we should think how to
throttle it even more (e.g. does it make much sense to dump_stack when
it hasn't changed since the last time?). If this is about dump_stack
taking too long then we should look into it but we definitely should add
a more on top.

> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 80e4adb..3ac382c 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -3900,9 +3900,14 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
>  
>  	/* Make sure we know about allocations which stall for too long */
>  	if (time_after(jiffies, alloc_start + stall_timeout)) {
> +		static bool wait;
> +
> +		while (cmpxchg(&wait, false, true))
> +			schedule_timeout_uninterruptible(1);
>  		warn_alloc(gfp_mask & ~__GFP_NOWARN, ac->nodemask,
>  			"page allocation stalls for %ums, order:%u",
>  			jiffies_to_msecs(jiffies-alloc_start), order);
> +		wait = false;
>  		stall_timeout += 10 * HZ;
>  	}
>  

-- 
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>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux