Linux 系统之 OOM 解析.docx
《Linux 系统之 OOM 解析.docx》由会员分享,可在线阅读,更多相关《Linux 系统之 OOM 解析.docx(7页珍藏版)》请在优知文库上搜索。
1、在实际的业务场景中,有没有发现这样一种场景:基于VM环境上面所部署的SpringBoot应用服务,往往在运行过程中将内存利用的足够“狠琐”,常常达到90%甚至以上,此时,很大一部分伙伴就开始叫”了。日:领导,内存不终了,赶紧扩容!(此刻,有大佬肯定在想:扩你妹,整天搞这些没用的)那个傻子是不是瘦了?不知道作为所谓的“技术”人员,大家是如何面对的,如何解决?本文将聚焦于1.inUX内存结构、内存分析以及OOMkiller等3个方面以及笔者多年的实践经验总结来进行解析.内存结构从宏观角度而言,内存管理系统是操作系统最至要的部分之一.在内存管理的系统调用方式,事实上,基于POSIX并没有给内存管理指
2、定任何的系统调用.然而,1.inux却有自己的内存系统调用,主要系统调用如下:系统鞫用描述S=brk(addr)改变数据段大小a=mmap(addr,len,prot,flags,fd,offset)进行映射s=unmap(addr,len)取消映射1.brk通过给出超过数据段之外的第一个字节地址来指定数据段的大小.如果新的值要比原来的大,那么数据区会变得越来越大,反之会越来越小.2、mmap和unmap系统调用会控制映射文件。mmp的第一个参数addr决定了文件映射的地址.它必须是页面大小的倍数.如果参数是0,系统会分配地址并返回a,第二个参数是长度,它告诉了需要映射多少字节。它也是页面大小
3、的倍数.prot决定了映射文件的保沪位,保护位可以标记为可读、可写、可执行或者这些的结合。第四个参数flags能够控制文件是私有的还是可读的以及addr是必须的还是只是进行提示,第五个参数fd是要映射的文件描述符.只有打开的文件是可以祓映射的,因此如果想要进行文件映射,必须打开文件;最后一个参数offset会指示文件从什么时候开始,并不一定每次都要从零开始.针对1.inux内存管理及实现,其实其涉及的面较广,较为宜杂,从计算机早期开始,我们在实际的业务场景中所使用的内存往往都要比系统中实际存在的内存多.为此,内存分配策略克服了这一限制,并且其中最有名的就是引入:虚拟内存(VirtualMemo
4、ry),通过在多个竞争的进程之间共享虚拟内存,虚拟内存得以让系统有更多的内存,以方便维护系统资源的分配.先来张总概览图,具体如下所示:1.inux内存,通常技认为指的是“物理内存,然而,只有内核才可以直接访问物理内存,进程需要访问内存,1.inux内核则需要为每个进程都提供一个独立的虚拟地址空间,访问的是虚拟内存.通常而言,虚拟内存空间的内部被划分为内核空间和用户空间:1、进程在用户态,只能访问用户空间内存2、进程进入内核态才能访问内核空间内存3、每个进程都包含内核空间,但这些内核空间都关联相同的物理内存而针对内存映射,其主要将虚拟内存地址映射到物理内存地址,为了完成内存映射.内核每个进程都维
5、护了一张页表,记录虚拟地址和物理地址的映射关系,页表实际存储在CPU的内存管理单元MMU,这样处理器就可以直接通过硬件找出要访问的内存.再来一张内核线形地址空间布局图,具体可参考如下“硬核”示意图:l-fAcMteSPteX(2Fmg1MtnKryMap(Depend、m*4Uk舟yadRAMiVMA1.1.OCJUStKVtlMUmJmVMAUjOC.OFFSETTASK_S!ZI:KczlPAGt-OFFSCTUnKlpGapIyGES者VnUllOCAddfCMSfwcRXIH)lSIZliFlMdVvllMJA*Mre*VMA1.1.0C-STARTVMA1OC_ENDPKMAPBAS
6、tHXADD1.STARTHXADDR.TOP1.anuX内贼曲泥地址空间无局图针对上述结构图,简单描述如下:1、内核直接映射空间PAGEJDFFSETVMA1.1.OC_START,kmalloc和_get_free_Pageo分配的是这里的页面.二者是借助Slab分配器,直接分配物理页再转换为逻辑地址(物理地址连续)适合分配小段内存。此区域包含了内核镜像、物理页框表mem_map等资源.2、内核动态映射空间VMA1.1.OC_START-VMA1.1.OC_END,gvmalloc用到,可表示的空间大.3、内核永久映射空间PKMAP,BASEFIXADDR,START,kmap4内核临时映
7、射空间FIXDDRSTRTxFIXADDRTOP,kmapatomic内存分析针对内存分析部分,其实可利用的手段或策略较多,基于不同段位的水平高低之分,通常,我们可以借助Top、Free命令以及Vmstat命令进行追踪及观测内存的动态活动变化趋势,以实时了解当前操作系统的资源水位,具体如下所示:(administratorJava1.angOutOfMemoryXtopPIDUSERPRNIVIRTSHRSXCPUXMEMMECOMMAND1root21283279965556S8,080.40:01.03java2root200S.0:.kthreadd基于上述输出结果,简要解析如下:IsV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统之 OOM 解析 系统
