[转帖]Linux之系统参数overcommit_memory
https://www.modb.pro/db/25980
前言:
作为DBA,内存的使用情况是重要的监控指标之一,了解内存使用很重要。下面有一个系统参数,对于内存的调用起到重要的作用。大家可以了解一下。
参数overcommit_memory:
overcommit的中文意思是过量使用,那overcommit_memory指的就是过量使用内存。这个参数决定了操作系统在应对应用申请内存时是如果分配的。(为什么会过量使用,不应该是有多少使用多少吗?因为在系统中并不是申请了多少内存就立即分配多少,有可能申请了10G,使用时仅分配了5G,这样就有5G内存在应用运行期间暂时闲置。如果有大量应用申请内存,那么就会有很多暂时闲置的内存。)
内存申请不等于内存分配,内存只在实际用到的时候才分配。
参数overcommit_memory的三种取值:
0 – Heuristic overcommit handling. 缺省值,它允许overcommit,但过于明目张胆的overcommit会被拒绝,比如malloc一次性申请的内存大小就超过了系统总内存。Heuristic的意思是“试探式的”,内核利用某种算法猜测你的内存申请是否合理,它认为不合理就会拒绝overcommit。
1 – Always overcommit. 允许overcommit,对内存申请来者不拒。
2 – Don’t overcommit. 禁止overcommit。
如果设置为0,申请的内存无法满足时(根据内部算法),则会触发OOM。
如果设置为1,申请的内存无法满足时(根据内部算法),部分会触发OOM,部分触发重启。
如果设置为2,申请的内存无法满足时,则禁止分配。那阈值是多少,由内部算法决定。它是通过内核参数vm.overcommit_ratio或vm.overcommit_kbytes间接设置的,公式如下:
【CommitLimit = (Physical RAM * vm.overcommit_ratio / 100) + Swap】
overcommit_ratio默认为50,如有特殊需求,可以自己修改。
查看当前系统的默认阈值:
cat /proc/meminfo | grep “Commit”
其中,CommitLimit指的就是overcommit的阈值,只要超过这个值,在参数设为2的情况下,系统就不允许申请内存。
/proc/meminfo中的 Committed_AS 表示目前操作系统所有进程已经申请的内存总大小。(申请不代表已分配)
修改参数overcommit_memory方法:
1、编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
2、sysctl vm.overcommit_memory=1
3、echo 1 > /proc/sys/vm/overcommit_memory
总结:
设置为2,禁用overcommit,会降低内存的使用效率,浪费内存资源。但是不会发生OOM。
设置为1,不建议使用。
设置为0,默认值,适度超发内存,但也有OOM风险。(这也是数据库经常发生OOM的原因)
参考:swappiness、OOM。
[转帖]Linux之系统参数overcommit_memory的更多相关文章
- Linux查看系统参数配置
Linux查看系统参数 1.查看内存(以GB为单位) [root@rac1 ~]# free -g total :内存总数,物理内存总数 used :已使用内存 free :空闲的内存数 shared ...
- 有关linux下redis overcommit_memory的问题(转)
一.背景 公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING ov ...
- 有关linux下redis overcommit_memory的问题
公司的几台Redis服务器出现不明故障,查看Redis日志,发现如下提示: 1 [34145] 01 Jan 17:42:02 # WARNING overcommit_memory is set t ...
- [转帖]Linux 硬件和系统配置查看命令小结
https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...
- linux redis 启动 overcommit_memory
Redis在启动时不成功, 查看日志发现如下警告: WARNING overcommit_memory is set to 0! Background save may fail under low ...
- [转帖]linux 内存管理——内核的shmall 和shmmax 参数
(转)linux 内存管理——内核的shmall 和shmmax 参数 内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个 ...
- [转帖]Linux系统/dev/mapper目录浅谈
Linux系统/dev/mapper目录浅谈 Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/ma ...
- 有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。
我在安装redis-4.0.6后,启动时出现一些问题,如下: :M Jan ::! Background save may fail under low memory condition. To fi ...
- [转帖]linux各种IPC机制
linux各种IPC机制 docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/detai ...
- linux的vm.overcommit_memory的内存分配参数详解
公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcom ...
随机推荐
- Java 在PDF中添加骑缝章
骑缝章是用于往来业务合同,以确保合同真实.有效的印章加盖方法,是一种防范风险的重要方式.在Java程序中,可以通过使用工具来辅助加盖这种骑缝章. 工具:Free Spire.PDF for Java ...
- 用AI技术推动西安民俗文化,斗鱼超管团队有一套
摘要:AI成为传统文化发展的助推器,助力传统文化朝着大众化.数字化.个性化.精准化方向发展,赋予传统文化新的生机,延续传统文化新的生命."斗鱼团队"从五个方面进行阐述"纵 ...
- GaussDB(DWS)性能调优:Sort+Groupagg聚集引起的性能瓶颈案例
本文分享自华为云社区<GaussDB(DWS)性能调优:Sort+Groupagg聚集引起的性能瓶颈案例>,作者: O泡果奶~ . 本文针对SQL语句长时间执行不出来,且verbose执行 ...
- 云小课|MRS基础原理之Oozie任务调度
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Oozie是一个基 ...
- centos8 新增ssh自定义端口与屏蔽默认22端口。
第一步:修改SSH配置文件(注意是sshd_config而不是ssh_config,多了个d) vim /etc/ssh/sshd_config找到"#Port 22",这一行直接 ...
- 通用漏洞评分系统 (CVSS)系统入门指南
通用漏洞评分系统 (CVSS) 是一个公共框架 ,用于评估软件中安全漏洞的严重性.这是一个中立的评分系统,让所有企业能够使用相同的评分框架对各种软件产品(从操作系统.数据库再到 Web 应用程序)的 ...
- PPT MBE风格的插画
两种或多种不同的图形,通过合并形状等一些操作叫布尔运算 渐变模式 线性渐变:几个不同的颜色[垂直] 射线渐变:圆形弧度的渐变 矩形渐变:矩形 路径渐变:中心形状和外面形状保持一致 渐变方向 射线渐变方 ...
- Windows 清理C盘空间,将桌面,文档等移D盘
一般用户数据文件,缓存文件等,会默认放在C盘.而且有些程序必须装在C盘,久而久之,C盘空间越来越小,到后面没办法再安装使用一些程序. 可以将一些常用的移到D盘:特别是微信,动不动就几十个G的空间被占用 ...
- Python pickle 二进制序列化和反序列化 - 数据持久化
模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 & ...
- COOIS选择屏幕增强
一.COOIS生产订单抬头选择屏幕添加筛选条件,并将自定义数据添加到报表 二.修改抬头表AUFK,新增自定义字段 三.选择屏幕新增筛选字段 四.函数模块中,将选择屏幕筛选条件抛到内存 五.BADI:W ...