AIX 性能调优 内存篇.doc_第1页
AIX 性能调优 内存篇.doc_第2页
AIX 性能调优 内存篇.doc_第3页
AIX 性能调优 内存篇.doc_第4页
AIX 性能调优 内存篇.doc_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AIX 性能调优 内存篇之一 概念 本章介绍和AIX内存相关的一些基本概念.物理内存 物理存在的内存,查看命令:# prtconf |grep MemoryMemory Size: 15936 MBGood Memory Size: 15936 MB物理内存的分类(1) persistent(长久型)和work(工作型)内存 Persistent型是指读入到内存的内容本身在文件系统是存在的,例如包含数据的文件,可执行文件; 工作型是指进程中的Stack,变量, 共享内存段等(working segments, as are the kernel text segment, the kernel-extension text segments, as well as the shared-library text and data segments. ),是进程中途产生的。Persistent型内存被page out的时候回写到文件系统中,work型内存被page out的时候回写到paging space中. 通过svmon可以看到这两种内存的类型.# svmon -G size inuse free pin virtualmemory 4079616 3477314 602302 535874 894316pg space 7995392 2915 work pers clntpin 535874 0 0in use 894316 0 2582998(2) Computational(计算型)和File(文件型) Computational型内存包含working-storage segments or program text (executable files) segments. 也就是包括work(工作型)再加上persistent(长久型)中的可执行文件的部分. File(文件型)是除去计算型的所有内存. Computational型可以理解为读入可执行文件的地方,文件型可以理解为读入文件中的data部分. 可以通过topas看到这两种内存的类型.MEMORYReal,MB 15936% Comp 22.8% Noncomp 63.3% Client 63.8(3) Client类型 Persistent类型的内存进一步被分类,其中client类型的内存被用于map remote files(例如通过NFS访问的文件). Enhanced JFS file system使用clients page来缓存cache,所以在上面的svmon的结果中看到实际没有persistent的值,而都是clnt的值, 因为用的都是Enhanced JFS 文件系统. work pers clntpin 535874 0 0in use 894316 0 2582998虚拟内存 虚拟内存是物理内存和Paging Space组合形成的虚拟内存空间,通过虚拟的地址空间映射到物理内存或者Paging Space.Paging space Paging space是系统的一个物理存储空间, 占用一定的磁盘空间, 可以是logical volume或者文件的形式. AIX内核需要利用 Paging Space 来管理虚拟内存。和内存页面一样,AIX的 Paging Space也是以4KB为单位,当实际内存数的空闲值低于一定数量以后,系统需要把实际内存中的某些计算页面(Computation Page)写回到Paging Space中(page out),以便释放出实际内存页面用于其他程序。查看当前paging space的命令:# lsps -aPage Space Physical Volume Volume Group Size %Used Active Auto Typehd6 hdisk1 rootvg 31232MB 1 yes yes lvPage Fault If the access is going to a page of virtual memory that is stored over to disk, or has not been brought in yet, a page fault occurs, and the execution of the program is suspended until the page has been read from disk. 查看page fault的命令:# sar -r 5 System configuration: lcpu=8 mem=15936MB 10:28:12 slots cycle/s fault/s odio/s10:28:17 7992467 0.00 3.39 0.20pi(Page In) The number of pages paged in from paging space. 从paging space page到内存中的page数目, 这些页必定以前被page out到page space中的. 通过vmstat查看# vmstat System configuration: lcpu=8 mem=15936MBkthr memory page faults cpu - - - - -r b avm fre re pi po fr sr cy in sy cs us sy id wa1 1 894750 601858 0 0 0 2 3 0 15 861 286 0 0 99 1po(Page Out) The number (rate) of pages paged out to paging space. 如果持续看到po但是没有看到pi的增长,并不一定代表出现了Thrashing, 比如 系统正在读取大量的persistent pages会导致看到大量的page out, 这时候需要查看一下应用的类型. 被page out出去的数据,如果有进程需要再次reference的时候,将产生page fault,然后通过page in再次写入到内存. 通过vmstat查看Thrashing 表示系统连续地paging in和out, 经常是系统缺乏内存的现象.Repage Page fault可以是一个新的page fault,也可以是一个repage fault. A new page fault occurs when there is no record of the page having been referenced recently. A repage fault occurs when a page that is known to have been referenced recently is referenced again, and is not found in memory because the page has been replaced (and perhaps written to disk) since it was last accessed. 发生一次page fault是正常机制,但应该避免发生多次的page fault,AIX在这里是做了一种统计,分别统计计算型和非计算型内存发生repage的count,我们可以用vmtune去调整这两种内存的page的机制(vmtune -p -P).AIX 性能调优 内存篇之二 Paging SpacePaging Space的管理机制在AIX 4.3.2及以后版本中,操作系统提供了3种 Paging Space的管理机制: Deferred Page Space Allocation (DPSA) Late Page Space Allocation (LPSA) Early Page Space Allocation (EPSA)(1) Deferred Page Space Allocation (DPSA) 在AIX4.3.2之后,DPSA是系统默认的Paging Space的管理机制。在这种机制下,系统不会为进程保留任何的 page 页面,直到系统确认确实需要将内存中的页面 page out 到Paging Space中,才会把Paging Space的页面分配给该进程。 DPSA是AIX 4.3.2及以后版本中所使用的默认机制,它通常适用于配有很大容量RAM 的系统,因为它可以减少很多Paging Space资源的浪费。 这也是为什么当前的系统看不到大量paging space分配的原因.(2) Late Page Space Allocation (LPSA) 在AIX 4.2.1之后, 4.3.2之前,操作系统默认使用 LPSA 机制。这种机制是指当进程启动后,系统并不在Paging Space中为该进程保留相应的页面。只有当该进程的实际内存页面被修改过后,才会在Paging Space中为这些被修改过的页面申请空间。其中” 内存页面被修改”的含义:例如通过bzero()函数修改分配的内存的时候,或者调用calloc(),或者内存被初始化某些值的时候, 系统会为这些working page在paging space中保留相应的页面. 这种机制在一定程度上减少了Paging Space的空间浪费,但是对系统也存在一定的风险。比如,当一些后起的进程用了几乎全部的Paging Space后,由于先起的进程并没有保留足够的Paging Space空间用于进程的page out操作,会导致该进程被杀掉。(3) Early Page Space Allocation (EPSA) 在AIX系统中,当Paging Space的使用率达到一定百分比时,系统就无法将需要 page out的页面写到Paging Space中,这时候,该进程就很可能被杀掉。为了避免这种情况的发生,EPSA机制会保证当进程被启动时,在Paging Space中先申请一块页面空间,该空间大小与该进程所需要占用的实际内存的大小一致 (将环境变量 PSALLOC设为early,也就是“export PSALLOC=early”)。这样就保证当进程使 用malloc()调用的同时,在Paging Space中有相应的空间保留给该进程,从而保 证该进程的page out 操作。 这种机制虽然可以保证现有的进程安全,但由于很多被保留的页面空间并没有被用到,造成了非常大的空间浪费。同时,也需要Paging Space的大小比实际内存值要大很多。 EPSA在以前版本操作系统中使用比较多,主要的原因当时的系统物理内存比较少,一般都少于512M,在少内存的情况下EPSA会使系统进程的调度更加安全.(4) 相关命令 查看当前系统采用的paging space的机制# vmo -a |grep defps defps = 1defps=1表示采用的是DPSA,如果defps=0表示采用的是LPSA. 修改paging space的机制,采用LPSA# vmo -o defps=0 查看defps属性当前值是1,缺省值是1,启动时的值是1, 取值范围是0-1,类型是动态可以修改的.# vmo -L defpsNAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES-defps 1 1 1 0 1 boolean D- vmo TipsVMO Man page-L Tunable Lists the characteristics of one or all tunables, one per line, using the following format:NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES-memory_frames 128K 128K 4KB pages S-maxfree 1088 1088 130 16 200K 4KB pages D minfree memory_frames-minfree 960 960 122 8 200K 4KB pages D maxfree memory_frames-.where:CUR = current valueDEF = default valueBOOT = reboot valueMIN = minimal valueMAX = maximum valueUNIT = tunable unit of measureTYPE = parameter type: D (for Dynamic), S (for Static), R for Reboot), B (for Bosboot), M (for Mount), I (for Incremental), C (for Connect), and d (for Deprecated)DEPENDENCIES = list of dependent tunable parameters, one per linePaging-space thresholds tuning 如果paging space少到一定的空间,操作系统将会通过先告警进程释放paging space,最后可能会kill进程.相关的两个参数npswarn和npskill:# vmo -a |grep npswarn npswarn = 249856# vmo -h npswarnHelp for tunable npswarn:Specifies the number of free paging-space pages at which the operating system begins sending the SIGDANGER signal to processes. Default: MAX (512,4*npskill). 大于0小于系统paging space的数目. Increase the value if you experience processes being killed because of low paging space.# vmo -a |grep npskill npskill = 62464# vmo -h npskillHelp for tunable npskill:Specifies the number of free paging-space pages at which the operating system begins killing processes. Default: MAX (64, number_of_paging_space_pages/128). 大于0小于系统paging space的数目.Paging space garbage collection AIX 5.3之后可以利用paging space garbage collection机制来free up paging space. 只作用于deferred page space allocation policy. 方法一: re-pagein 后的垃圾收集The method of freeing a paging-space disk block after a page has been read back into memory from paging space is employed by default. 相关参数:npsrpgmin: 停止re-pagein垃圾收集的free paging space blocks数目npsrpgax: 开始re-pagein垃圾收集的free paging space blocks数目 方法二: scrubbing memory Another method of paging space garbage collection is by scrubbing memory, which is implemented with the psgc kernel process. The psgc kernel process frees up paging space disk blocks for modified memory pages that have not yet been paged out again or for unmodified pages for which a paging space disk block exists. 相关的参数:npsscrubmin 停止scrubbing内存的free paging space blocks数目npsscrubmax: 开始scrubbing内存的free paging space blocks数目# vmo -a |grep nps npskill = 62464 npsrpgmax = 499712 npsrpgmin = 374784 npsscrubmax = 499712 npsscrubmin = 374784 npswarn = 249856Paging Space的创建原则AIX中Paging Space大小确定的指导原则如下(理论上): 系统实际内存小于64MB, paging space= 2 * RAM ; 系统实际内存在 64MB to 256MB 之间, Page Space = RAM size + 16MB ; 系统实际内存大于 256MB , Page Space = 512 + ( RAM - 256 ) * 1.25 ; 当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB, 然后观察paging space的使用情况,如果使用率超过70%, 则需要增加paging space 。 此外在创建Paging Space时还应遵循以下原则以提高性能: 创建的数量应尽可能的多; 每个Paging Space的大小应该相同; 每个Paging Space应尽可能的分配在不同的硬盘上。 工程和维护建议(目前内存和硬盘都比较大,相对比较实用些): 如果硬盘空间不是问题的话,建议可以是内存的两倍.如果内存大于8G或者16G,可以考虑先和内存空间相同. 同时用两块不同的内置盘各分配一半的paging space空间. 对于做了根盘镜像的系统,建议可以不镜像paging space(维护时注意这些特点). 大的swap空间可以避免DPSA可能产生的风险,对于运维来说可能可以减少相关的维护分析工作.Paging Space命令 AIX中可以通过命令lsps -s查看Paging Space的使用情况。列Total Paging Space给出的是系统总的Paging Space空间大小,Percent Used则表示已被占用的Paging Space的百分比。# lsps -aPage Space Physical Volume Volume Group Size %Used Active Auto Typehd6 hdisk1 rootvg 31232MB 1 yes yes lvAIX 性能调优 内存篇之三 内存工作机制虚拟内存管理器(VMM)VMM services all memory requests from the system. 当内存被申请的时候(Working类型),对于early allocation of paging space policy情况下,在RAM被访问的时候,不管是否还有多少物理剩余空间,都会有paging space被分配,在这种情况下VMM起到了关键的作用.(不过目前系统缺省的paging space的分配原则是DPSA). 虚拟地址空间划分成段。每段的大小是 256 MB,它是虚拟内存地址空间中一个邻接的部分,数据对象可映射到该空间。虚拟内存段划分成固定大小的单元叫做页。缺省页面大小是 4096 字节。段中的每页在需要之前可位于实际内存(RAM)中,或存储在磁盘上。同样,实际内存也可以划分成 4096 字节的page frame。VMM 的角色是管理分配实际内存页面帧并且解析程序对虚拟内存页面的引用,这些虚拟内存页面当前不在实际内存中或还不存在(例如,当进程第一次引用其数据段的某一页时)。因为在任何给定时刻使用的虚拟内存数量可能比实际内存大,所以 VMM 必须将余量存储在磁盘上。VMM的两个目标: 最小化使用虚拟内存的总处理器时间和磁盘带宽代价 最小化page fault的响应时间代价VMM 维护一个页面帧的空闲列表,它可用于补偿page fault。VMM 使用了一个页面替换算法来确定当前处于内存中的哪些虚拟内存页要将它们的page frmaes重新指定到空闲列表中。页面替换算法使用了几个机制: 虚拟内存段分成持久段persistent或工作work段。 虚拟内存段分成包含计算computational内存或文件file内存。 跟踪在访问时引起page fault的虚拟内存页。 page fault分成new page fault或repage faults。 在每个虚拟内存段中维护一个repage faults率的统计信息。 用户可调阈值影响页面替换算法的结果。Free ListVMM 维护一个空闲页面帧的逻辑列表,它用于解决缺页故障。在绝大多数环境中,VMM 偶尔必须通过reasign由运行进程占有的一些页面帧来添加到空闲列表中。需要reasign页面帧的虚拟内存页由 VMM 的页面替换算法进行选择。VMM 阈值决定了重新指定的帧的数量。查看Free list的方法:# vmstat System configuration: lcpu=8 mem=15936MBkthr memory page faults cpu - - - - -r b avm fre re pi po fr sr cy in sy cs us sy id wa1 1 894790 601757 0 0 0 2 3 0 15 861 286 0 0 99 1# svmon -G size inuse free pin virtualmemory 4079616 3477911 601705 535886 894842pg space 7995392 2916 work pers clntpin 535886 0 0in use 894842 0 2583069PageSize PoolSize inuse pgsp pin virtuals 4 KB - 3399607 2916 484734 816538m 64 KB - 4894 0 3197 4894页面替换Page replacement当空闲列表中可用的实际内存帧数量减少时就会调用一个页面替换器(stealer)。页面替换器在整个页面帧表(PFT)中移动,寻找可替换(steal)的页面。PFT 中包含一些标志用来表示哪些页已经被引用,哪些页已经被修改。如果页面替换器遇到一个已经引用的页,它不会替换这个页而是为该页重新设置引用标志。在下一次钟针(页面替换器)经过该页且引用位仍未启用时,它便被替换。初次通过时未被引用的页面会立即得到替换。修改标志表示该页进入内存后上面的数据已经改变。当页面要被替换时,如果设置了修改标志,那么在替换该页之前进行页面调出调用。属于工作段的页面写入调页空间;而持久段中的页面写到磁盘上。上图中: 第一个表是具有四列的页面帧表,它包含实际地址、段类型、引用标志和修改标志。第二个表叫做空闲列表,它包含所有空闲页的地址。最后一个表代表除去所有空闲地址后最终得到的页面帧表。除了页面替换以外,算法还可通过使用一个包含最近缺页故障标识的历史缓冲区来跟踪新页故障(第一次引用)和重新调页故障(引用已经调出的页)。然后它可以尽量平衡文件(持久数据)页面的调出和计算(工作存储器或程序文本)页面的调出。当进程退出时,它的工作存储器立刻释放并且它的关联内存帧也放回到空闲列表中。然而由该进程打开的任何文件可保留在内存中。如果线程在单处理器上运行,那么页面替换可直接在线程作用域中进行。在多处理器系统中,页面替换通过内核进程 lrud 进行,在达到阈值 minfree 时,该进程被分派到 CPU 中。从 AIX 4.3.3 开始,内核进程 lrud 是多线程的,每个存储池中一个线程。根据 CPU 数量和 RAM 大小将实际内存划分成平均大小的存储池。系统中存储池的数量可通过运行命令 vmo -a 来确定。数值 minfree 和 maxfree 在命令 vmo 的输出中,它们是每个存储池的 minfree 和 maxfree 的总和。# vmo -a |grep mempools mempools = 2重新调页(Repaging)Page faults要么是new page fault要么是repage fault。如果没有最近引用页面的记录的话,会出现一个new page fault。而出现repage faults是指一个知道其最近已经引用的页再次被引用,但由于该页在上次访问后已经被替换(可能写到磁盘上)而在内存中找不到它。理想的页面替换策略通过总是替换那些不会再次引用的页面帧而完全减少repage faults(假设有足够的实际内存)。因而repage faults数是页面替换算法有效性的一个相反评测标准,算法将频繁被重用的页面保存在内存中,从而降低了总体 I/O 需求并潜在地改善了系统性能。为了分清一个缺页故障是新页故障还是重新调页故障,VMM 维护一个重新调页历史记录缓冲区,它包含 N 个最近缺页故障的页面标识,其中 N 是内存可保留的帧数。例如,512 MB 内存需要一个 128 KB 的repage faults历史记录缓冲区。在页面调进时,如果它的标识可在重新调页历史记录缓冲区中找到,则将它计为一个重新调页。VMM 还可以分别评估计算内存重新调页率和文件内存重新调页率,只需为每种类型的内存维护repage faults计数即可。每次页面替换算法运行时都将重新调页率乘以 0.9,这样可比历史重新调页活动更有力地反映最近的重新调页活动。AIX 性能调优 内存篇之四 调优参数本章介绍和AIX内存调优相关的参数minfree和maxfree(1) minfree空闲列表中可接受的实际内存页面帧的最小数量。当空闲列表的大小低于这个数时,VMM 开始替换页面。它将一直替换页面直到空闲列表的大小达到 maxfree。# vmo -a |grep minfree minfree = 960(2) maxfree 当free list的大小超过maxfree的时候, VMM的page stealing将停止. 当进程终止并释放它们的工作段页面或删除其页面在内存中的文件时,结果是空闲列表的大小可能会超过这个数。# vmo -a |grep maxfree maxfree = 1088从AIX 5.3开始, minfree parameter的缺省值 is increased to 960 per memory pool and maxfree parameter的缺省值 is increased to 1088 per memory pool. minperm%, maxperm%和maxclient%(1) minperm%如果由文件页面占有的实际内存的百分比低于这个级别,则页面替换算法既替换文件页面也替换计算页面,而不管repage rate。 # vmo -a |grep minperm% minperm% = 20(2) maxperm%如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换文件页面。 # vmo -a |grep maxperm% maxperm% = 80(3) maxclient%如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换客户机页面。# vmo -a |grep maxclient% maxclient% = 80当由文件页面占有的实际内存的百分比处于 minperm 和 maxperm 之间时,VMM 通常只替换文件页面,但是如果文件页面的重新调页(repaging)率高于计算页面的重新调页率的话,计算页面也被替换。页面替换算法的主要意图是确保计算页面得到合理的待遇。例如,对于可能会很快再次使用的程序文本页,顺序读取长的数据文件到内存中应该不会使它们丢失。对阈值和重新调页率使用页面替换算法可确保合理地对待这两种类型的页面,但仍稍微偏向有利于计算页面的一方。 通过vmstat -v可以看到当前persistent或者client page的数目和百分比,可以作为系统调优的依据.# vmstat -v 4079616 memory pages 3870685 lruable pages 601736 free pages 2 memory pools 535883 pinned pages 80.0 maxpin percentage 20.0 minperm percentage 80.0 maxperm percentage 66.2 numperm percentage 2565739 file pages 0.0 compressed percentage 0 compressed pages 66.7 numclient percentage 80.0 maxclient percentage 2583086 client pages 0 remote pageouts scheduled 28222 pending disk I/Os blocked with no pbuf 0 paging space I/Os blocked with no psbuf 2740 filesystem I/Os blocked with no fsbuf 0 client filesystem I/Os blocked with no fsbuf 106338 external pager filesystem I/Os blocked with no fsbufList-based LRU (page_steal_method)在AIX 5.3, LRU算法可以用lists或者page frame table,在AIX 5.3之前,只有page frame table的算法, The list-based algorithm provides a list of pages to scan for each type of segment. 下面是段类型的列表: Working Persistent Client Compressed # vmo -a |grep page_steal_method page_steal_method = 0如果page_steal_method = 1, 将采用list-based LRU算法, 如果page_steal_method parameter 为 0, 将采用physical-address-based scanning的方式. page_steal_method参数值只有在bosboot and reboot后生效.# vmo -L page_steal_methodNAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES-page_steal_method 0 0 0 0 1 boolean B-strict_maxperm 缺省为0. 当strict_maxperm 设置成 1, places a hard limit on how much memory is used for a persistent file cache by making the maxperm value be the upper limit for this file cache. 当达到上线的时候least recently used (LRU)将执行在persistent pages上.# vmo -a |grep strict_maxperm strict_maxperm = 0Enhanced JFS file system cache 相关的参数: maxclient, strict_maxclient和lru_file_repageEnhanced JFS file system cache使用client page来作为buffer cache,通过maxclient%来控制page stealing. 如果strict_maxlient设置为0, maxclient%将用来作为一个soft limit. 也就是说client pages可以超过maxclient参数,如果超过这个值,只有client file page被stolen.当lru_file_repage设置为1的时候,如果client pages的数目介于minperm和maxclient之间, LRU算法将参考repage的计数. 最近没有被referenced的page将被stolen. If the value of the file repage counter is higher than the value of the computational repage counter, computational pages, which are the working storage, are selected for replacement. If the value of the computational repage counter exceeds the value of the file repage counter, file pages are selected for replacement.当lru_file_repage设置为0的时候, 如果client pages的数目大于minperm,将选择file pages被替换.如果小于minperm,任何没有被referenced的page将被替换.注意:maxclient同样影响NFS client和compressed pages.# vmo -a |grep lru_file_repage lru_file_repage = 1# vmo -a |grep strict_maxclient strict_maxclient = 1工程经验内存调优主要集中在几个关键参数中,往往这几个关键参数就能很大地提高系统的内存使用性能. 这几个参数是minperm%, maxperm%, maxclient%和lru_file_repage. 原则:首先了解你的应用类型,是文件读写型还是数据库类型. 尽量保证你的应用运行所需要的数据充分地利用物理内存. 具体的工程Tips例子请参见内存调优的工程经验篇.AIX 性能调优 内存篇之五 常用命令一本章介绍和AIX内存调优用到的常用命令.vmstat# vmstat System configuratio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论