zoukankan      html  css  js  c++  java
  • Linux内存-Memory Overcommit

    一、Memory Overcommit
    1、Memory Overcommit
      操作系统承诺给进程的内存大小超过了实际可用的内存。
     
    2、Memory overcommit的关键
    • commit针对的是内存申请,内存申请不等于内存分配,内存只在实际用到的时候才分配,
    • 进程实际使用到的内存往往比申请的内存要少。
     
    二、内核参数
    1、overcommit_memory
    • 0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。(free memory + free swap + pagecache的大小 + SLAB中可回收的部分)
    • 1:Always overcommit. 允许overcommit,对内存申请来者不拒。
    • 2: Don’t overcommit. 禁止overcommit。
     
    2、vm.overcommit_ratio
    物理内存的比例,与vm.overcommit_memory=2搭配使用
     
    三、禁止overcommit
    当vm.overcommit_memory=2时,系统时怎么判断申请的内存是overcommit的?
    # grep -i commit /proc/meminfo
    CommitLimit:     8215244 kB
    Committed_AS:    6451100 kB

    CommitLimit:申请的内存总数超过CommitLimit的话就算是overcommit

    Committed_AS:所有进程已经申请的内存总大小
     
    CommitLimit的数值是通过如下两种方式计算出来的:
    1) (Physical RAM * vm.overcommit_ratio / 100) + Swap)
    2)直接通过内核参数vm.overcommit_kbytes大小

  • 相关阅读:
    命令返回值
    PowerShell脚本传递参数
    HTTP 错误 404.3
    xcopy拷贝判断是否成功 robocopy排除子目录
    WinRAR压缩
    批处理命令随笔
    Android Studio3.0中dependencies依赖由compile变为implementation的区别
    compileSdkVersion, minSdkVersion 和 targetSdkVersion详解
    Android Studio工程Gradle编译报错
    rsync应用实例
  • 原文地址:https://www.cnblogs.com/guoxianqi2020/p/13926890.html
Copyright © 2011-2022 走看看