[转帖]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 错误代表:系统错误. 这是一个笼统 ...
随机推荐
- Java 查找并替换PDF中的指定文本
本文介绍通过Java程序批量替换PDF中的指定文本内容. 1. 程序环境准备如下: 程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具:另外JDK版本建议使用高版本更佳. jar ...
- Web 全栈开发利器: 强大的在线 Cloud IDE
摘要:近年来,敏捷.DevOps的理念已逐步成为主流.基于云计算的开发环境也正获得越来越多开发者的青睐.不难想象,云端IDE已成未来的趋势. 学了Web全栈开发,就得动手实践,要动手,得先有开发环境. ...
- 微服务架构下,DLI的部署和运维有何奥秘?
摘要:探讨DLI两个问题:如何在生产环境中部署与运维实现快速迭代上线,如何实现监控告警来提升整体运维能力. 华为云数据湖探索DLI是支持多模引擎的Serverless大数据计算服务,其很好的实现了Se ...
- 带你了解TensorFlow pb模型常用处理方法
摘要:TensorFlow 模型训练完成后,通常会通过frozen过程保存一个最终的pb模型. 本文分享自华为云社区<TensorFlow pb模型修改和优化>,作者:luchangli. ...
- JS 判断域名并跳转到指定页面
判断访问指定域名,进行页面跳转 <!DOCTYPE html> <html> <head> <title>正在玩命加载中--</title> ...
- 无法停止服务、无法终止 PID 4100 的进程
服务中无法停止服务. 先查出服务对应的进程 Microsoft Windows [版本 10.0.19043.1348] (c) Microsoft Corporation.保留所有权利. C:\Us ...
- SpringBoot 配置 Swagger
Profile Config 多环境不同配置 1.添加 Pom 文件 <dependency> <groupId>io.springfox</groupId> &l ...
- # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
linux使用go连接etcd集群时报错: # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint /root/go/pkg/mod/ ...
- 八、docker-file自动构建docker镜像
系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...
- js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理
https://www.cnblogs.com/mahao1993/p/13491430.html