Memory 无法获胜的页面

Memory 无法获胜的页面,memory,linux-kernel,kernel,linux-device-driver,Memory,Linux Kernel,Kernel,Linux Device Driver,我得到一个内核崩溃,如下所示。在这里,我可以观察到大内存存在于不可编辑的页面中。 我想知道什么时候内存被添加到不可修改的页面列表中 此外,从下面的消息中,我可以理解系统中只有1724kB可用。 对吗 kswapd0: page allocation failure. order:0, mode:0xd0 [<c002aed4>] (unwind_backtrace+0x0/0xdc) from [<c006d5b0>] (__alloc_pages_nodemask+0x

我得到一个内核崩溃,如下所示。在这里,我可以观察到大内存存在于不可编辑的页面中。 我想知道什么时候内存被添加到不可修改的页面列表中

此外,从下面的消息中,我可以理解系统中只有1724kB可用。 对吗

kswapd0: page allocation failure. order:0, mode:0xd0
[<c002aed4>] (unwind_backtrace+0x0/0xdc) from [<c006d5b0>] (__alloc_pages_nodemask+0x490/0x4ec)
[<c006d5b0>] (__alloc_pages_nodemask+0x490/0x4ec) from [<c008416c>] (cache_alloc_refill+0x260/0x4f4)
[<c008416c>] (cache_alloc_refill+0x260/0x4f4) from [<c0084498>] (__kmalloc+0x98/0xd8)
[<c0084498>] (__kmalloc+0x98/0xd8) from [<c01f73d8>] (__alloc_skb+0x44/0x124)
[<c01f73d8>] (__alloc_skb+0x44/0x124) from [<c01f7cac>] (skb_copy+0x2c/0xa0)
Exception stack(0xc4ecbdf0 to 0xc4ecbe38)
bde0:                                     00000000 00000064 c0347718 00000000 
be00: 00000001 00000000 c0347718 c0347718 c4ecbf54 00000000 00000000 000000fd 
be20: c4ecbf00 c4ecbe38 c00724b4 c00724c4 80000013 ffffffff                   
[<c0024b18>] (__irq_svc+0x38/0xc0) from [<c00724c4>] (shrink_zone+0x88/0x70c)
[<c00724c4>] (shrink_zone+0x88/0x70c) from [<c0072ff4>] (kswapd+0x34c/0x4d8)
[<c0072ff4>] (kswapd+0x34c/0x4d8) from [<c004dcec>] (kthread+0x7c/0x84)
[<c004dcec>] (kthread+0x7c/0x84) from [<c0025ed0>] (kernel_thread_exit+0x0/0x8)
Mem-info:
Normal per-cpu:
CPU    0: hi:   42, btch:   7 usd:  36
Active_anon:124 active_file:0 inactive_anon:129
 inactive_file:0 unevictable:8111 dirty:0 writeback:0 unstable:0
 free:431 slab:19526 mapped:408 pagetables:53 bounce:0
Normal free:1724kB min:1396kB low:1744kB high:2092kB active_anon:496kB inactive_anon:516kB active_file:0kB inactive_file:0kB unevictable:32444kB present:121920kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0
Normal: 103*4kB 34*8kB 3*16kB 3*32kB 2*64kB 0*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 1724kB
8114 total pagecache pages
30720 pages of RAM
547 free pages
1204 reserved pages
19526 slab pages
1662 pages shared
0 pages swap cached
kswapd0:页面分配失败。顺序:0,模式:0xd0
[](从[]展开回溯+0x0/0xdc)(所有页面+节点掩码+0x490/0x4ec)
[](缓存分配重新填充+0x260/0x4f4)
[](缓存分配再填充+0x260/0x4f4)来自[](缓存分配+0x98/0xd8)
[](u-kmalloc+0x98/0xd8)来自[](u-kmalloc\u-skb+0x44/0x124)
[](skb副本+0x2c/0xa0)中的[](分配skb+0x44/0x124)
异常堆栈(0xc4ecbdf0到0xc4ecbe38)
bde0:00000000000064 c0347718 00000000
be00:00000001 00000000 c0347718 c0347718 c4ecbf54 00000000 00000000 FD
be20:c4ecbf00 c4ecbe38 c00724b4 c00724c4 8000013 FFFFFF
[](收缩区+0x88/0x70c)中的[](irq svc+0x38/0xc0)
[](收缩分区+0x88/0x70c)从[](kswapd+0x34c/0x4d8)
[](kswapd+0x34c/0x4d8)来自[](kthread+0x7c/0x84)
[](kthread+0x7c/0x84)从[](内核线程退出+0x0/0x8)
成员信息:
每个cpu的正常值:
CPU 0:hi:42,btch:7美元:36
活动名称:124活动名称文件:0非活动名称:129
非活动_文件:0不可检测:8111脏:0写回:0不稳定:0
自由:431板:19526映射:408页表格:53反弹:0
正常可用:1724kB最小值:1396kB低值:1744kB高值:2092kB活动\u anon:496kB非活动\u anon:516kB活动\u文件:0kB非活动\u文件:0kB不可恢复:3244KB存在:121920kB页面\u扫描:0所有\u不可恢复?不
lowmem_储量[]:0
正常:103*4kB 34*8kB 3*16kB 3*32kB 2*64kB 0*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB=1724kB
8114页缓存页总数
30720页RAM
547页免费
1204保留页
19526页
共1662页
0页交换缓存

无法访问的页面只是由于各种原因而无法调出的页面。这可能意味着该页属于ramdisk,受调用mlock()的保护,共享并锁定,或者在内核被告知“请勿触摸”的任何其他情况下。这是由内核的框架管理的


你能为崩溃提供更多的上下文吗?

你的问题回答得很好,但为了真正有帮助,我们可以使用更多的上下文。我担心你无法帮助我了解崩溃,因为它在内核和用户空间中都有自定义应用程序@kumar看来,ramfs页面并没有立即被视为“无法获胜”。注意:如果您使用
tmpfs
而不是
ramfs
,我认为它们是可收回的-tmpfs和ramfs之间的主要区别在于tmpfs文件数据可以调出到交换设备。