AIX 性能调优(3)

2019-05-24 20:18

因为在任何给定时刻使用的虚拟内存数量可能比实际内存大,所以 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 List

VMM 维护一个空闲页面帧的逻辑列表,它用于解决缺页故障。在绝大多数环境中,VMM 偶尔必须通过reasign由运行进程占有的一些页面帧来添加到空闲列表中。需要reasign页面帧的虚拟内存页由 VMM 的页面替换算法进行选择。VMM 阈值决定了重新指定的帧的数量。

查看Free list的方法: # vmstat

System configuration: lcpu=8 mem=15936MB

kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa

1 1 894790 601757 0 0 0 2 3 0 15 861 286 0 0 99 1

# svmon -G

size inuse free pin virtual

memory 4079616 3477911 601705 535886 894842 pg space 7995392 2916 work pers clnt pin 535886 0 0 in use 894842 0 2583069

PageSize PoolSize inuse pgsp pin virtual s 4 KB - 3399607 2916 484734 816538 m 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 性能调优 内存篇之四 调优参数

序号 版本号 更改人 日期 备注 1 1.0版 bldmickey 2007-06-20 本章介绍和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


AIX 性能调优(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版小学一年级数学下册期中试卷WORD春季

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: