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的更多相关文章

  1. Linux查看系统参数配置

    Linux查看系统参数 1.查看内存(以GB为单位) [root@rac1 ~]# free -g total :内存总数,物理内存总数 used :已使用内存 free :空闲的内存数 shared ...

  2. 有关linux下redis overcommit_memory的问题(转)

    一.背景 公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING ov ...

  3. 有关linux下redis overcommit_memory的问题

    公司的几台Redis服务器出现不明故障,查看Redis日志,发现如下提示: 1 [34145] 01 Jan 17:42:02 # WARNING overcommit_memory is set t ...

  4. [转帖]Linux 硬件和系统配置查看命令小结

    https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...

  5. linux redis 启动 overcommit_memory

    Redis在启动时不成功, 查看日志发现如下警告: WARNING overcommit_memory is set to 0! Background save may fail under low ...

  6. [转帖]linux 内存管理——内核的shmall 和shmmax 参数

    (转)linux 内存管理——内核的shmall 和shmmax 参数   内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个 ...

  7. [转帖]Linux系统/dev/mapper目录浅谈

    Linux系统/dev/mapper目录浅谈   Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/ma ...

  8. 有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。

    我在安装redis-4.0.6后,启动时出现一些问题,如下: :M Jan ::! Background save may fail under low memory condition. To fi ...

  9. [转帖]linux各种IPC机制

    linux各种IPC机制 docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/detai ...

  10. linux的vm.overcommit_memory的内存分配参数详解

    公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的: [13223] 17 Mar 13:18:02.207 # WARNING overcom ...

随机推荐

  1. CUDA C编程权威指南:1.2-CUDA基础知识点梳理

      主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的. 1.闭扫描和开扫描   对于一个二元 ...

  2. CSV:简单格式下隐藏的那些坑

    摘要:本文将盘点处理CSV数据时我遇到的一些坑. 本文分享自华为云社区<CSV-简单格式下隐藏的那些坑>,作者:aKi. 前言 CSV(Comma-Separated Values),是一 ...

  3. 华为云GaussDB(for openGauss)推出重磅内核新特性

    摘要:华为云新一代金融级分布式数据库GaussDB(for openGauss)正式推出了Ustore存储引擎.基于Paxos协议的DCF高可用组件等多个重大内核新特性. 数字化时代,技术迭代更新比以 ...

  4.  iOS代码混淆-从入门到放弃

    ​ iOS代码混淆-从入门到放弃 目录 1. 什么是iOS代码混淆? 2. iOS自动代码混淆的方法是什么? 3. iOS代码混淆的作用是什么? 4. 怎么样才能做到更好的iOS代码混淆? 总结 参考 ...

  5. 火山引擎ByteHouse:4000字总结,Serverless在OLAP领域应用的五点思考

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作为云计算的下一个迭代,Serverless可以使开发者更专注于构建产品中的应用,而无需考虑底层堆栈问题.伴随着近 ...

  6. DataLeap的Catalog系统近实时消息同步能力优化

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 摘要 字节数据中台DataLeap的Data Catalog系统通过接收MQ中的近实时消息来同步部分元数据.Apa ...

  7. allowedOrigins cannot contain the special value "*"

    Spring Boot的版本高于 2.4以后 ,原来的配置已经不适合目前的版本 将代码中的allowedOrigins改为allowedOriginPatterns @Configuration pu ...

  8. GPT应用开发:运行你的第一个聊天程序

    本系列文章介绍基于OpenAI GPT API开发大模型应用的方法,适合从零开始,也适合查缺补漏. 本文首先介绍基于聊天API编程的方法. 环境搭建 很多机器学习框架和类库都是使用Python编写的, ...

  9. 用 Python 开发了一个 PDF 抽取Excel表格的小工具

    大家好哇 从 PDF 里 copy 表格时,粘贴出来后格式都是错乱的.这麻烦事交给 Python 再合适不过里,我开发了一个从 PDF 抽取表格另存为 Excel 文件的应用,我把它部到 huggin ...

  10. L2-030 冰岛人 (25 分) (阅读理解)

    补题链接:Here 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的是维京人古 ...