嵌入式系统,无交换,内核 v2.6.36,启用内存压缩。
在大量使用的情况下,所有 RAM 都被缓存在缓存中。缓存使用了大约 70M 的内存。当用户空间进程分配内存时,没问题,缓存放弃它。
但是有一个第 3 方设备驱动程序似乎试图分配一个物理 5 阶页面,并因 OOM 而失败。快速浏览一下 buddyinfo 就可以确认这一点……没有可用的第 5 个订单页面。但是一旦我删除缓存,就会有很多可用并且设备驱动程序不再OOM。
所以在我看来虚拟内存分配会触发缓存下降,但物理内存分配不会?这没有意义,因为当内存被缓存占用时,内核模块可能会OOM,并且这种行为似乎比没有缓存的磁盘访问速度慢更有害。
是否有调整参数来解决这个问题?
谢谢!