我的系统生成“页面分配失败,顺序 2”。据我了解,它尝试分配 16k 连续内存。然后它开始疯狂地执行 OOM 操作。
内核日志中的内存诊断如下所示:
Feb 26 14:53:10 [345045.509855] DMA: 2831*4kB 2136*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 28412kB
我会说我有很多单例块,但没有一个是合理的大小。因此会产生碎片。
我是否看到了碎片?有没有办法找到原因或防止碎片?
理想情况下我希望我的进程不会消亡。
附加信息。它会运行几天后才会终止 OOM。这是系统启动后不久从“top”获取的信息。
顶部 - 09:51:04 启动 19:28,1 个用户,平均负载:0.99、0.37、0.17 任务:总计 149 个,1 个正在运行,145 个正在休眠,1 个已停止,2 个僵尸 CPU:47.7%us、37.2%sy、0.0%ni、9.3%id、0.0%wa、5.3%hi、0.6%si、0.0%st 内存:总计 254244k,已使用 160956k,可用 93288k,缓冲区 0k 交换:总计 0k,已使用 0k,可用 0k,缓存 69344k
buddyinfo 不是和我上面提到的内存诊断信息差不多吗?/proc/slabinfo 非常大