[转帖]overcommit_memory、overcommit_ratio、CommitLimit、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概念的更多相关文章
- 【转帖】Hadoop — HDFS的概念、原理及基本操作
Hadoop — HDFS的概念.原理及基本操作 https://www.cnblogs.com/swordfall/p/8709025.html 分类: Hadoop undefined 1. HD ...
- linux /proc/meminfo 文件分析(转载)
cat /proc/meminfo 读出的内核信息进行解释,下篇文章会简单对读出该信息的代码进行简单的分析. # cat /proc/meminfo MemTotal: kB MemFr ...
- Linux cat /proc/meminfo 输出分析
$cat /proc/meminfoMemTotal: 2052440 kB //总内存MemFree: 50004 kB //空闲内存Buffers: ...
- proc文件系统探索 之 根目录下的文件[三]
包括对proc根目录下meminfo文件的解析. > cat /proc/meminfo 读出的内核信息进行解释,下篇文章会简单对读出该信息的代码进行简单的分析. MemTotal: 507 ...
- #cat /proc/meminfo 详解
$cat /proc/meminfoMemTotal: 2052440 kB //总内存MemFree: 50004 kB //空闲内存Buffers: ...
- /proc/meminfo分析
参考: 1. linux/Documentation/filesystems/proc.txt 2. Linux 中 /proc/meminfo 的含义 3. redhat deployment gu ...
- 【转】刚发现一个linux在线文档库。很好很强大。
原文网址:http://blog.csdn.net/longxibendi/article/details/6048231 1.网址: http://www.mjmwired.net 2.比如查看这个 ...
- /proc/meminfo详解
cat /proc/meminfo 读出的内核信息进行解释, 下篇文章会简单对读出该信息的代码进行简单的分析. MemTotal: 507480 kB MemFree: ...
- 训练DQN,报错:OSError: [Errno 12] Cannot allocate memory
训练DQN,报错:OSError: [Errno 12] Cannot allocate memory 问题介绍: 这两天在做强化学习的作业,使用 DQN 打 Atari 游戏,但在训练过程中,出现了 ...
- sdb报告-10 错误问题定位
# sdb报告-10 错误问题定位在sdb 的集群环境中,如果面对的是一个高并发的操作场景,有时候会莫名其妙地报告 -10 错误. 在 sdb 的错误列表中,-10 错误代表:系统错误. 这是一个笼统 ...
随机推荐
- GaussDB CN服务异常实例分析
摘要:先通过OPS确认节点状态是否已经恢复,或登录后台执行cm_ctl query -Cv确认集群是否已经Normal. 本文分享自华为云社区<[实例状态]GaussDB CN服务异常>, ...
- LiteOS内核源码分析:静态内存Static Memory
摘要:本文带领大家一起剖析了LiteOS静态内存模块的源代码,包含静态内存的结构体.静态内存池初始化.静态内存申请.释放.清除内容等. 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要 ...
- 1ms的时延,10Gbps速率…5G通信技术解读
摘要:5G通信的关键技术有哪些呢?5G对于移动互联网场景和物联网场景又带来了哪些新的技术和变革? 本文分享自华为云社区<5G通信关键技术解读>,作者:Super.雯 . 5G作为目前最新一 ...
- SBOM:缓解软件供应链风险的关键
软件包含大量且范围广泛的组件.部分和相互依赖关系.需要有效缓解与使用软件相关的安全风险:需要遵守与组件相关的许可证.通过第三方代码(包括开源软件 (OSS))了解产品中所有项目的出处至关重要,无论这些 ...
- 对不起,你做的 A/B 实验都是错的——火山引擎 DataTester 科普
DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型.DataTester 深度耦合推荐.广告.搜索.UI.产品功 ...
- MongoDB 副本模式,会映射到本地 127.0.0.1 错误
基于 MongoDB 读写分离--Windows MongoDB 副本集配置 ,里面配置了一个坑,导致出现下列错误 [2021-05-10 10:06:11.981] [cluster-Cluster ...
- 解决ttrss(Tiny Tiny RSS)中fever无法使用的问题
问题描述 在ttrss刚搭建好的时候,进行了如下操作: 随后键入了密码(fever密码) 最后,按照官方给的提示,在Fluent Reader中测试,弹出如下错误信息: 解决方案 复制官方给的链接,删 ...
- Go--下载安装
下载包地址:https://go.dev/dl/ linux: 下载后上传实例解压 tar -xvf go1.19.8.linux-amd64.tar.gz -C /usr/local/ 创建工作目录 ...
- 以API 配置的方式来配置你的 Dubbo 应用
package com.aswatson.csc.member.conf; import com.aswatson.csc.member.service.MemberCardService; impo ...
- redis管道技术pipeline一 ——api
import java.io.UnsupportedEncodingException; import java.util.Set; import org.springframework.beans. ...