[BUG] page allocation failure reading procfs ipv6 configuration files with cgroups

3 messages, 2 authors, 2021-02-22 · open the first message on its own page

[BUG] page allocation failure reading procfs ipv6 configuration files with cgroups

From: Peter Geis <hidden>
Date: 2021-02-20 17:30:09

Good Afternoon,

I have been tracking down a regular bug that triggers when running OpenWRT in a lxd container.
Every ten minutes I was greeted with the following splat in the kernel log:

[2122311.383389] warn_alloc: 3 callbacks suppressed
[2122311.383403] cat: page allocation failure: order:5, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=lxc.payload.openwrt,mems_allowed=0
[2122311.383439] CPU: 0 PID: 2034240 Comm: cat Tainted: G         C        5.10.2 #80
[2122311.383444] Hardware name: pine64 rockpro64_rk3399/rockpro64_rk3399, BIOS 2020.07-rc2-00124-g515f613253-dirty 05/19/2020
[2122311.383449] Call trace:
[2122311.383464]  dump_backtrace+0x0/0x200
[2122311.383469]  show_stack+0x20/0x68
[2122311.383479]  dump_stack+0xd0/0x12c
[2122311.383488]  warn_alloc+0x100/0x170
[2122311.383494]  __alloc_pages_slowpath.constprop.0+0xb14/0xb38
[2122311.383499]  __alloc_pages_nodemask+0x2b4/0x320
[2122311.383505]  alloc_pages_current+0x90/0x108
[2122311.383511]  kmalloc_order+0x38/0xb0
[2122311.383516]  kmalloc_order_trace+0x34/0x120
[2122311.383524]  __kmalloc+0x29c/0x2f0
[2122311.383531]  proc_sys_call_handler+0xc4/0x250
[2122311.383536]  proc_sys_read+0x1c/0x28
[2122311.383542]  generic_file_splice_read+0xd8/0x190
[2122311.383547]  do_splice_to+0x7c/0xd8
[2122311.383551]  splice_direct_to_actor+0xdc/0x260
[2122311.383556]  do_splice_direct+0x94/0xf8
[2122311.383563]  do_sendfile+0x1a4/0x400
[2122311.383568]  __arm64_sys_sendfile64+0x28c/0x350
[2122311.383576]  el0_svc_common.constprop.0+0x88/0x228
[2122311.383581]  do_el0_svc+0x2c/0x98
[2122311.383588]  el0_svc+0x28/0x68
[2122311.383593]  el0_sync_handler+0xb0/0xb8
[2122311.383598]  el0_sync+0x178/0x180
[2122311.383602] Mem-Info:
[2122311.383618] active_anon:262759 inactive_anon:143768 isolated_anon:0
                   active_file:156164 inactive_file:137753 isolated_file:0
                   unevictable:486 dirty:2 writeback:0
                   slab_reclaimable:30820 slab_unreclaimable:58730
                   mapped:41684 shmem:9443 pagetables:6742 bounce:0
                   free:34573 free_pcp:0 free_cma:194
[2122311.383630] Node 0 active_anon:1051036kB inactive_anon:575072kB active_file:624656kB inactive_file:551012kB unevictable:1944kB isolated(anon):0kB isolated(file):0kB mapped:166736kB dirty:8kB writeback:0kB shmem:37772kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:15024kB all_unreclaimable? no
[2122311.383634] Node 0 DMA free:78096kB min:16520kB low:20648kB high:24776kB reserved_highatomic:0KB active_anon:77640kB inactive_anon:133256kB active_file:189636kB inactive_file:214892kB unevictable:0kB writepending:8kB present:1046528kB managed:980856kB mlocked:0kB pagetables:11656kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[2122311.383647] lowmem_reserve[]: 0 2807 2807 2807 2807
[2122311.383661] Node 0 DMA32 free:60196kB min:49012kB low:61264kB high:73516kB reserved_highatomic:2048KB active_anon:973908kB inactive_anon:441424kB active_file:435020kB inactive_file:336944kB unevictable:1944kB writepending:0kB present:3014656kB managed:2909548kB mlocked:1944kB pagetables:15312kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:776kB
[2122311.383674] lowmem_reserve[]: 0 0 0 0 0
[2122311.383686] Node 0 DMA: 11101*4kB (UME) 2018*8kB (UME) 870*16kB (UME) 164*32kB (UME) 1*64kB (M) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 79780kB
[2122311.383727] Node 0 DMA32: 4154*4kB (UMEHC) 2362*8kB (UMEHC) 960*16kB (UMEH) 270*32kB (UMEHC) 31*64kB (UMEH) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 61496kB
[2122311.383768] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
[2122311.383773] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=32768kB
[2122311.383778] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[2122311.383782] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=64kB
[2122311.383785] 403727 total pagecache pages
[2122311.383798] 102940 pages in swap cache
[2122311.383802] Swap cache stats: add 5089297, delete 4986508, find 5716104/7056293
[2122311.383805] Free swap  = 1700864kB
[2122311.383808] Total swap = 3145720kB
[2122311.383812] 1015296 pages RAM
[2122311.383814] 0 pages HighMem/MovableOnly
[2122311.383817] 42695 pages reserved
[2122311.383820] 8192 pages cma reserved
[2122311.383823] 0 pages hwpoisoned

I traced all occurrences of 'cat' and found it occurs occasionally when the dhcpv6.script attempts to read the hop limit from /proc/sys/net/ipv6/conf/$device/hop_limit
It does not occur every time, but I managed to recreate it in the host as well:
root@rockpro64:/proc/sys/net/ipv6/conf# ll
total 0
dr-xr-xr-x 1 root root 0 Feb 20 17:06 ./
dr-xr-xr-x 1 root root 0 Feb 20 17:03 ../
dr-xr-xr-x 1 root root 0 Feb 20 17:06 all/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 br0/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 br0.2/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 default/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 docker0/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 enp1s0f0/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 eth0/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 hassio/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 lo/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 veth7c4bb33/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 veth94a6886/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 vethab10823/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 vethaba55d8/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 vethbcf740c/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 vethc3d714d2/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 vethdc02ce8/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 virbr0/
dr-xr-xr-x 1 root root 0 Feb 20 17:06 virbr0-nic/
root@rockpro64:/proc/sys/net/ipv6/conf# cat */hop_limit
cat: all/hop_limit: Cannot allocate memory
cat: br0.2/hop_limit: Cannot allocate memory
cat: br0/hop_limit: Cannot allocate memory
cat: default/hop_limit: Cannot allocate memory
64
64
64
64
64
64
64
64
64
64
64
64
64
64

[2121803.239645] cat: page allocation failure: order:6, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=/,mems_allowed=0
[2121803.239679] CPU: 2 PID: 2029652 Comm: cat Tainted: G         C        5.10.2 #80
[2121803.239683] Hardware name: pine64 rockpro64_rk3399/rockpro64_rk3399, BIOS 2020.07-rc2-00124-g515f613253-dirty 05/19/2020
[2121803.239688] Call trace:
[2121803.239700]  dump_backtrace+0x0/0x200
[2121803.239706]  show_stack+0x20/0x68
[2121803.239714]  dump_stack+0xd0/0x12c
[2121803.239721]  warn_alloc+0x100/0x170
[2121803.239727]  __alloc_pages_slowpath.constprop.0+0xb14/0xb38
[2121803.239732]  __alloc_pages_nodemask+0x2b4/0x320
[2121803.239737]  alloc_pages_current+0x90/0x108
[2121803.239744]  kmalloc_order+0x38/0xb0
[2121803.239748]  kmalloc_order_trace+0x34/0x120
[2121803.239755]  __kmalloc+0x29c/0x2f0
[2121803.239762]  proc_sys_call_handler+0xc4/0x250
[2121803.239766]  proc_sys_read+0x1c/0x28
[2121803.239773]  new_sync_read+0xf0/0x190
[2121803.239778]  vfs_read+0x150/0x1e0
[2121803.239783]  ksys_read+0x74/0x108
[2121803.239787]  __arm64_sys_read+0x24/0x30
[2121803.239796]  el0_svc_common.constprop.0+0x88/0x228
[2121803.239801]  do_el0_svc+0x2c/0x98
[2121803.239806]  el0_svc+0x28/0x68
[2121803.239811]  el0_sync_handler+0xb0/0xb8
[2121803.239816]  el0_sync+0x178/0x180
[2121803.239820] Mem-Info:
[2121803.239834] active_anon:258800 inactive_anon:150696 isolated_anon:0
                   active_file:72460 inactive_file:191342 isolated_file:0
                   unevictable:486 dirty:3322 writeback:4
                   slab_reclaimable:31877 slab_unreclaimable:58719
                   mapped:46108 shmem:9445 pagetables:6697 bounce:0
                   free:60679 free_pcp:0 free_cma:1040
[2121803.239844] Node 0 active_anon:1035200kB inactive_anon:602784kB active_file:289840kB inactive_file:765368kB unevictable:1944kB isolated(anon):0kB isolated(file):0kB mapped:184432kB dirty:13288kB writeback:16kB shmem:37780kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:14944kB all_unreclaimable? no
[2121803.239848] Node 0 DMA free:171552kB min:16520kB low:20648kB high:24776kB reserved_highatomic:0KB active_anon:64636kB inactive_anon:145048kB active_file:108092kB inactive_file:202096kB unevictable:0kB writepending:12196kB present:1046528kB managed:980856kB mlocked:0kB pagetables:11384kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[2121803.239861] lowmem_reserve[]: 0 2807 2807 2807 2807
[2121803.239874] Node 0 DMA32 free:71164kB min:49012kB low:61264kB high:73516kB reserved_highatomic:2048KB active_anon:970820kB inactive_anon:457440kB active_file:181748kB inactive_file:564228kB unevictable:1944kB writepending:1036kB present:3014656kB managed:2909548kB mlocked:1944kB pagetables:15404kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:4160kB
[2121803.239886] lowmem_reserve[]: 0 0 0 0 0
[2121803.239898] Node 0 DMA: 9581*4kB (UME) 8921*8kB (UME) 2756*16kB (UME) 374*32kB (UME) 107*64kB (UM) 1*128kB (M) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 172732kB
[2121803.239940] Node 0 DMA32: 2838*4kB (UMEHC) 2719*8kB (UMEHC) 1386*16kB (UMEHC) 419*32kB (UMEHC) 42*64kB (UMEH) 6*128kB (UM) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 72144kB
[2121803.239984] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
[2121803.239988] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=32768kB
[2121803.239993] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[2121803.239998] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=64kB
[2121803.240000] 373270 total pagecache pages
[2121803.240011] 104518 pages in swap cache
[2121803.240015] Swap cache stats: add 5085793, delete 4981426, find 5714036/7053753
[2121803.240018] Free swap  = 1705192kB
[2121803.240021] Total swap = 3145720kB
[2121803.240024] 1015296 pages RAM
[2121803.240027] 0 pages HighMem/MovableOnly
[2121803.240030] 42695 pages reserved
[2121803.240032] 8192 pages cma reserved
[2121803.240035] 0 pages hwpoisoned

Thank you for your time.
Very Respectfully,
Peter Geis

Re: [BUG] page allocation failure reading procfs ipv6 configuration files with cgroups

From: Matthew Wilcox <willy@infradead.org>
Date: 2021-02-20 17:39:00

On Sat, Feb 20, 2021 at 12:29:18PM -0500, Peter Geis wrote:
Good Afternoon,

I have been tracking down a regular bug that triggers when running OpenWRT in a lxd container.
Every ten minutes I was greeted with the following splat in the kernel log:

[2122311.383389] warn_alloc: 3 callbacks suppressed
[2122311.383403] cat: page allocation failure: order:5, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=lxc.payload.openwrt,mems_allowed=0
You want this patch:

https://lore.kernel.org/linux-fsdevel/6345270a2c1160b89dd5e6715461f388176899d1.1612972413.git.josef@toxicpanda.com/

Re: [BUG] page allocation failure reading procfs ipv6 configuration files with cgroups

From: Peter Geis <hidden>
Date: 2021-02-22 23:41:11

On Sat, Feb 20, 2021 at 12:36 PM Matthew Wilcox [off-list ref] wrote:
On Sat, Feb 20, 2021 at 12:29:18PM -0500, Peter Geis wrote:
quoted
Good Afternoon,

I have been tracking down a regular bug that triggers when running OpenWRT in a lxd container.
Every ten minutes I was greeted with the following splat in the kernel log:

[2122311.383389] warn_alloc: 3 callbacks suppressed
[2122311.383403] cat: page allocation failure: order:5, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=lxc.payload.openwrt,mems_allowed=0
You want this patch:

https://lore.kernel.org/linux-fsdevel/6345270a2c1160b89dd5e6715461f388176899d1.1612972413.git.josef-DigfWCa+lFGyeJad7bwFQA@public.gmane.org/
I've tested this patch against 5.10.17 for 36 hours and can confirm it
solves the problem.
Thank you.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help