On Mon 11-09-17 02:52:53, Mikulas Patocka wrote: > I am occasionally getting these warnings in khugepaged. It is an old > machine with 550MHz CPU and 512 MB RAM. > > Note that khugepaged has nice value 19, so when the machine is loaded with > some work, khugepaged is stalled and this stall produces warning in the > allocator. > > khugepaged does allocations with __GFP_NOWARN, but the flag __GFP_NOWARN > is masked off when calling warn_alloc. This patch removes the masking of > __GFP_NOWARN, so that the warning is suppressed. > > khugepaged: page allocation stalls for 10273ms, order:10, mode:0x4340ca(__GFP_HIGHMEM|__GFP_IO|__GFP_FS|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_MOVABLE|__GFP_DIRECT_RECLAIM), nodemask=(null) > CPU: 0 PID: 3936 Comm: khugepaged Not tainted 4.12.3 #1 > Hardware name: System Manufacturer Product Name/VA-503A, BIOS 4.51 PG 08/02/00 > Call Trace: > ? warn_alloc+0xb9/0x140 > ? __alloc_pages_nodemask+0x724/0x880 > ? arch_irq_stat_cpu+0x1/0x40 > ? detach_if_pending+0x80/0x80 > ? khugepaged+0x10a/0x1d40 > ? pick_next_task_fair+0xd2/0x180 > ? wait_woken+0x60/0x60 > ? kthread+0xcf/0x100 > ? release_pte_page+0x40/0x40 > ? kthread_create_on_node+0x40/0x40 > ? ret_from_fork+0x19/0x30 > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 63f53dea0c98 ("mm: warn about allocations which stall for too long") This patch hasn't introduced this behavior. It deliberately skipped warning on __GFP_NOWARN. This has been introduced later by 822519634142 ("mm: page_alloc: __GFP_NOWARN shouldn't suppress stall warnings"). I disagreed [1] but overall consensus was that such a warning won't be harmful. Could you be more specific why do you consider it wrong, please? [1] http://lkml.kernel.org/r/20170125184548.GB32041@xxxxxxxxxxxxxx > > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: linux-2.6/mm/page_alloc.c > =================================================================== > --- linux-2.6.orig/mm/page_alloc.c > +++ linux-2.6/mm/page_alloc.c > @@ -3923,7 +3923,7 @@ retry: > > /* Make sure we know about allocations which stall for too long */ > if (time_after(jiffies, alloc_start + stall_timeout)) { > - warn_alloc(gfp_mask & ~__GFP_NOWARN, ac->nodemask, > + warn_alloc(gfp_mask, ac->nodemask, > "page allocation stalls for %ums, order:%u", > jiffies_to_msecs(jiffies-alloc_start), order); > 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>