linux ofstream open,浅谈linux性能调优之十一:内存分配管理

linux下内存分配的管理主要通过内核参数来控制:

1.与容量相关的内存可调参数

以下参数位于 proc 文件系统的 /proc/sys/vm/ 目录中。

overcommit_memory :规定决定是否接受超大内存请求的条件。这个参数有三个可能的值:

* 0 — 默认设置。内核执行启发式内存过量使用处理,方法是估算可用内存量,并拒绝明显无效的请求。遗憾的是因为内存是使用启发式而非准确算法计算进行部署,这个设置有时可能会造成系统中的可用内存超载。不让过度使用,直接报错

* 1 — 内核执行无内存过量使用处理。使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务的性能。应用程序在需要时分配,允许过度使用

* 2 — 内存拒绝等于或者大于总可用 swap 大小以及 overcommit_ratio 指定的物理 RAM 比例的内存请求。如果您希望减小内存过度使用的风险,这个设置就是最好的。 将swap直接使用,使用的内存 = swap + ram * 50%

注意:只为 swap 区域大于其物理内存的系统推荐这个设置

overcommit_ratio

将 overcommit_memory 设定为 2 时,指定所考虑的物理 RAM 比例。默认为 50。

测试程序:

###############################################################################

#include "stdio.h"

#include "stdlib.h"

#include "errno.h"

#define maxtimes 1000*1000

#define unit 10485760

int main()

{

char *q[1000000];

int i=1;

char *pc;

for (i=1; i<=maxtimes;i++)

{

q[i] = (char *)malloc(unit);

if ( q[i] == NULL)

{

printf ("malloc error\n");

}

printf("%o\n",q[i]);

pc = (char*)(q[i]);

for (int j=0;j<10485760;j++)

{

pc[j]='a';

}

printf("%s\n",pc);

printf("have been malloc %dM\n",i);

}

return 0;

}

###############################################################################

测试1:overcommit_memory = 0 也是默认的情况,我物理内存2G,开机后查看已使用600M左右,我在这里关闭了swap分区,编译来测试,结果:使用top 查看a.out的RES(物理内存的使用)到达了1.3g   进程被Killed (原因在后面说) 1.3g+600多M = 2G  查看日志:

Jul 16 14:24:48 localhost kernel: Out of memory: kill process 19066 (a.out) score 131753 or a child

Jul 16 14:24:48 localhost kernel: Killed process 19066 (a.out) vsz:8432216kB, anon-rss:1377108kB, file-rss:92kB

测试2:overcommit_memory = 1,情况和测试1一致,

[root@localhost Desktop]# free

total       used       free     shared    buffers     cached

Mem:       1978696    1873644     105052          0       8268      75012

-/+ buffers/cache:    1790364     188332

我们可以看到:内存在剩100M左右时,a.out先卡住了一会,然后有开始执行了 ,它会一直等待能够使用的资源再执行 (都是别的进程释放的资源),用来不会被杀死,因为这个模式对内存无限制

测试3:overcommit_memory = 2,overcommit_ratio默认,都使用,内存会在一定剩余的情况下不能malloc

程序执行结果:

have been malloc 266M  这里是2660

malloc error

0

Segmentation fault (core dumped)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

click事件在什么时候出发_剖析setTimeout和click点击事件的触发顺序

下面是一段非常简单的JavaScript代码dianjisetTimeout(function () {alert(timer handler)}, 2000)function test () {document.addEventListener(click, function (e) {alert(click handler)}, false)var startTime new Date()while ((new Date()).getTime() - startTime <…

android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...

我在微信开发工具里截的图是可以的&#xff0c;但是在手机上截的图缺变成全透明的了。我猜是视频的第一帧的问题微信开发工具的截图手机的截图我的代码&#xff1a;JS&#xff1a;function captureImage(video) {var scale1var canvas document.createElement("canvas&qu…

python画正方形内切圆_python画出三角形外接圆和内切圆的方法

刚看了《最强大脑》中英对决&#xff0c;其中难度最大的项目需要选手先脑补泰森多边形&#xff0c;再找出完全相同的两个泰森多边形。在惊呆且感叹自身头脑愚笨的同时&#xff0c;不免手痒想要借助电脑弄个图出来看看&#xff0c;闲来无事吹吹牛也是极好的。 今天先来画画外接圆…

ar面部识别_Blippar公司加入实时面部识别技术 扫脸就能解锁个人AR简介

VR之家消息&#xff1a;近日&#xff0c;AR初创公司Blippar在其应用中加入了实时面部识别技术。据悉&#xff0c;利用这项新技术&#xff0c;用户通过智能手机摄像头扫脸&#xff0c;只要被扫对象已经存在AR简介&#xff0c;就能解锁这个人的个人资料。Blippar公司加入实时面部…

查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度

前言CloudFlare 官网虽然不提供 CNAME / AAAA / A 记录接入 CloudFlare 的 CDN &#xff0c;但是我们可以通过 CloudFlare Partner 免费使用 CNAME / A 记录接入 CloudFlare 。而我们正好利用 CloudFlare 使用 A 记录接入 CDN 的方式&#xff0c;自定义节点 IP &#xff0c;例如…

android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)

这里以三星S5368手机屏幕锁为例随着三星S5368手机系统功能愈来愈完善&#xff0c;性能愈来愈强劲&#xff0c;越来越多的三星S5368用户们都喜欢把一些重要的信息甚至隐私放在三星S5368手机里面&#xff0c;但是这就有可能会让别人看到&#xff0c;这样一来你的三星S5368里面的信…

python win10 连接hive_使用win10+python3.5+impyla 连接大数据平台hive表的步骤与问题解决...

环境硬件配置及Hadoop&#xff0c;Hive版本一、安装步骤pip install pure-saslDownloading https://pypi.tuna.tsinghua.edu.cn/packages/16/83/30eaf3765de898083 75a8358f9c15d45a3dd44ed26be991471abc0b4480b/pure_sasl-0.5.1-py2.py3-none-any.whlpip install thrift_sasl0…

python将excel表按地方拆分_Python将一个Excel拆分为多个Excel

本文实例为大家分享了Python将一个Excel拆分为多个Excel的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 原始文档如下图所示将销售部门一、二、三科分别存为三个Excel 代码如下 # -*- coding: utf-8 -*- """ Created on Mon Jul 9 20:25:31 2018 au…

arduino麦轮转弯程序_麦克纳姆轮智能小车接线方案

折腾了好几天&#xff0c;实在搞不定了&#xff0c;决定上来社区求助。现在的硬件情况是这样的&#xff1a;- HM-GM37-3429霍尔传感器大载重电机&#xff0c;每个电机六条线&#xff0c;其中电机输入两个&#xff0c;霍尔编码器电源两个&#xff0c;编码器AB相两个- 四个电机&a…

python中range 函数_pythonrange,range函数的用法

当range()函数内填入第三个参数时&#xff0c;第三个参数表示百步长。函数语法&#xff1a;range(start,stop[,step])参数说明&#xff1a;start:计数从度start开始。默认是从0开始。例知如道range&#xff08;5&#xff09;回等价于range&#xff08;0&#xff0c;5&#xff0…

xss植入_网站xss漏洞的利用过程

XSS跨站脚本&#xff0c;是一种Web安全漏洞&#xff0c;有趣是是他并不像SQL注入等攻击手段攻击服务端&#xff0c;本身对Web服务器没有危害&#xff0c;攻击的对象是客户端&#xff0c;使用浏览器访问这些恶意地址的网民。这里就跟大家稍微讲解一下网站xss漏洞的利用过程。网站…

html制作状态栏数字时钟,html5 canvas制作15种数字时钟样式代码

特效描述&#xff1a;html5 canvas制作 数字时钟样式。html5 canvas数字时钟代码代码结构1. 引入CSS2. 引入JS3. HTML代码clockd1_{"indicate": true,"indicate_color": "#222","dial1_color": "#666600","dial2_color…

python出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素

问题 怎样找出一个序列中出现次数最多的元素呢&#xff1f; 解决方案 collections.Counter 类就是专门为这类问题而设计的&#xff0c; 它甚至有一个有用的 most_common() 方法直接给了你答案。 为了演示&#xff0c;先假设你有一个单词列表并且想找出哪个单词出现频率最高。你…

华为申请注册鸿蒙商标,华为申请“鸿蒙商标”,企业注册商标有什么价值?

原标题&#xff1a;华为申请“鸿蒙商标”&#xff0c;企业注册商标有什么价值&#xff1f;国家知识产权局商标局网站显示&#xff0c;华为已申请“华为鸿蒙”商标。申请日期为2018年8月24日&#xff0c;注册公告日期为2019年5月14日&#xff0c;专用权限期是从2019年5月14日到2…

dabs是什么意思_cpdd是什么意思(网络语cpdd是什么梗啥意思)

随着网络的快速发展&#xff0c;抖音和微博这样的软件也是越来越火&#xff0c;因此很多流行语就随之诞生&#xff0c;特别是在抖音里&#xff0c;经常看到游戏相关的用语&#xff0c;比如桃酥和阿姨打LOL时候&#xff0c;就出现了很多高校的流行语&#xff0c;其中“cpdd”这个…

python coding utf-8_【转】怎么在Python里使用UTF-8编码

基本概念 在Python里有两种类型的字符串类型:字节字符串和Unicode的字符串&#xff0c;一个字节字符串就是一个包含字节列表。 当需要的时候&#xff0c;Python根据电脑默认的locale设置将字节转化成字符。 在Mac OX上默认的编码是UTF-8&#xff0c;但是在别的系统上&#xff0…

lisp6 暖通cad_(完整版)暖通CAD设计技巧1

暖通CAD设计技巧1.执行编辑命令&#xff0c;提示选择目标时&#xff0c;用矩形框方式选择&#xff0c;从左向右拖动光标&#xff0c;为"窗口Windows"方式&#xff0c;如果从右向左拖动光标&#xff0c;则为"交*Cross"方式。2.相对坐标输入点时&#xff0c;…

html5音乐播放器设计论文,基于微信小程序的音乐播放器设计和毕业论文

摘 要随着通信技术的发展和智能设备的普及&#xff0c;移动互联网在近两年发展迅猛&#xff0c;新兴的移动社交软件“微信”逐渐走进了手机用户的生活&#xff0c;深受全国数亿用户的欢迎。随着微信版本的不断更新&#xff0c;微信也从单纯的聊天应用逐变成媒体信息、游戏娱乐…

python递归_python3之递归

1、递归的特点 递归算法是一种直接或间接调用自身算法的过程&#xff0c;在计算机编程中&#xff0c;递归算法对解决一大类问题是十分&#xff0c;它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点&#xff1a; &#xff08;1&#xff09;递归就是在过程或函数里调…

什么原因导致芯片短路_PCB电路板短路的原因及解决方法-EDA/PCB-与非网

【导读】焊接短路(如&#xff1a;连锡)、PCB 短路(如&#xff1a;残铜、孔偏等)、器件短路、组装短路、ESD/EOS 击穿、电路板内层微短路、电化学短路(如&#xff1a;化学残留、电迁移)、其他原因造成的短路。首先&#xff0c;了解一下常见的电路板短路的种类&#xff1a;短路按…