首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vm.overcommit_ratio的剩余内存到哪里去了?

问vm.overcommit_ratio的剩余内存到哪里去了?
EN

Unix & Linux用户
提问于 2016-07-06 09:15:20
回答 2查看 3.6K关注 0票数 10

如果我通过将vm.overcommit_memory设置为2来禁用内存过度提交,默认情况下,系统将允许将内存分配到交换空间+物理内存的50%的维度,正如解释的这里。

我可以通过修改vm.overcommit_ratio参数来改变比率。假设我将其设置为80%,这样就可以使用80%的物理内存。

我的问题是:

  • 至于余下的20%,这个制度又会怎样呢?
  • 为什么首先需要这个参数?
  • 为什么我不应该总是把它设定为100%呢?
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-07-08 12:36:14

至于余下的20%,这个制度又会怎样呢?

内核将将剩余的物理内存用于自己的目的(内部结构、表、缓冲区、缓存等)。内存过度承诺设置处理用户应用程序虚拟内存预留,内核不使用虚拟内存,而是使用物理内存。

为什么首先需要这个参数?

overcommit_ratio参数是一种实现选择,旨在防止应用程序保留比未来合理可用的虚拟内存更多的虚拟内存,即当它们实际访问内存(或至少尝试访问)时。

Linux内核开发人员认为将overcommit_ratio设置为50%是一个合理的默认值。它假设内核永远不需要使用超过50%的物理RAM。你的里程可能会不同,原因是它是可调的。

为什么我不应该总是把它设定为100%呢?

将其设置为100% (或任何“过高”值)并不能可靠地禁用过度承诺,因为您不能假设内核将使用0% (或太少)的RAM。

它不会阻止应用程序崩溃,因为内核可能会抢占它所需要的所有物理内存。

票数 7
EN

Unix & Linux用户

发布于 2016-07-09 17:30:40

将比率设置为100%不会为文件支持的页面保留任何空间,也不会为内核内的分配(如内核代码、网络缓冲区等)预留任何空间。

内核中的结构将不管如何分配,都会导致过度提交.它们通常是单独的(例如,有网络缓冲区的设置)。我不认为有一个50%的总体限制,虽然总体限制是一些工作,目的是托管容器。

文件支持的页面是您通常运行用户空间代码的地方,所以您也需要空间。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/294180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档