AIX的性能优化

使用诸如 schedo 和 vmo 等 AIX 工具具有系统范围的影响,因此对这些工具的全面介绍超出了本系列的范围。有关这些工具的更多信息,请参见参考资料部分。

但是对于大多数多层应用程序(尤其是基准测试),系统范围的优化是不可避免的。存在若干可用于 AIX 性能优化的优秀资源可供您参考。要了解通常需要的优化类型,您可以查看实际的已发布基准。如果查看最近针对 AIX 上的 IBM Java 的 SpecJBB 2000 结果,比方说 http://www.spec.org/osg/jbb2000/results/res2003q3 /jbb2000-20030624-00194.html, 则操作系统优化如下所示:
操作系统优化

    * SPINLOOPTIME=2000
    * vmo -r -o lgpg_regions=256 -o lgpg_size=16777216
    * setsched -S rr -P 40 -p $$
    * schedtune -t 400 -F 1
    * vmtune -S 1

警告:切勿在没有充分了解后果的情况下应用这些设置,因为不正确使用这些设置实际上会恶化系统性能。

那么上述设置有何作用呢?参阅 AIX 文档,您很快就可以更好地了解这其中每个设置是做什么用的。让我们依次研究一下其中每个设置。

SPINLOOPTIME 控制系统在让步于另一个进程之前重试某个繁忙锁的次数。由于缺省值为 40,更高的值将告诉系统应该尝试更长的时间以待锁释放。在多处理器系统上,这样会导致更好的性能,因为忙锁重试的开销要比进程上下文切换的开销低。

vmo 行设置大型页的大小和数量。查看一下 Java 命令行开关,您将看到正在使用 -Xlp。该开关启用 Java 中的大型页支持,白皮书”AIX Support for Large Page“对该开关进行了更详细的描述。如果您有内存密集型应用程序,可以试验大型页以确定它是否有帮助。与 Java 配套的 SDK 指南中提供了有关此主题的更多信息。

setsched 行实际上是一个脚本而不是 AIX 命令。它调用 thread_setsched 内核服务以选择固定优先级的循环调度,并对该 Java 进程使用优先级 40。

schedtune 命令也是 AIX 5.2 以上版本中的一个脚本,它将传递的参数映射到新的 schedo 命令。上面这一行命令是将固定优先级线程的时间片更改为 400 个计时单元。它还强制固定优先级的线程驻留在全局运行队列中。

最后,vmtune 命令将该调用转换为等效的 vmo 调用,并且上面的行还启用了共享内存段的固定。

因此可以看到系统被切换到大型页和固定优先级的调度程序,以达到 SpecJBB 2000 基准的记录数据。您能否在自己的应用程序中使用这些相同的设置呢?也许不能,但是您现在能够研究这些命令和调度策略,并进行试验以适合自己的应用程序特 征。这是性能优化中的下一步。
参与0

0同行回答

“答”则兼济天下,请您为题主分忧!

提问者

deadman
擅长领域: 服务器存储Unix

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-01-30
  • 关注会员:0 人
  • 问题浏览:2734
  • X社区推广