Linux 内核“保留”内存
Posted
技术标签:
【中文标题】Linux 内核“保留”内存【英文标题】:Linux Kernel 'Reserved' Memory 【发布时间】:2015-04-28 05:05:47 【问题描述】:我正在尝试为低内存系统(16MB ram)编译内核(3.14,arm64 arch)。我已经设法关闭了所有我不需要的功能,基本上没有设备,没有 fs,没有模块,没有 ZONE_DMA,一个非常非常基本的内核。
但是,当我启动内核时,我看到了这个:
内存:860K/16384K 可用(789K 内核代码、67K rwdata、56K rodata、64K init、38K bss、15524K 保留)
这个保留的内存是什么?
如何减少这种情况?储备占用了我的大量 RAM,只剩下 860K 可用
提前致谢!
【问题讨论】:
【参考方案1】:它是满足关键内存分配的最小内存量。将其设置得太低可能会导致系统损坏,设置为高可能会立即 OOM 您的系统。你可以通过写信给/proc/sys/vm/min_free_kbytes
来修改这个值。
阅读:
$ cat /proc/sys/vm/min_free_kbytes
67584
要将其设置为 1024KB (1MB):$ echo 1024 > /proc/sys/vm/min_free_kbytes
【讨论】:
【参考方案2】:内存:860K/16384K 可用(789K 内核代码、67K rwdata、56K rodata、64K init、38K bss、15524K 保留)
这是process in memory的结构:文本/代码段,数据段(bss,rodata等),堆和堆栈。内核始终驻留在 RAM 中并为其使用保留一些内存空间。但是当 RAM 较小时,它会被内核和用户空间进程共享。
了解更多关于嵌入式 linux 的信息read this post。
【讨论】:
这仍然没有解释内存的“保留”部分的用途以及如何调整它以上是关于Linux 内核“保留”内存的主要内容,如果未能解决你的问题,请参考以下文章