我遇到了OOM杀手被触发的问题。我在互联网上进行了研究,发现了很多相关的主题。但有些事情仍困扰着我。我希望有人可以帮助我。
环境:iMX6(32位)。
用户/内核空间拆分:2G-2G
TotalRAm - 4GB
一些重要的日志:
顶部调用oom-killer:gfp_mask = 0x201da,order = 0,oom_score_adj = 0
我看到它试图在HIGHMEM区域(来自gfp_mask)分配1页(传染性)内存(order = 0)。如果我错了,请纠正我。
无DMA:1322780kB分钟:4492kB低:5612kB高:6736kB active_anon:0kB inactive_anon:0kB active_file:84kB
DMA:941 * 4kB(UEMC)1211 * 8kB(UEMC)1185 * 16kB(UEMC)836 * 32kB(UEMC)554 * 64kB
(UEMC)295 * 128kB(UEMC)106 * 256kB
HighMem free:480kB min:512kB low:2384kB high:4256kB active_anon:2021148kB inactive_anon:70364kB active_file:0kB
HighMem:0 * 4kB 1 * 8kB(R)0 * 16kB 7 * 32kB(R)0 * 64kB 0 * 128kB 0 * 256kB 0 * 512kB 0 * 1024kB 0 * 2048kB 0 * 4096kB 0 * 8192kB
我认为OOM杀手是因为免费Highmem(480KB)低于最小值(512KB)而被触发。如果我错了,请再次纠正我。
我的问题:
1.我认为DMA_ZONE只有大约16MB,NORMAL_ZONE从16MB开始向上
大约896MB,其余的是HIGHMEM_ZONE。但是日志显示超过1GB
DMA_ZONE中存在空闲页面(1322780kB)
2.为什么内核不利用此区域进行进一步分配?
更多日志:(从完整的日志中取出):
DMA per-cpu:
CPU 0:嗨:186,btch:31 usd:0
CPU 1:嗨:186,btch:31 usd:0
CPU 2:嗨:186,btch:31 usd:0
CPU 3:嗨:186,btch:31 usd:0
HighMem per-cpu:
CPU 0:嗨:186,btch:31 usd:51
CPU 1:嗨:186,btch:31 usd:20
CPU 2:嗨:186,btch:31 usd:4
CPU 3:嗨:186,btch:31 usd:14
active_anon:505287 inactive_anon:17591 isolated_anon:0
active_file:21 inactive_file:0 isolated_file:0
不可控制:0脏:0回写:0不稳定:0
free:330815 slab_reclaimable:1134 slab_unreclaimable:3487
映射:15956 shmem:25014 pagetables:1982 bounce:0
25046页面总页数
内存983039页
331349免费页面
9947保留页面
2772个平板页面
543663页共享
0页交换缓存
cat / proc / pagetypeinfo
页面阻止顺序:13
每块页数:8192
每次迁移类型的免费页数按订单0 1 2 3 4 5 6 7 8 9 10 11 12 13
节点0,区域DMA,类型不可移动1 0 9 8 3 1 0 1 1 1 1 0 1 0
节点0,区域DMA,类型可回收4 5 5 1 2 0 1 1 1 0 1 0 1 0
节点0,区域DMA,类型可移动1 6 4 0 0 0 1 1 2 4 3 3 4 28
节点0,区域DMA,类型保留0 0 0 0 0 0 0 0 0 0 0 0 0 1
节点0,区域DMA,类型CMA 1 1 2 0 0 0 0 0 1 1 0 0 1 3
节点0,区域DMA,类型隔离0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点0,区域HighMem,类型Unmovable 11 7 2 2 9 6 5 3 3 1 0 1 1 0
节点0,区域HighMem,类型可回收0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点0,区域HighMem,类型Movable 23 201 4771 4084 1803 403 105 69 57 38 23 21 8 23
节点0,区域HighMem,类型保留0 0 0 0 0 0 0 0 0 0 0 0 0 1
节点0,区域HighMem,类型CMA 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点0,区域HighMem,类型Isolate 0 0 0 0 0 0 0 0 0 0 0 0 0 0
块数类型不可移动可回收可移动储备CMA隔离
节点0,区域DMA 5 1 33 1 16 0
节点0,区域HighMem 2 0 62 1 0 0
如果有必要,我很乐意发布更多日志。
三江源,
斯里克
答案 0 :(得分:0)
可能是远射,但你试过添加
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
到
/etc/sysctl.conf中