您好,欢迎访问三七文档
AIX内存机制1虚拟内存虚拟内存是物理内存和交换空间(PagingSpace)组合形成的虚拟内存空间,通过虚拟的地址空间映射到物理内存或者PagingSpace。在AIX中,虚拟内存段被分成4096字节大小的页,物理内存则被划分为4096字节大小的页帧(pageframe)1.1物理内存实际存在的物理内存条上的可供系统使用的缓存。物理内存大小的查看:1)#prtconf|grepmemory2)#vmstat3)#lsattr–Elsys0–arealmemA.永久段(Persistentsegment)和工作段(Workingsegment)AIX区分不同的存储段类型。理解不同的存储段类型,特别是工作段和永久段的区别非常重要。永久段在磁盘上有一个永久的存储位置。含有不可编辑数据的文件或者只读的运行程序被映射到持久段,例如包含数据的文件,可执行文件。VMM参数控制什么时候分配给永久段的RAM页帧可以被重写,并且用于存储新的数据。工作段是临时性的,仅在它们被某个进程使用的时候存在,并且没有固定的磁盘位置。进程堆栈以及数据区,共享库文本,内核数据被映射到工作段。当工作段数据也不能存在于“实”存中的时候,他们被保存在磁盘上的页交换空间。程序退出执行,所有工作段占用的页面被返回。#svmon–G可以看到这两种内存类型-1-B.Computational(计算型)和File(文件型)Computational型内存包含working-storagesegmentsorprogramtext(executablefiles)segments。也就是包括work(工作段)再加上persistent(永久段)中的可执行文件的部分。File(文件型)是除去计算型的所有内存.Computational型可以理解为读入可执行文件的地方,文件型可以理解为读入文件中的data部分。#topasC.Client类型Persistent段的内存进一步被分类,其中client类型的内存被用于mapremotefiles(例如通过NFS访问的文件).。EnhancedJFSfilesystem(JFS2)使用clientspage来缓存cache。1.2PagingSpacePagingspace是系统的一个物理存储空间,占用一定的磁盘空间,可以是logicalvolume或者文件的形式。Pagingspace是系统的一个物理存储空间,占用一定的磁盘空间,可以是logicalvolume或者文件的形式。查看当前pagingspace的命令:-2-1.3PageFault查看5秒内调页错误1.4PageIn&PageOutThenumberofpagespagedinfrompagingspace,andThenumber(rate)ofpagespagedouttopagingspace.vmstat查看:注:如果持续看到po但是没有看到pi的增长,并不一定代表出现了Thrashing,比如系统正在读取大量的persistentpages会导致看到大量的pageout,这时候需要查看一下应用的类型。被pageout出去的数据,如果有进程需要再次reference的时候,将产生pagefault,然后通过pagein再次写入到内存。1.5Thrashing(颠簸)表示系统连续地pagingin和out,经常是系统缺乏内存的现象。1.6RepagePagefault可以是一个新的pagefault,也可以是一个repagefault。出现newpagefault是指第一次调用,昀近没有相关的记录。出现repagefault是指当刚刚调用过但是已经被替换出去了(很可能写回磁盘了),再次调用。发生一次pagefault是正常的,但应该避免发生多次的pagefault,AIX在这里是做了一种统计,分别统计计算型和非计算型内存发生repage的数量,我们可以用vmo去调整这-3-两种内存的page的机制。2PagingSpace的管理机制在AIX4.3.2及以后版本中,操作系统提供了3种PagingSpace的管理机制。分别为:EarlyPageSpaceAllocation(EPSA)LatePageSpaceAllocation(LPSA)DeferredPageSpaceAllocation(DPSA)2.1EarlyPageSpaceAllocation在AIX系统中,当PagingSpace的使用率达到一定百分比时,系统就无法将需要pageout的页面写到PagingSpace中,这时候,该进程就很可能被杀掉。为了避免这种情况的发生,EPSA机制会保证当进程被启动时,在PagingSpace中先申请一块页面空间,该空间大小与该进程所需要占用的实际内存的大小一致(将环境变量PSALLOC设为early,也就是“exportPSALLOC=early”)。这样就保证当进程使用malloc()调用的同时,在PagingSpace中有相应的空间保留给该进程,从而保证该进程的pageout操作。这种机制虽然可以保证现有的进程安全,但由于很多被保留的页面空间并没有被用到,造成了非常大的空间浪费。同时,也需要PagingSpace的大小比实际内存值要大很多。2.2LatePageSpaceAllocation在AIX4.2.1之后,4.3.2之前,操作系统默认使用LPSA机制。这种机制是指当进程启动后,系统并不在PagingSpace中为该进程保留相应的页面。只有当该进程的实际内存页面被修改过后,才会在PagingSpace中为这些被修改过的页面申请空间。这种机制在一定程度上减少了PagingSpace的空间浪费,但是对系统也存在一定的风险。比如,当一些后起的进程用了几乎全部的PagingSpace后,由于先起的进程并没有保留足够的PagingSpace空间用于进程的pageout操作,会导致该进程被杀掉。-4-2.3DeferredPageSpaceAllocation在AIX4.3.2之后,DPSA是系统默认的PagingSpace的管理机制。在这种机制下,系统不会为进程保留任何的page页面,直到系统确认确实需要将内存中的页面pageout到PagingSpace中,才会把PagingSpace的页面分配给该进程。这种机制不会造成PagingSpace的空间浪费,但和LPSA一样,这种机制也给系统带来了相同的风险。DPSA是AIX432及以后版本中所使用的默认机制,它通常适用于配有很大容量RAM的系统,因为它可以减少很多PagingSpace资源的浪费。对于RAM容量不是很大(比如小于2GB)的系统,用户可以采用LPSA或EPSA机制。用“/usr/samples/kernel/vmtune-d0”命令可以停止使用DPSA,而使用LPSA。用“/usr/samples/kernel/vmtune-d0”命令加上“exportPSALLOC=early”命令可以停止使用DPSA,而使用EPSA。用“/usr/samples/kernel/vmtune-d1”命令可以激活DPSA。2.4PagingSpace的页面释放在AIX操作系统中,当内存中的页面被page到了PagingSpace中以后,那么这一块PagingSpace的页面空间将被保留给该内存页面,即使该页面已经被写回到内存中。因此,用lsps命令看到的PagingSpace的使用率可能并不能真实反映真正位于PagingSpace中的页面数,因为有些页面可能已经写回到了内存中。如果写回到内存中的页面是线程的工作存储页面(WorkingStorage),那么随着该线程的退出或者是相关的内存被释放--free(),PagingSpace中的相应页面块也才会被释放。2.5查看当前Pagingspace机制注:defps=1表示采用的是DPSA,如果defps=0表示采用的是LPSA。¾修改pagingspace的机制,采用LPSA#vmo-odefps=0-5-¾查看defps属性当前值是1,缺省值是1,启动时的值是1,取值范围是0-1,类型是动态可以修改的2.6Paging-spacethresholdstuning如果pagingspace少到一定的空间,操作系统将会通过先告警进程释放pagingspace,昀后可能会kill进程.相关的两个参数npswarn和npskill#vmo-a|grepnpswarnnpswarn=4096默认值:max(512,4×npskill)#vmo-hnpswarnHelpfortunablenpswarn:Specifiesthenumberoffreepaging-spacepagesatwhichtheoperatingsystembeginssendingtheSIGDANGERsignaltoprocesses.Default:MAX(512,4*npskill).Thevalueofnpswarnmustbegreaterthanzeroandlessthanthetotalnumberofpagingspacepagesonthesystem.Increasethevalueifyouexperienceprocessesbeingkilledbecauseoflowpagingspace.#vmo-a|grepnpskillnpskill=1024默认值:max(64,pagingspace总页数/128)#vmo-hnpskillHelpfortunablenpskill:Specifiesthenumberoffreepaging-spacepagesatwhichtheoperatingsystembeginskillingprocesses.Default:MAX(64,number_of_paging_space_pages/128).Thenpskillvaluemustbegreaterthanzeroandlessthanthetotalnumberofpagingspacepagesonthesystem.-6-2.7PagingspacegarbagecollectionAIX5.3之后可以利用pagingspacegarbagecollection机制来freeuppagingspace。只作用于deferredpagespaceallocationpolicy。•方法一:re-pagein后的垃圾收集一个页面从交换空间调回到内存之后,释放磁盘数据块。相关参数:npsrpgmin:停止re-pagein垃圾收集的freepagingspaceblocks数目npsrpgmax:开始re-pagein垃圾收集的freepagingspaceblocks数目•方法二:scrubbingmemory另一种方法是,psgc内核进程实现清理内存。psgc内核进程释放那些已修改且不会再调出内存页或者没有修改过在交换空间的数据块。相关的参数:npsscrubmin:停止scrubbing内存的freepagingspaceblocks数目npsscrubmax:开始scrubbing内存的freepagingspaceblocks数目#vmo-a|grepnpsnpskill=62464npsrpgmax=499712npsrpgmin=374784npsscrubmax=499712npsscrubmin=374784npswarn=2498562.8PagingSpace的创建原则AIX中PagingSpace大小确定的指导原则如下(理论上):•系统实际内存小于64MB,pagingspace=2*RAM;•系统实际内存在64MBto256MB之间,PageSpace=RAMsize+16MB;-7-•系统实际内存大于256MB,PageSpace=512+(RAM-256)*1.25;•当内存超过4GB时,则需要根据实际情况来定,一
本文标题:AIX_内存原理
链接地址:https://www.777doc.com/doc-3352839 .html