Linux 虚拟内存参数配置.docx
《Linux 虚拟内存参数配置.docx》由会员分享,可在线阅读,更多相关《Linux 虚拟内存参数配置.docx(9页珍藏版)》请在优知文库上搜索。
1、一、问题出发点Jun110:30:21auditlkernel:swapper:pageallocationfailure,order:1,mode:020Dun110:30:21auditlkernel:Pid:,comm:swapperTainted:GT2.6.32-431.20.3.el6.86-64#1JUn110:30:21auditlkernel:CallTrace:Dun110:30:21auditlkernel:(?_alloc-pages-nodemask+x74a0x8dJUn110:30:21auditlkernel:?kmem-getpages+6217Jun110:
2、30:21auditlkernel:?fallback-alloc+0lba0270JUn110:30:21auditlkernel:)?CaChe_a】IOJnode+0x99/0x160JUn110:30:21auditlkernel:?kmem-cache-alloc*llb019JUn110:30:21auditlkernel:?sk_prot_alloc+0x48/0xlc0JUn110:30:21auditlkernel:()?sk-clo11e+022x2eDun110:30:21auditlkernel:?inet-csk-clone+16xdJun110:30:21audit
3、lkernel:?tcp_create_openreq_child*0x23/0x470在监控中,发现InCSSafleS日志中出现failure报错信息,发现如上内存堆栈报错。二、虚拟内存介绍IjHa内存毋用置疑,虚拟内存绝对是操作系统中最重要的概念之一.我想主要是由于内存的电要“战略地位,CPU太快,但容做小且功能单一,其他I/O硬件支持各种花式功能,可是相时于CPU,它们又太慢.于是它们之间就需要一种润滑剂来作为缓冲,这就是内存大显身手的地方。而在现代操作系统中,多任务已是标配“多任务并行,大大提升了CPU利用率,但却引出J多个进程对内存操作的冲突向即,虚拟内存极念的提出就是为了解决这个
4、问题,上图是虚拟内存量简单也是宜观的解算.操作系统有一块物理内存(中间的部分),有两个诳程(实际会更多)Pl和P2,操作系统偷偷地分别告诉Pl和P2,我的整个内存:都是你的,的使用,管够,可事实上呢,操作系统只是给它们画了个大tft这些内存说是都给了Pl和P2,实际上只给了它们一个序号而已.只有当Pl和P2其正开始使用这些内存时,系统才开始使用辍转掘移.拼凑出名个块给进程用,P2以为自己在用A内存,实际上已经被系统悄悄理定向到我正的B去J,甚至,当Pl和P2共用了C内存,他们也不知道.操作系统的这种欺啸进程的手段,就是虚拟内存.对PI和P2等进程来说,它们都以为自己占用了整个内存,而自己使用的
5、物理内存的哪段地址,它们并不知道也无需关心。2 .分页和页表虚拟内存是操作系统里的概念,对操作系统来说,虚拟内存就是一张张的对照表,Pl获取A内存里的数据时应该去物理内存的A地址找.而找B内存里的数据应该去物理内存的C地址.我们知道系统里的墙本单位都是BYte字节,如果将每一个虚拟内存的BVte都对应到物理内存的地址.都个条目最少需要8字节(32位虚拟地址-32位物理地址),在4G内存的情况K就需要32GB的空间来存放对照表那么这张表就大得真正的物理地址也放不下了,于是操作系统引入了页(Page)的概念.在系统启动时,操作系统将整个物理内存以4K为单位,划分为各个页,之后进行内存分配时,都以页
6、为单位,那么虚拟内存页对的物理内存页的映射表就大大减小了,4G内存,只需要8M的映射表即可,一蛭进程没有使用到的虚拟内存,也并不需要保存映射关系,而且1.inUX还为大内存设H了多级页表,可以进一页减少了内存消耗。操作系统能拟内存到物理内存的映射表,就被称为页表.3 .内存寻址和分配我们知道通过虚拟内存机制,每个进程都以为自己占用全部内存,进程访问内存时,操作系统都会把进程提供的虚拟内存地址转换为物理地址,再去时应的物理地址上获取数据。CPU中有一种硬件,内存管理的元MMU(MemoryManagementUnit)专门用来将期译虚拟内存地址。CPU还为页表寻址设置了缓存策略由于程序的局部性,
7、其缓存命中率能达到98%.以上情况是页表内存在虚拟地址到物理地址的映射,而如果进程访问的物理地址还没有被分配,系统则会产生一个缺页中断,在中断处理时,系统切到内核态为进程虚拟地址分配物理地址04 .zone内存管理的机关逻辑都是以zone为球位的,这里zone的含义是指内存的分区管理,Unux将内存分成多个区,主要有点接访问区(DMA)、一般区(NormaI)和高端内存区(HighMemor).j内核时内存不同区域的访问因为硬件结构因素会有寻址和效率上的差别.如果在NUMA架构匕不同CPU所管理的内存也是不同的zone.5 .NUMANUMA中,虽然内存直接访问在CPU上,但是由于内存被平均分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 虚拟内存参数配置 虚拟内存 参数 配置
