lru_file_repage 参数设置为 0。
lru_file_repage 是在带 ML4 的 AIX Version 5.2 和 AIX Version 5.3 的 ML1 中首次引入的。这个参数说明了是否应该考虑 VMM 重分页计数,以及它应该替换何种类型的内存。其缺省设置为 1,所以您需要对它进行更改。当您将这个参数设置为 0 时,它将告诉 VMM,您希望它仅替换文件页面,而不是计算页面。如果您的
numperm 小于
minperm 或者大于
maxperm,这种情况会发生变化,这正是您希望将
maxperm 设置得较高而将
minperm 设置得较低的原因。我们不应该忘记一个事实,对这个值进行优化的主要原因是因为您希望保护计算内存。回到前面的示例,Oracle 使用它自己的缓存,同时使用 AIX 文件缓存,但是却产生了混淆,所以您希望停止它。在这个场景中,如果您打算降低
maxperm,那么您将会停止正在运行的应用程序缓存程序。
清单 2 设置了这些关键的优化参数。
清单 2. 设置优化参数
vmo -p -o minperm%=5
vmo -p -o maxperm%=90
vmo -p -o maxclient%=90
|
尽管您已经习惯于对这些参数进行更改,但是现在,您只需保持 strict_maxperm 和 strict_maxclient 的缺省数值即可。如果将 strict_maxperm 更改为 1,那么它将会对可用于持久文件缓存的内存量设置一个硬限制。通过将 maxperm 值作为缓存的上限,可以实现这一点。现在,没有必要这样做,因为更改 lru_file_repage 参数是一种更加有效的优化方法,而您并不希望使用 AIX 文件缓存。
还有两个其他的重要参数需要说明,它们是 minfree 和 maxfree。如果空闲列表中的页面数降低到低于 minfree 参数,那么 VMM 开始替换页面(只需添加到空闲列表),这样做并不是很合适。它将继续进行这项操作,直到空闲列表至少包含 maxfree 参数中指定的页面数。
在较早版本的 AIX 中,当缺省 minfree 设置为 120 时,通常您将会看到空闲列表为 120 或者更低,而这将导致进行没有必要的分页,更糟糕的是,会阻塞那些需要空闲帧的线程,因为这个值设置得过低。要解决这个问题,在 AIX Version 5.3 中,将 minfree 和 maxfree 的缺省值分别提高到 960 和 1088。如果您正在运行 AIX Version 5.2 或者更早的版本,我建议进行下面的设置,您可以使用清单 3 中的命令,手动地进行更改。
清单 3. 手动地设置 minfree 和 maxfree 参数
vmo -p -o minfree=960
vmo -p -o maxfree=1088
|
AIX Version 5.3 内存方面的变化和改进
让我们先研究一下 AIX Version 5.3 中与内存有关的一些最新的变化。适当地使用 AIX Version 5.3 中的内存管理增强功能,可以帮助您高效地对系统进行优化。有关其他的方面,让我们介绍一下页面空间清理、动态的 xmalloc、内存关联和 Watson malloc。
- 页面空间清理:在某些情况下,这种特性允许系统释放分页空间磁盘块,这样一来,您就不需要为给定的工作负载配置相应的分页空间。仅在使用延迟页面空间分配策略时,才能使用这种特性。
- 动态的 xmalloc 调试 (xmdbg):这种特性通过改进内存分配的整体诊断功能,提高了系统的可靠性。。它允许客户改变收集的诊断内存量,而无需重新启动。
- Watson malloc:与内存碎片的缺省实现相比,这种新的 malloc 子系统能够快速处理一些小的请求。与缺省实现 Yorktown 相比,它所消耗的内存非常少。为了方便调试,还添加了一些新的特性,以帮助您修复各种内存分配问题。
- 改进的多种页面大小支持:正如前面在优化部分中所介绍的,现在有四种不同的页面大小可供使用。这些大小分别为: