临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

什么是内存(什么时候为进程分配内存)

3月23日 逆落雪投稿
  如何查看进程发生缺页中断的次数?
  用psomajflt,minfltCprogram命令查看。
  majflt代表majorfault,中文名叫大错误,minflt代表minorfault,中文名叫小错误。
  这两个数值表示一个进程自启动以来所发生的缺页中断的次数。
  发成缺页中断后,执行了那些操作?
  当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:1、检查要访问的虚拟地址是否合法2、查找分配一个物理页3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)4、建立映射关系(虚拟地址到物理地址)重新执行发生缺页中断的那条指令如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。
  内存分配的原理
  从操作系统角度来看,进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)。
  1、brk是将数据段(。data)的最高地址指针edata往高地址推;
  2、mmap是在进程的虚拟地址空间中(堆和栈中间,称为文件映射区域的地方)找一块空闲的虚拟内存。
  这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存之间的映射关系。在标准C库中,提供了mallocfree函数分配释放内存,这两个函数底层是由brk,mmap,munmap这些系统调用实现的。
  下面以一个例子来说明内存分配的原理:
  情况一、malloc小于128k的内存,使用brk分配内存,将edata往高地址推(只分配虚拟空间,不对应物理内存(因此没有初始化),第一次读写数据时,引起内核缺页中断,内核才分配对应的物理内存,然后虚拟地址空间建立映射关系),如下图:
  1、进程启动的时候,其(虚拟)内存空间的初始布局如图1所示。
  其中,mmap内存映射文件是在堆和栈的中间(例如libc2。2。93。so,其它数据文件等),为了简单起见,省略了内存映射文件。
  edata指针(glibc里面定义)指向数据段的最高地址。2、进程调用Amalloc(30K)以后,内存空间如图2:
  malloc函数会调用brk系统调用,将edata指针往高地址推30K,就完成虚拟内存分配。
  你可能会问:只要把edata30K就完成内存分配了?
  事实是这样的,edata30K只是完成虚拟地址的分配,A这块内存现在还是没有物理页与之对应的,等到进程第一次读写A这块内存的时候,发生缺页中断,这个时候,内核才分配A这块内存对应的物理页。也就是说,如果用malloc分配了A这块内容,然后从来不访问它,那么,A对应的物理页是不会被分配的。3、进程调用Bmalloc(40K)以后,内存空间如图3。
  需要CCLinux服务器架构师学习资料后台私信资料(资料包括CC,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCPIP,协程,DPDK,ffmpeg等),免费分享
  情况二、malloc大于128k的内存,使用mmap分配内存,在堆和栈之间找一块空闲内存分配(对应独立内存,而且初始化为0),如下图:
  4、进程调用Cmalloc(200K)以后,内存空间如图4:
  默认情况下,malloc函数分配内存,如果请求内存大于128K(可由MMMAPTHRESHOLD选项调节),那就不是去推edata指针了,而是利用mmap系统调用,从堆和栈的中间分配一块虚拟内存。
  这样子做主要是因为::
  brk分配的内存需要等到高地址内存释放以后才能释放(例如,在B释放之前,A是不可能释放的,这就是内存碎片产生的原因,什么时候紧缩看下面),而mmap分配的内存可以单独释放。
  当然,还有其它的好处,也有坏处,再具体下去,有兴趣的同学可以去看glibc里面malloc的代码了。5、进程调用Dmalloc(100K)以后,内存空间如图5;6、进程调用free(C)以后,C对应的虚拟内存和物理内存一起释放。
  7、进程调用free(B)以后,如图7所示:
  B对应的虚拟内存和物理内存都没有释放,因为只有一个edata指针,如果往回推,那么D这块内存怎么办呢?
  当然,B这块内存,是可以重用的,如果这个时候再来一个40K的请求,那么malloc很可能就把B这块内存返回回去了。8、进程调用free(D)以后,如图8所示:
  B和D连接起来,变成一块140K的空闲内存。
  9、默认情况下:
  当最高地址空间的空闲内存超过128K(可由MTRIMTHRESHOLD选项调节)时,执行内存紧缩操作(trim)。在上一个步骤free的时候,发现最高地址空闲内存超过128K,于是内存紧缩,变成图9所示。在了解了内存分配原理以后来看一个现象:现象
  1压力测试过程中,发现被测对象性能不够理想,具体表现为:
  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70
  2用psomajflt,minfltCprogram命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。
  初步分析
  majflt代表majorfault,中文名叫大错误,minflt代表minorfault,中文名叫小错误。
  这两个数值表示一个进程自启动以来所发生的缺页中断的次数。
  当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:
  检查要访问的虚拟地址是否合法
  查找分配一个物理页
  填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)
  建立映射关系(虚拟地址到物理地址)
  重新执行发生缺页中断的那条指令
  如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。
  此进程minflt如此之高,一秒10000多次,不得不怀疑它跟进程内核态cpu消耗大有很大关系。
  分析代码
  查看代码,发现是这么写的:一个请求来,用malloc分配2M内存,请求结束后free这块内存。看日志,发现分配内存语句耗时10us,平均一条请求处理耗时1000us。原因已找到!
  虽然分配内存语句的耗时在一条处理请求中耗时比重不大,但是这条语句严重影响了性能。要解释清楚原因,需要先了解一下内存分配的原理。
  真相大白
  说完内存分配的原理,那么被测模块在内核态cpu消耗高的原因就很清楚了:每次请求来都malloc一块2M的内存,默认情况下,malloc调用mmap分配内存,请求结束的时候,调用munmap释放内存。假设每个请求需要6个物理页,那么每个请求就会产生6个缺页中断,在2000的压力下,每秒就产生了10000多次缺页中断,这些缺页中断不需要读取磁盘解决,所以叫做缺页中断在内核态执行,因此进程的内核态cpu消耗很大。缺页中断分散在整个请求的处理过程中,所以表现为分配语句耗时(10us)相对于整条请求的处理时间(1000us)比重很小。
  解决办法
  将动态内存改为静态分配,或者启动的时候,用malloc为每个线程分配,然后保存在threaddata里面。但是,由于这个模块的特殊性,静态分配,或者启动时候分配都不可行。另外,Linux下默认栈的大小限制是10M,如果在栈上分配几M的内存,有风险。
  禁止malloc调用mmap分配内存,禁止内存紧缩。
  在进程启动时候,加入以下两行代码:
  mallopt(MMMAPMAX,0);禁止malloc调用mmap分配内存
  mallopt(MTRIMTHRESHOLD,1);禁止内存紧缩
  效果:加入这两行代码以后,用ps命令观察,压力稳定以后,majlt和minflt都为0。进程的系统态cpu从20降到10。
  小结
  可以用命令psomajfltminfltCprogram来查看进程的majflt,minflt的值,这两个值都是累加值,从进程启动开始累加。在对高性能要求的程序做压力测试的时候,我们可以多一下这两个值。
  如果一个进程使用了mmap将很大的数据文件映射到进程的虚拟地址空间,我们需要重点majflt的值,因为相比minflt,majflt对于性能的损害是致命的,随机读一次磁盘的耗时数量级在几个毫秒,而minflt只有在大量的时候才会对性能产生影响。

如何关闭电脑更新(微软win10更新怎么永久关闭)win10的自动更新可谓是非常顽固,很多用户在网上试了各种关闭win10自动更新的方法,刚开始看着好像是关闭更新了,可没过多久系统就又开始自动更新了。今天电脑配置网就来教大家如……烤肠多少钱(便利店的烤肠都是啥牌子)我家附近有个报亭,除了卖报纸外,还会搭着一些水果、饮料和小吃售卖。小小的报亭里,还放着一台烤肠机,每天来买烤肠的人,应该还不少。因为有段时间,我留意观察了下,发现烤肠机里烤肠的……蒙面哪里的(蒙面歌王刺心)蒙面唱将猜猜猜形式新颖,自从播出以来收到很多好评。最新一期刺薛之谦和人间极品小魔头刘维同时现身蒙面唱将猜猜猜的舞台,不仅合唱《婚礼的祝福》,而且各自带来好听的歌曲。前段时……古浪今日猪肉价格5今天0元斤甘肃省武威市古浪县生猪最新价格行情2月3日外三元6,猪价呈现稳中伴涨,生猪价格走势图等服务,甘肃省永登县12月1日外三元今日生猪价格走势1,天祝藏族自治县1价格5。……今日新铁价最新行情,今日生铁价格最新行情铸造生铁价格行情。产品名称产品价格地区备注涨跌幅价格单位江阴港946印度品种粉矿元吨曹妃甸港884印度品种粉矿元吨天津。掌握商机。云南生铁价格行情月13日云贵市场钢厂生铁……带钢价格今日行情企业逐步复工复产和多重稳增长政策发力,兰格钢铁今天网从事钢铁行业资讯和研究服务。355系价格下调为主。市场整体成交偏清淡。钢材市,随时查看今日更新的钢材价格,价格钢厂直销……Volkswagen春节服务不打烊陪伴车主渡过平安快乐的新春农曆新年即将来临,为确保车主在春节期间能有个顺畅平安的新春假期,春节期间Volkswagen福斯汽车总代理太古标达汽车所有授权服务厂将持续为您服务,除了持续提供车主最专业、最完……蛇皮病能治好吗(蛇皮癣即为鱼鳞病)蛇皮病能治好吗(蛇皮癣即为鱼鳞病)大家常说的蛇皮癣很多情况下指的就是鱼鳞病,蛇皮癣具有遗传性,是常见的皮肤疾病。蛇皮癣对患者的生活和健康造成严重的影响。蛇皮癣的主要症状的……最健康的早餐(100种懒人营养的早餐)最健康的早餐(100种懒人营养的早餐)一周健康早餐食谱来了,大人孩子都爱吃,关键是简单好做。上班族的5天早餐,每天都好吃不重复,不用早起10分钟搞定。前面有网……第三方平台是什么意思(百度第三方交易平台)2020年7月,外贸圈屡登中国出海品牌百强榜的Anker终于修成正果,于深交所创业板IPO上市成功,并成为跨境电商第一家独立上市的公司。过Anker的人都知道,Anker……什么是内存(什么时候为进程分配内存)如何查看进程发生缺页中断的次数?用psomajflt,minfltCprogram命令查看。majflt代表majorfault,中文名叫大错误,minflt代表m……抗战多少年(8年抗战改为14年的原因)最近网上流传这么一张照片!教育部基础教育二司下发2017年1号函件《关于在中小学地方课程教材中全面落实十四年抗战概念的函》。要求把八年抗战全部改为十四年抗战。什么是……
招商贷官网最新消息(招商贷兑付了吗)网贷天眼讯:12月5日,此前一直风波不断的招商贷出台了18个月等额兑付投资人资金的详细方案,方案显示,招商贷将全额兑付出借人的出借本金及2018年12月5日前所产生的出借利息。……今日欧盘价格行情(亚欧美盘开盘时间表)和美洲盘面。并于欧市盘末转涨为跌在此行情带动,请来电或致函告之,所以交易者进场的时间不一样,从走势上看是这一波下跌走势是。为您提供石油期货开盘时间产业资讯信息,包含最新的石油期……瑜伽怎么样(练瑜伽有什么好处)瑜伽怎么样(练瑜伽有什么好处)减肥的方式有很多,任何一种运动只要运用得当,都能起到很好的减肥效果,但是选择瑜伽,你不会感到后悔,各式各样的瑜伽姿势随便驾驭,如果你可以在这……配眼镜镜框(选择眼镜框首先要考虑什么要素?)配眼镜镜框(选择眼镜框首先要考虑什么要素?)今天开学啦!新的学期,配上一副崭新的眼镜,好好学习,天天向上。在选择眼镜框的时候,舒适度是第一考虑的要素,眼镜框的光学和计量技……wcdma是什么网络(联通4g什么制式)中国移动1。hr900MHz(Band8),889904934949MHz:最初获批用于部署GSM,为2G频段,现用于GSM、NBIoT、LTEFDD。GSM和NBIOT……火车票提前几天预订(2020春运火车票提前多少天可以买)火车票提前几天预订(2020春运火车票提前多少天可以买)2020春运火车票提前多少天可以买2020春运火车票提前多少天买票?2020年春运火车票提前多久预售?预售期……标准论文格式(毕业论文标准格式要求是什么样的?)标准论文格式(毕业论文标准格式要求是什么样的?)毕业论文是一种严谨的学术报告形式,目的在于考察学生整个学习阶段的成果,培养学生的基本科研写作能力,所以每一项工作都应该按照……为什么叫女儿墙(女儿墙是啥)卷首语:作为临淇淇河民间文艺公众号的编辑,最近连续向大家推出了由林州市民间文艺家协会临淇分会副会长郝永亮(墨意图说)精雕细琢、图文并茂的二十余期的系列作品《临淇古迹》,笔者感触……痛风怎么引起的(如何判断是不是痛风)痛风是指人体内嘌呤代谢紊乱,尿酸合成增多、排泄减少,使血中尿酸水平增高所产生的一种关节性疾病。近年来呈现高发趋势,与人们生活水平的提高密切相关。一、尿酸高就会痛风吗?……威海哪个省(威海市简介概况)山东省威海市全市下辖:2区、2市1、第一批中国沿海开放城市2、中国第一个国家卫生城市、3、国家园林城市4、国家森林城市5、中韩自贸区先行示范……海王星为什么是蓝色的(水星上看太阳好恐怖)当冥王星被踢出太阳系行星队伍后,海王星就成了距离最远的那一个。这个个子不够突出,质量不算惊人的星球,却比它的大哥天王星更吸引人,为什么呢?因为它也是一颗蓝色星球。动画片《……老婆微信如何与我手机同步(如何接收另一部手机的微信)老婆微信如何与我手机同步(如何接收另一部手机的微信)科技迅速的发展,越来越多的人已经放弃了传统的书信,通过手机通讯软件来沟通交流,那么微信就已经成为众多通讯软件中的佼佼者,一些……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找