关于系统参数:vm.overcommit_memory 和 vm.overcommit_ratio;

overcomit_memory :

0 :用户申请内存的时候,系统会判断剩余的内存多少,如果不够的话那么就会失败。

1:  用户申请内存的时候,系统不进行任何检查任务内存足够用,直到使用内存超过可用内存。

2: 用户一次申请的内存大小不允许超过可用内存的大小。

overcommit_ratio:

当 overcomot_memory = 2
时,该参数有效,这个参数决定了系统可用内存的大小。

计算公式: (Physical-RAM-Size)*ratio / 100 +(Swap-Size) 

本机当前内存使用情况

[[email protected] /]# free -m (M为 单位)

total       used       free     shared    buffers     cached

Mem:          5792        513       5279          0         40        158

-/+ buffers/cache:        314       5478

Swap:         1983          0       1983

[[email protected] /]#

测试代码:

#include<stdio.h>
#include<stdlib.h>

size_t max_num = 0;
int main(int argc, char **argv)
{
        void *block;
        void *tmp_block;
        size_t block_size[] = {1024*1024, 1024, 1};
        int i=0;
        int count;

        for(i=0; i<3; i++)
        {
                for(count = 1; ;count ++)
                {
                        block = malloc(max_num + block_size[i]*count);
                        if(block)
                        {
                                tmp_block = block;
                                max_num += block_size[i]*count;
                                printf("max_num current malloc size =%lf GB\n",max_num*1.0/1024.0/1024.0/1024.0);
                                free(block);
                        }
                        else
                        {
                                break;
                        }
                }
        }
        printf("max_num malloc size = %lf GB\n", max_num*1.0/1024.0/1024.0/1024.0);
        printf("the address is %x \n",tmp_block);
        printf("the address end is %x\n", tmp_block + max_num);
        while(1);
}

情况 ①

overcomot_memory = 0,vm.overcommit_ratio = 50 =》max_num malloc size = 7.137890GB

情况②

overcomot_memory = 2 ,vm.overcommit_ratio = 50 =》max_num malloc size = 3.958923GB

情况③

overcomot_memory = 2 ,vm.overcommit_ratio = 99 =》 max_nummalloc size = 6.722099 GB

时间: 2024-10-10 19:51:59

关于系统参数:vm.overcommit_memory 和 vm.overcommit_ratio;的相关文章

内核参数vm.overcommit_memory和vm.overcommit_ratio

(1)vm.overcommit_memory 执行grep -i commit  /proc/meminfo 看到CommitLimit和Committed_As参数. CommitLimit是一个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap大小 Committed_As是已经分配的内存大小. -------- vm.overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0.1.2 0: (

安装完redis必须设置内核参数vm.overcommit_memory = 1

必须设置 /etc/sysctl.conf #vm.overcommit_memory = 1 # sysctl -p 否则会遇到 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. 今天搞elk的时候就遇到了这样问题. 版权声明:本文为博主原创文章,未经博主允许不得转载.

Installed JREs时 Standard 1.1.x VM与Standard VM的区别

原文:https://blog.csdn.net/qq_29347295/article/details/53034056 Standard 1.1.x VM与Standard VM的区别 在Eclipse或MyEclipse中要设置Installed JREs时,有三个选择: - Execution Environment Description - Standard 1.1.x VM - Standard VM 那么我们应该选择哪个JVM呢? 首先应该弄清楚它们的含义. 1)Executio

PostgreSQL&amp;PostGIS完全安装

1. 创建postgres用户和组 # groupadd -g 101 dba # useradd -u 501 -g dba -G root -d /usr/local/pgsql postgres 2. 添加postgres用户环境变量 $ cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific en

LINUX系统全部参数 sysctl -a

1.sysctl sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中 [[email protected] ~]# cd /proc/sys[[email protected] sys]# ll总用量 0dr-xr-xr-x 0 root root 0 6月 5 20:59 abidr-xr-xr-x 0 root root 0 6月 5 20:59 cryptodr-xr-xr-x 0 root root 0 6月 5 21:03 debugd

Redis单机环境安装

=============================================================================================== 基本环境 单机安装 =============================================================================================== 1.安装gcc yum install gcc ========================

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

DBA不可不知的操作系统内核参数

背景 操作系统为了适应更多的硬件环境,许多初始的设置值,宽容度都很高. 如果不经调整,这些值可能无法适应HPC,或者硬件稍好些的环境. 无法发挥更好的硬件性能,甚至可能影响某些应用软件的使用,特别是数据库. 数据库关心的OS内核参数 512GB 内存为例 参数 fs.aio-max-nr 支持系统 CentOS 6, 7 参数解释 aio-nr & aio-max-nr: . aio-nr is the running total of the number of events specifie

ubuntu 10.04 vpn搭建

1.环境: cat /etc/issue Ubuntu 10.04.4 LTS \n \l 2.安装 apt-get install pptpd3.查看 ps  aux |grep  pptp root     18778  0.0  0.0   1980   648 ?        Ss   01:33   0:00 /usr/sbin/pptpd 4.配置/etc/pptpd.confsudo vim /etc/pptpd.conf添加下面两行(在配置文件的最后取消注释修改IP即可)loc