[转帖]overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念

overcommit,memory,ratio,commitlimit,committed,as,概念 · 浏览次数 : 0

小编点评

**overcommit_memory** * 默认值为0,表示内核将检查是否有足够的可用内存供应用进程使用。 * 当overcommit_memory=1时,内核允许分配所有物理内存,而不管当前的内存状态如何。 * 当overcommit_memory=2时,内核允许分配超过所有物理内存和交换空间总和的内存,但不允许超过虚拟内存限值的大小。 **Committed_AS** * 代表系统已经分配的内存情况。 * 当overcommit_memory=2时,Committed_AS就代表已经申请了大量的内存了。

正文

overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念


overcommit_memory是一个内核对内存分配的一种策略。

overcommit_memory取值有三种分别为0, 1, 2。

overcommit_memory=0, 

    表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

overcommit_memory=1, 

    表示内核允许分配所有的物理内存,而不管当前的内存状态如何,即:用户申请内存的时候,系统不进行任何检查任务内存足够用,直到使用内存超过可用内存。使用这个设置会增大内存超载的可能性,也可以增强大量使用内存任务的性能。

overcommit_memory=2,

     表示内核允许分配超过所有物理内存和交换空间总和的内存,但不允许超过虚拟内存限值(CommitLimit)的大小。如果您希望减小内存过度使用的风险,这个设置就是最好的。


overcommit_ratio是什么? 

    当overcommit_memory=2的时候,它一般代表的是系统中总的内存的百分比。

虚拟内存限值(CommitLimit)

CommitLimit  = SwapTotal  MemTotal * overcommit_ratio

总的虚拟内存 = 总的交换分区 +  总的物理内存 * overcommit_ratio


这些信息可以到cat /proc/meminfo中看到,可以通过上述的计算公式可以计算就可以获得系统的CommitLimit的值。


Committed_AS:是什么?

Committed_AS代表了系统已经分配的内存情况。

  

overcommit_memory的系统默认值是0,overcommit_ratio的默认值是50。

所以实际中会遇到相同配置的电脑,相同的程序一个可以申请到内存,一个不可以申请到。这时候可以看看overcommit_memory的值是否被修改了。


overcommit_memory=2的使用场景:

CommitLimit为当前系统可以申请的总内存,Committed_AS为当前已经申请的内存,记住是申请。

因此当你的free查看有很多大量可用的内存的时候,实际Committed_AS可能已经申请了大量的内存了,在vm.overcommit_memory 2模式下,

后续的程序可以申请的剩余内存为CommitLimit - Commited_AS了。而vm.overcommit_memory设置为2一般是建议当Swap大于物理内存的时候才进行设置。


LTP测试用例中“overcommit_memory02”将“overcommit_ratio”设置为0,即为测试全部使用SwapTotal 的场景,而我们的swap空间为0。其他几个测试用例的意图也就是测试不同比例的内存过度使用的情况。

</article>

与[转帖]overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念相似的内容:

[转帖]overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念

overcommit_memory、overcommit_ratio、CommitLimit、Committed_AS概念 overcommit_memory是一个内核对内存分配的一种策略。 overcommit_memory取值有三种分别为0, 1, 2。 overcommit_memory=0,

[转帖]vm overcommit参数

https://www.cnblogs.com/ExMan/p/11586756.html overcommit参数需要根据不同服务来进行调整,使内存得到充分利用的同时保证系统的稳定性。比如redis服务器建议把vm.overcommit_memory设置为1. 1、vm.overcommit_ra

[转帖]linux中 vm.overcommit_memory 的含义

https://www.cnblogs.com/wshenjin/p/15500202.html vm.overcommit_memory 表示内核在分配内存时候做检查的方式。这个变量可以取到0,1,2三个值。对取不同的值时的处理方式都定义在内核源码 mm/mmap.c 的 __vm_enough_

[转帖]Linux之系统参数overcommit_memory

https://www.modb.pro/db/25980 前言:作为DBA,内存的使用情况是重要的监控指标之一,了解内存使用很重要。下面有一个系统参数,对于内存的调用起到重要的作用。大家可以了解一下。 参数overcommit_memory:overcommit的中文意思是过量使用,那overco

[转帖]简单理解Linux的Memory Overcommit

https://zhuanlan.zhihu.com/p/551677956 Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存。一个保守的操作系统不会允许memory overcommit,有多少就分配多少,再申请就没有了,这其实有些浪费内存,因为进程实际使

[转帖]Linux kernel内存管理之overcommit相关参数

前言 了解 linux kernel内存管理,首先可以从用户空间的角度来看kernel的内存管理,执行ls /proc/sys/vm的命令,就可以看到vm运行的所有参数,其中就包含了跟overcommit相关的参数。 Memory overcommit概念介绍 要了解这类参数首先要理解什么是comm

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww