aix操作系统的内存调度机制剖析_第1页
aix操作系统的内存调度机制剖析_第2页
aix操作系统的内存调度机制剖析_第3页
aix操作系统的内存调度机制剖析_第4页
aix操作系统的内存调度机制剖析_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、IBM AIX 操作系统的内存调度机制剖析辛旻系统服务事业部 201203)(摘要 作者根据自己多年的 AIX5L 系统管理的经验,从日常使用和管理角度出发,深入浅出但又较为系统论述了 AIX5L 操作系统内存调度机制,并对以往资料很少提及的Pagespace 和文件内存的使用也做了重点剖析。本文对于 AIX 系统管理和AIX上的应用开发了解和深入掌握AIX 系统均有较大帮助。 内存(Memory) 页面空间/内存(Pagespace)内存替换(Steal)内存暂存(Pin)空余内存(Free)0. 前言IBM 公司 UNIX 系统(AIXAdvancederactive Executive)

2、作为使UNIX 操作系统之一,其内存的管理调度机制和其他用最成熟和广泛的如Linux、HP 公司的 UNIX 系统(HP-UX)都有所不同,有其独特之处。而如不对此有深刻了解,将会对其日常管理的各类内存现象产生困惑和不解,如为什么空余的内存总是非常少,为什么页面空间(Pagespace)总是降不下来等等。深入剖析 AIX 的内存调度机制,了解其特点,对日常管理 AIX,通过各类命令调整内存调度,最终使得系统最大限度利用资源、持久稳定运行都能有所帮助。1. 内存概论AIX 的整个内存按管理初步分为 4 类,(1)虚存(Vm),是所有进程申请内存的总和;(2)活动虚存(Avm ),为目前所有进程使

3、用内存总和;(3)实存,为系统物理配置的内存,又分为计算内存、文件内存(供文件读写)和空余内存(Free);(4)页面内存(Pagespace),为系统扩展到硬盘上的内存,类似其他UNIX 系统的交换(Swap)空间,但机制又有所不同。虚存是目前所有进程理论上的内存总和,可用 ps gv 的所有进程的数据节尺寸(SIZE)列和文本节尺寸(TSIZ)列简单相加,予以接近,实际意义不大;活动虚存为实存的计算内存和页面内存的实际使用部分之和,可用 vms命令的avm 列看到,理想状态为小于实存,否则就可能会产生内存调进调出。常说的机器内存大小,用 topas 命令,prtconf 命令,svmon实

4、存就是命令等都可以看到;由于 AIX 的管理为尽量多使用内存,只要进程没有退出就不会,所以平时看到的空余内存(Free)非常小,但并不表示内存不够使用。页面内存的使用情况可观察到内存最的情况,且为内存使用的最后领地,页面内存满了将直接导致系统不再接受新的进程,如超过 npskill 阀值将进行kill 调度。内存替换及调度的最小为 4KB,vms示计算。命令,svmon 命令均按此显此外从页面替换的角度看,实存又分为锁定内存和可替换内存;对于系统内核和被频繁使用的部分内存,系统将标记为锁定(Pin),不参与页面替换。可用 svmon G 命令观察。对于计算内存和文件内存,可用topas 命令简

5、单直观的看到。2. 内存分配可以从一个程序开始运行变为进程后退出的整个过程来充分理解 AIX的内存分配机制:2.1开始运行开始运行时,AIX 有一系列动作要完成,如申请等等,这里只对内存的变化作一简单论述。开始就会有两个部分产生,共享内存(如对于 Oracle 数据库进程,这是主要部分)和私有内存,又各自分为工作段、文本段等内存段(内存段具体可参见资料AIX5L V5.2 命令参考大全,卷 5的 svmon 命令部分)。总之在程序真正运行之前,就会耗掉一部分内存存放代码、文件等信息,当然这部分对内存的消耗有限, 假设空余空间(Free)足够分配,方便下面剖析。2.2 申请内存程序开始运行,需要

6、申请内存存放数据,如果空余空间足够,就直接分配;如果分配过程中少于minfree 阀值,系统就会扫描内存,按预定的页面调度算法(具体可参见AIX 性能管理指南内存页面替换算法),要么逐步替换(Steal)文件内存,最终文件内存降到 minperm 阀值;要么产生页面调出(Page Out),将其它进程的使用内存赶到页面空间(Pagespace)里。最终满足内存申请,值,大于minfree 阀值。2.3 使用free 内存小于 maxfree 阀原则上频繁使用时,使用的内存将被暂存(Pin),不受页面替换调度影响。但如此时使用不频繁而内存紧张,此时仍有可能被赶到页面空间(Pagespace)里。

7、2.4内存当程序使用内存结束,调用 free()程序内存时,内存不会真正马上换。但相应页面做有标记,在页面调度算法中将优先给其它进程替2.5 再次申请内存当程序再次申请内存,一般上次申请的内存还未调出实存,如果本次申请小于上次,系统不再分配,只需使用,替换标记有所变化;当申请大小大于上次,则同样按申请原理分配增多部分。2.6 再次内存同样,当程序使用内存结束,调用free()程序内存时,内存不会真正马上程替换。但相应页面做有标记,在页面调度算法中将优先给其它进2.7 读写大的文件当程序读写大的文件时,先检查文件内存里是否已有,有则使用,否则将占用文件内存,根据页面替换算法仍然可能发生页面调出(

8、Page Out),将其它进程内存赶到页面空间(Pagespace)。当文件内存超过 maxperm 阀值时仍然还在读写,则挤掉其它文件或网络文件系统( Network FileSystem)的客户端(cnt)内存。此外需要特别一提的是, 网络文件系统(NFS)的客户端(cnt)内存也是文件内存的一部分,由 maxcnt 阀值控制。2.8 休眠或等待当程序内存后处于休眠等待等状态时,随着时间的推移,曾为其分配的内存将最有可能成为被替换的对象。2.9 退出当进程正常退出或被 kill 掉时,其曾使用的数据和代码等内存将完全释放,包括页面空间(Pagespace)部分,但文件内存保留。此时,空闲空

9、间(FREE)大小可能超过maxfree 阀值。当然,实际系统调度时更为复杂,内存调度也主要受以下内存参数的约束,这里仅从我个人理解作一说明,详细解释可看相关资料:minfree:当系统需要分配内存而空闲空间又小于此值,系统将调用页面替换,直到大于此值。缺省 120,即 480KB。maxfree:当系统页面调换时,发现空闲空间已大于此值,将停止。缺省 128,即 512KB。minperm: 当系统的文件内存百分比小于此值,替换算法将同时替换文件页和计算页。缺省为 20%。maxperm: 当系统的文件内存大于此值,替换算法将只替换文件页。缺省为80%。strict_maxperm:当设为

10、1 时,文件内存将绝对不会超过 maxperm 阀值,缺省为 0。maxcnt: 作为 NFS 的cnt 使用的文件内存空间。缺省 20%。 maxpin: 不受替换算法影响的暂存/锁定内存(pin)总数。以上参数,AIX5.1 及之前 AIX4.3,可用/usr/sles/kernel/vmtune 命令来调整,需要生效,须写入系统启动。AIX5.2 之后可用vmo 命令,加-p 即可成为生效。从以上论述,就不难理解,为什么 AIX 里看内存的使用总是满满的,这是因为即使了内存,只要进程不退出,就不会真正变成空闲空间(Free)的,也就看不到这部分空余内存。这也是和 Liunx 等 UNIX

11、 系统的明显区别所在。3. 页面空间(Pagespace)调度对于 AIX 的Pagespace 的使用,在 AIX5.3 以前,基本是系统自身来调控。设定当内存紧张时,接近 minfree 阀值作为情形来做说明:发生内存申请。如果文件内存在minperm 和maxperm 之间,将优先文件内存,也同时按替换算法将各个进程的内存部分调出到 pagespace;当文件内存少于 minperm,将优先将各个进程的内存部分调出。如调出部分以前没有调出过,这时将占用页面空间(Pagespace),此时 pagespace 使用比例增加;如占用部分以前就调出过,则检查变化,无变化就只标记,变化则更新,占

12、用比例将不变。进程进行大的文件读写和NFS 读写。这时如果系统文件内存没到maxperm阀值,且以前未读写过此文件,系统按替换算法同时减少其它文件所占内存和将其它进程的计算内存调出到页面空间(Pagespace) ,可以看到文件内存占实存比例逐渐增加,页面空间(Pagespace)也同样按上面原则,可能同时增加。3.3 占用大内存的进程退出。当大进程退出时,可以看到实存的空余内存(Free)值增加一大块,但页面空间(Pagespace)却不一定有明显变化。这又有 3 种情况:1)大的文件读写结束时,文件内存减少,页面空间(Pagespace)没有变化。当然随着时间的推移,其他进程调用时,页面空

13、间(Pagespace)内容回调,空余内存(Free)会逐步减少,但页面空间(Pagespace)内容仍保留。2)如果该进程运行也无变化。就退出,从未被调出过,则页面空间(Pagespace)3)只有当该进程曾被调出过,页面空间(Pagespace)将会减少曾调出部分的大小。综上所述,就不难理解,何时页面空间(Pagespace)才能下降,即只有被调出过的占用页面空间(Pagespace)的进程退出时才会下降。当然,我也发现了一个办法,新开一个页面空间(Pagespace),然后用 swapoff 命令关闭原来的一个,再用 swapon 命令激活,这样来回是比较有效的办法。也会降下来,在 AI

14、X5.3 前也令人欣喜的是,AIX5.3增加了对页面空间(Pagespace)的管理,有了垃圾回收(Garbage Collection)的概念。并增加了一系列参数来调整页面空间(Pagespace)的管理,限于篇幅,具体可可以参考ioo令帮助,或参考AIX5.3的相关资料。对此我也曾做过试验,的确可以使得进程回调内存后,立刻面空间(Pagespace)的占用。页4. 文件内存文件内存由内存(Pers )和客户端内存(Cnt)组成,不计算在活动虚存(Avm)里,平时用 vms命令无法看到,用 topas 命令,svmon 命令可看出。以文件系统使用过程剖析这个问题:文件系统装载成功:文件系统装

15、载(mount)时,实际有三个可能:使用文件内存,这时缺省方式,对于绝大多数类型文件系统适用。不使用文件内存,需要加 dio 参数,即直接读写。适用内存较少,或读写特殊的文件系统。笔者曾遇到 hyperion essbase 所在文件系统要用此参数,否则性能反而下降。该参数对文件系统日常备份的性能影响非常明显。3)是网络文件系统(NFS)的话,将使用客户端(c4.2 进程使用该文件系统nt)文件内存。当进程开始读写该文件系统上的文件,文件内存就开始使用,如果该文件第一次被读写,则进程将申请到一块文件内存,用作高速缓存(cache),速度较慢。进程退出后,该内存仍不常明显。,以后再有进程读写,则使用,速度提高非当内存紧张时,很久不用的文件内存将优先被4.3 文件系统卸载。文件系统卸载(unmount)时,与其相关的文件内存将全部干净,这也是为什么大文件系统卸载比较费时的原因。这部分内存即使没人使用也不会自动。综上可以看到,如果内存宽裕,就无须调配 minperm 阀值和 maxperm阀值,这样可以充分发挥文件内存的优势,提高I/O 的性能。如果内存紧张,可调低ma

温馨提示

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

评论

0/150

提交评论