我想测试内核OOM杀手在我的嵌入式Linux上是否正常工作。我使用一个应用程序测试来填充所有内存,并查看如果系统内存不足,OOM是否会杀死我的应用程序。++count);
exit(0);
结果:MyApplication triggered out of memory codition (oomkiller not called): gfp_mask=0x1200d2, order=0, oomkilladj=0
我试图通过添加以下内容更改/etc
我有256MB的Orange Pi Zero,我想在上面运行OctoPrint。它启动并运行了一段时间,然后由于内存不足而被终止。我不能添加更多的RAM,所以我尝试增加交换大小。我添加了1 1GB,但没有帮助。我也不明白为什么,但我同时运行了"htop“,从它显示的交换("Swp")没有被使用,仍然有1/3的物理内存("Mem")一直在空闲。这是怎么回事。在这一点上,我不关心性能。有没有办法强制它在交换上运行?
底线是,当Linux内核吃掉我们拥有的所有可用内存时(我知道它完全可以使用,内存仍然可用并可以回收:https://www.linuxatemyram.com/),但甚至在此之前,Linux内核就触发vmpressure事件,由Android用来检测OOM情况并开始杀死用户进程。我特别在Android 9和linux内核中遇到了这个问题:
Linux version 4.14.65-tcc (dimorinny@dimorinny-pc) (gcc vers