Ank*_*wal 2 linux memory kernel linux-kernel oom
当我看到有足够的内存可用时,我无法理解为什么内核会发出这个 oom 杀手:
我看后说有足够的可用内存
普通的
DMA
普通自由行
这是一个基于 NAND 闪存的嵌入式设备,具有 256 MB RAM
内核:2.6.31
myshellscript invoked oom-killer: gfp_mask=0xd0, order=2, oomkilladj=0
Backtrace:
[<c0106494>] (dump_backtrace+0x0/0x110) from [<c03641a0>] (dump_stack+0x18/0x1c)
r6:000000d0 r5:c9040c60 r4:00000002 r3:c0448690
[<c0364188>] (dump_stack+0x0/0x1c) from [<c015a314>] (oom_kill_process.clone.11+0x60/0x1b4)
[<c015a2b4>] (oom_kill_process.clone.11+0x0/0x1b4) from [<c015a738>] (__out_of_memory+0x154/0x178)
r8:c21e86e0 r7:001fb000 r6:00000002 r5:000000d0 r4:c9b6e000
[<c015a5e4>] (__out_of_memory+0x0/0x178) from [<c015a980>] (out_of_memory+0x68/0xa0)
[<c015a918>] (out_of_memory+0x0/0xa0) from [<c015d230>] (__alloc_pages_nodemask+0x42c/0x520)
r5:00000002 r4:000000d0
[<c015ce04>] (__alloc_pages_nodemask+0x0/0x520) from [<c015d388>] (__get_free_pages+0x18/0x44)
[<c015d370>] (__get_free_pages+0x0/0x44) from [<c0109418>] (get_pgd_slow+0x1c/0xe0)
[<c01093fc>] (get_pgd_slow+0x0/0xe0) from [<c0129ab0>] (mm_init.clone.43+0xb0/0xf0)
r7:c90858c0 r6:00000000 r5:c90858c0 r4:ce1a6680
[<c0129a00>] (mm_init.clone.43+0x0/0xf0) from [<c0129c40>] (mm_alloc+0x34/0x44)
r6:0009230c r5:c90858c0 r4:ce1a6680 r3:00000000
[<c0129c0c>] (mm_alloc+0x0/0x44) from [<c0180f70>] (bprm_mm_init+0x14/0x148)
r4:c5154000 r3:cd472564
[<c0180f5c>] (bprm_mm_init+0x0/0x148) from [<c01812d0>] (do_execve+0xa8/0x254)
[<c0181228>] (do_execve+0x0/0x254) from [<c0106000>] (sys_execve+0x3c/0x5c)
[<c0105fc4>] (sys_execve+0x0/0x5c) from [<c0102e80>] (ret_fast_syscall+0x0/0x2c)
r7:0000000b r6:0009230c r5:0009237c r4:000922fc
Mem-info:
DMA per-cpu:
CPU 0: hi: 18, btch: 3 usd: 0
Normal per-cpu:
CPU 0: hi: 42, btch: 7 usd: 0
Active_anon:28162 active_file:16 inactive_anon:18037
inactive_file:13 unevictable:0 dirty:0 writeback:0 unstable:0
free:9998 slab:2447 mapped:164 pagetables:701 bounce:0
DMA free:17128kB min:1560kB low:1948kB high:2340kB active_anon:51068kB inactive_anon:10320kB active_file:24kB inactive_file:0kB unevictable:0kB present:97536kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 158 158
Normal free:22864kB min:2600kB low:3248kB high:3900kB active_anon:61580kB inactive_anon:61828kB active_file:40kB inactive_file:52kB unevictable:0kB present:162560kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 2358*4kB 912*8kB 25*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 17128kB
Normal: 4266*4kB 657*8kB 32*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 22864kB
26591 total pagecache pages
0 pages in swap cache
Swap cache stats: add 0, delete 0, find 0/0
Free swap = 0kB
Total swap = 0kB
65536 pages of RAM
10471 free pages
3967 reserved pages
2447 slab pages
892 shared page count
389 shared pages
620 mapped shared page count
177 mapped shared pages
0 pages swap cached
2481 dma reserved pages
19892 total user pages
20512 RSS sum by tasks
20512 RSS sum by page stats
164 user cache pages
26427 kernel cache pages
Run Code Online (Sandbox Code Playgroud)
Mat*_*Ife 10
好的,让我们逐一分析。
活动内存是被抛出到 LRU 堆栈顶部的内存区域(基本上被调用了很多)。
非活动内存是不经常使用的东西,如果内存需要交换,则是交换指定。
免费是真正的免费内存大约40Mb。是什么赋予了?
线索在这些行中:
DMA: 2358*4kB 912*8kB 25*16kB 0*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB
0*16384kB = 17128kB
Normal: 4266*4kB 657*8kB 32*16kB 1*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB
0*16384kB = 22864kB
Run Code Online (Sandbox Code Playgroud)
这个东西表示内存碎片。这基本上显示了有多少内存是连续可用的。这是你的问题。
在可用的普通内存中,您的可用连续内存不超过 32kb。你的记忆非常碎片化。这意味着如果任何应用程序需要分配超过 32k 的空间,则没有内存——因此 oom 杀手会来踢出一些东西来提供内存来做到这一点。
所以,你可以做什么。
该线索,那就是:
Free swap = 0kB
Total swap = 0kB
Run Code Online (Sandbox Code Playgroud)
哦亲爱的!不换!所以,提交的记忆——就留在那里。这些天较新的内核实际上对内存进行“碎片整理”以使内存区域连续,而较旧的内核则不这样做。
您有 70Mb 的内存可以交换!另外,这不会一次性发生,而是逐渐发生,所以不会对您造成打击。但没有交换,所以没有运气。您也没有用于页面缓存的内存,这对您的系统来说也很糟糕而且很慢。这可能也可以提供更多免费的连续空间,这对您来说会很好。
我给你的建议。获得 768Mb 的交换空间。老实说,您不启用它确实对您的内核造成了损害。
交换对于释放未使用的内存(在您的情况下为四分之一)非常重要,并且还可以避免您遇到的令人讨厌的碎片问题,因为内存可以被换出并释放更多连续空间。即使它确实被换回了,它也可能被放回一个内存区域,这会给你更大的连续间隙。
| 归档时间: |
|
| 查看次数: |
6715 次 |
| 最近记录: |