AIX 6.1、Solaris 10 和 HP-UX 与 System p

比较三种主要的商业 UNIX 操作系统

近几年,HP、Sun 和 IBM® 都发布了他们的商业 UNIX® 操作系统的新版本。本文对比这些版本中的一些创新。讨论执行某些任务的方法的差异,比如连网和性能调优。另外,讨论这三种操作系统在虚拟化方面的差异。

Ken Milberg, 作家/网站专家, Future Tech

Ken Milberg 是 PMP,同时也是 techtarget.com 的撰稿人/站点专家,他还为 searchopensource.com 提供 Linux 技术信息和支持。Ken 是 IBM Systems Magazine,Open Edition 的撰稿人和技术编辑。Ken 拥有 University of Maryland University College 的计算机与信息科学学士学位和技术管理科学硕士学位。他是 Long Island POWER-AIX 用户组的创始人和负责人。这些年以来,他在各种规模的企业工作过,并且担任过各种职位,包括 CIO 和高级 AIX 工程师。他现在在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 不仅是已通过 PMI 认证的项目管理专业人员(PMP),还是通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006)。



2009 年 7 月 09 日

您可以访问“AIX 6 资源中心”了解更多和 AIX 6 相关的资源:

首先讨论这三种主要商业 UNIX 操作系统的最新版本中的新特性和创新。

HP-UX 创新

HP-UX 是 HP 提供的 UNIX 操作系统,最新版本是 11iV3。HP-UX 基于 System V,在 HP9000 RISC 服务器和 HP Integrity Itanium 系统上运行。它与 Solaris 相似,可以在 SPARC RISC 体系结构和 x86 机器上运行。AIX 只能在 POWER® 体系结构上运行;但是,由于 UNIX 是高端操作系统,所以 AIX 和 POWER 体系结构的紧密集成是有积极意义的。

HP-UX 11Iv3 支持最多 128 个处理器核、2TB 内存、2TB 的文件系统、16TB 的文件系统大小和 1 亿 ZB 的存储。最近的创新和改进包括:

  • 通过动态节能功能,减少了 10% 的能源使用量
  • 通过根据位置优化资源分布,把应用程序性能最多提高 20%
  • 通过 tune-N-Tools 调优改进对性能敏感的工作负载

大约一年前,HP 提供了几套操作系统环境,这为客户提供了新的选择。它们包括数据中心、高可用性环境、虚拟服务器和基本环境。

  • 提高了虚拟 I/O 的速度,在使用 HP Integrity 虚拟机器时这可以提高带宽并提高 CPU 效率 60%。这个改进通过 gatekeeper 功能帮助优先处理重要的数据流。
  • Online JFS 通过 VxFS 实现一种编制文件索引的新方法,并改进了目录的性能。
  • HP Logical Volume Manager 改进:
    • 支持在线磁盘替换
    • 动态线支持
    • 支持多路径 I/O
    • 性能改进
    • 提高了逻辑卷的最大大小: 2 - 16TB
  • 通过 Dynamic nPartitions 改进了虚拟化。这允许把基于单元的 HP Integrity 和 HP9000 服务器配置成大小不同的分区,可以根据应用程序工作负载调整大小,在调整过程中应用程序仍然是可用的。
  • 连网改进:
    • 通过避免不必要的 TCP 通信,提高移动客户机的吞吐量。
    • 改进 TCP 堆栈,提高性能。
    • 改变了可调优的 tcphasize。这现在是自动调优的;系统可以在引导时确定最优值。

LVM 中的改进确实不错,但是 AIX 已经实现了这些改进中的大部分。


Solaris 创新

Solaris 10 最初是于 2005 年发布的。Solaris 的最新版本是 10 10/08。这个版本中的改进包括:

  • 支持从 ZFS 引导并使用 ZFS 作为根文件系统。还对 Solaris ZFS 做了许多其他改进,包括:能够回滚文件集而不需要卸载,改进了 ZFS 发送命令,支持 ZFS 配额和保留(只适用于文件系统数据),zpool 历史等命令行改进,允许通过升级命令用新的文件系统改进升级现有的文件系统,允许非根用户执行细粒度的 ZFS 管理任务。
  • 在从一个系统转移到另一个系统时,允许 Solaris 容器自动地更新它的环境。
  • LDOM 支持,可以动态地重新配置磁盘和网络 I/O。
  • 在 x86 系统上支持最多 256 个处理器 —— 原来是 64 个。
  • 对 Solaris 区的改进,包括:允许在 Shared IP Zones 中设置默认路由器,允许 ZFS 上的区路径。
  • 安全改进,包括:通过 Solaris Management Console 改进了数据隔离,改进了加密算法。
  • 连网改进:提供 SIP 全程通信流度量和日志记录,提供新的通信协议解析器实用程序。

对 ZFS 的这些改进非常重要。当 ZFS 最初出现时,它看起来令人难以置信,但它的根本问题是特性功能很不够。增加了新功能之后,ZFS 在许多方面能够与 AIX 的 JFS2 和 HP 的 VxFs 匹敌了。


AIX 创新

AIX 6.1 最初是在大约两年前发布的,现在有两个版本:标准版(只包含基本 AIX)和企业版(包含工作负载分区管理程序和几个 Tivoli® 产品)。在这个方面,它与 HP 相似,HP 也有多个版本。最近的改进包括:

  • 工作负载分区:WPAR 是与 Solaris 容器相似的操作系统虚拟化特性,它允许在一个 AIX 6.1 实例中创建多个 AIX 6.1 环境。只需几秒即可创建应用程序 WPAR,它可以在全局实例中运行,这样就可以快速测试新应用程序。
  • 动态应用迁移:这允许分区从一个系统转移到另一个系统,而不需要重新启动应用程序,也不会中断最终用户对系统的访问。除了支持计划内停机之外,这个特性还有助于管理工作负载,允许在非高峰时间段把服务器从系统中转移出去,从而节省能源和成本,提高效率。
  • 支持并发 AIX 内核更新:不需要重新引导系统,系统更新即可生效。
  • 支持存储键:可以减少与 AIX 内核中的内存覆盖相关的许多停机。
  • 支持动态跟踪:可以简化系统或应用程序代码的调试。
  • 改进了功能性恢复例程:可以从通常会导致系统崩溃的错误中恢复。
  • 改进了 AIX 6.1 的默认调优参数,可以实现更好的性能。
  • 提供新的名称解析器缓存守护进程,可以更高效地处理主机名解析请求。
  • 改进了 NFS version 4 的 NIM 支持。
  • 改进了可管理性特性,比如 IBM Systems Director Console for AIX。

最近的安全改进包括:

  • 基于角色的访问控制 (RBAC),允许管理员把管理责任委托给非根用户,从而提高安全性和可管理性。
  • Trusted AIX 让 AIX 6.1 能够满足法律和行业标准对私密性的大多数需求。
  • Encrypted Filesystems 能够加密文件系统中的数据,为 JFS 提供更强的安全性。
  • 对 AIX 安全专家的改进包括支持在 LDAP 中存储安全模板。
  • Secure-by-Default 安装只启用最少量的服务和包,从而在安装时保持比较高的安全水平。
  • 支持长密码。

在所有平台上都支持这些 AIX 6.1 创新,但是以下创新只在 POWER 6™ 体系结构上得到支持:应用程序存储键、内核存储键、自动调整的页面大小、固件辅助转储和硬件十进制浮点。大多数 IBM POWER 管理员很喜欢 AIX 6.1,已经开始把它投入生产环境了。下面讨论 AIX 6.1 的哪些特性让它如此受欢迎,并与 Solaris 和 HP-UX 的最新版本做比较。

首先是工作负载分区和动态应用迁移。Solaris 有区和容器,它们在某些方面与工作负载分区相似,但是没有实现 WPAR 的某些功能。可以在不停止分区运行的情况下把工作负载分区上的工作负载从一个系统转移到另一个系统,其他 UNIX 版本都无法这样做。这为什么很重要?因为这可以在计划内停机期间保持系统正常运行,从而提高可用性。系统管理员甚至操作员(通过 WPAR 管理员)可以把这些虚拟操作系统分区转移到其他系统,而不需要停机。这还有助于实现绿色计算,在非高峰时间段操作员可以把分区从利用率不高的机器转移到其他机器,然后关闭空闲的机器。这个特性可以帮助公司节省大量成本,同时对环境有好处。在这里讨论的所有创新中,AIX WPAR 和动态应用程序可移动性显然是最重要的。


虚拟化功能

现在,我们比较一下这三种操作系统提供的虚拟化功能。

HP-UX

  • nPartitions:这些是硬分区,在某些方面与 SUN DSD 相似。与 SUN DSD 不同的是,它可以在其他分区在线的情况下为一个分区提供服务。它们还支持多个操作系统,比如 HP-UX、VMS、Linux® 和 Windows®,但是这只适用于 Itanium 处理器,不适用于 PA-RISC。与 Solaris 相似,它们只能用于高端系统,而且不支持在不重新引导的情况下转移资源。
  • vPars:这些是单独的操作系统实例,它们可以驻留在 nPartition 或物理机器中。它们允许根据需求的变化在分区之间动态地转移 CPU 和 RAM 资源。一定要注意,不能在分区之间共享或转移存储资源。
  • Integrity Virtual Machines:它们允许在一个分区上有多个单独的访客(guest)实例,访客实例是完全隔离的环境。它们允许分区有自己的操作系统拷贝。在 HP 或 Sun 提供的所有虚拟化特性中,这个特性最接近 IBM 的 PowerVM™。它的粒度实际上比 PowerVM 提供的粒度更细,可以把机器划分成 1/20 的微分区。主要缺点是可伸缩性不太好,只支持最多 4 个 CPU 和 64GB 内存。其他限制包括在系统运行时不能转移存储适配器,也不能让进程只使用单一分区。
  • Resource Partitions:这相当于 Solaris 容器和 AIX WPAR。

在这三家硬件厂商中,只有 IBM 具有单一的整合的技术和愿景。另外两家采用多种战略,即使是最有经验的系统用户,往往也会被搞糊涂。IBM 只提供 PowerVM。与 HP 和 Sun 提供的任何特性相比,它的可伸缩性更好、更新颖,可以转移正在运行的分区。IBM 有 40 年的虚拟化经验(包括大型机),这确保 PowerVM 具有很好的稳定性。最后,它的特性和功能能够扩展到整个 POWER 产品系列。这是 HP 和 Sun 的严重缺点,HP 和 Sun 的产品只适用于低端机型、高端机型和/或特定的体系结构。

Solaris

Sun 采用多种方法在 Solaris 上实现虚拟化:

  • 容器或区:这个特性允许在一个 Solaris 内核实例中运行多个虚拟操作系统。这是操作系统虚拟化的一种形式,与 AIX 6.1 的 WPAR 相似。
  • xVM 服务器:这个在 2008 年 2 月引入的创新是一个基于 Xen 和系统管理程序的解决方案,可以在 x86 机器上的 Solaris 中运行。在 Sparc 上,它仍然基于逻辑域。
  • 逻辑域 (LDOM):这允许同时运行多个操作系统。实际上,它有许多问题,包括可伸缩性差、微分区功能有限制而且不支持在系统之间进行动态分配。另外,它只能在低端 SPARC 服务器上运行。
  • 硬件分区 (DSD):这在某些方面与 IBM 的逻辑分区(不属于 PowerVM)相似。硬件分区不具备真正的虚拟化功能,因为不能在分区之间共享资源。

AIX

PowerVM 的虚拟化基于 IBM 的虚拟化系统管理程序战略。它包括以下特性:

  • 微分区:这个特性允许把一个 POWER CPU 划分为最多 10 个逻辑分区,每个分区使用一个 CPU 的 1/10。通过使用不封顶分区 (uncapped partition),它还允许系统的计算能力超过已经分配给分区的标称计算能力。
  • 共享处理器池:这个特性允许虚拟分区连接到共享池,可以随着需求的增长获取更多资源。在需求低时,分区把资源返回给共享处理器池。
  • 虚拟 I/O 服务器。这定义一种特殊的分区,允许以 Shared Ethernet 和 Virtual SCSI 的形式共享 I/O。
  • 动态应用迁移。这个创新允许把正在运行的分区从一台机器转移到另一台机器。这让系统能够在计划内停机期间正常运行,从而提高系统的可用性。这个特性只能在 POWER 6 上使用。
  • 共享专用计算能力。这个特性让分区可以把专用的处理器提供给共享处理器池。

连网

本节比较 HP-UX、Solaris 和 AIX 上的连网配置并在这三种系统上配置默认路由器。

HP-UX

在安装之后第一次引导 HP-UX 系统时,运行 /sbin/set_parms 程序。以后还可以通过 set_parms initial 命令运行它。这个程序用来配置系统主机名、IP 地址和其他网络参数。我们来运行它:# set_parms initial(清单 1)。

清单 1. 运行 set_parms 程序
_______________________________________________________________________________

                       Welcome to HP-UX!

Before using your system, you will need to answer a few questions.

The first question is whether you plan to use this system on a network.

Answer "yes" if you have connected the system to a network and are ready
to link with a network.

Answer "no" if you:

     * Plan to set up this system as a standalone (no networking).

     * Want to use the system now as a standalone and connect to a
       network later.
_______________________________________________________________________________

Are you ready to link this system to a network?

Press [y] for yes or [n] for no, then press [Enter]


Do you wish to use DHCP to obtain networking information?

Press [y] for yes or [n] for no, then press [Enter]

然后,还要输入 IP 地址并添加其他网络参数。

我们来配置一个以太网卡。在安装 LAN 卡之后,运行 ioscan(见清单 2)。

清单 2. 运行 ioscan
# ioscan -fnC lan
Class     I  H/W Path  Driver S/W State   H/W Type     Description
===================================================================
lan       0  0/0/1/0   iether   CLAIMED     INTERFACE    HP  PCI/PCI-X 1000Base-T
#

现在看看 IP 地址,这使用 netstat 配置(见清单 3)。

清单 3. 使用 netstat 配置 IP 地址
# netstat -in
Name      Mtu  Network         Address         Ipkts      Ierrs Opkts        Oerrs Coll
lan0      1500 15.170.178.0    15.170.178.24   32657      0     24500        0     0
lo0      32808 127.0.0.0       127.0.0.1       131689     0     131689       0     0

然后,我们就可以清楚地看到 lan0 与 15.170.178.2 相关联(见清单 4)。

清单 4. 检查 lan0 关联
# ifconfig lan0
lan0: flags=1843<UP,BROADCAST,RUNNING,MULTICAST,CKO>
        inet 15.170.178.24 netmask ffffff80 broadcast 15.170.178.127

接下来,要配置默认路由器。首先需要修改这个文件:/etc/rc.config.d/netconf。这个 netconf 文件存储配置值(见清单 5)。

清单 5. 检查 netconf 文件中的配置值
# more /etc/rc.config.d/netconf
# netconf:  configuration values for core networking subsystems
#
# @(#) netconf $Date: 2007/10/05 20:09:28 $Revision: r11.31/1 PATCH_11.31 (PHNE_
36281)
#
# HOSTNAME:           Name of your system for uname -S and hostname
#
# OPERATING_SYSTEM:   Name of operating system returned by uname -s
#                     ---- DO NOT CHANGE THIS VALUE ----
#
# LOOPBACK_ADDRESS:   Loopback address
#                     ---- DO NOT CHANGE THIS VALUE ----
#

HOSTNAME="vital24.testdrive.hp.com"
OPERATING_SYSTEM=HP-UX
LOOPBACK_ADDRESS=127.0.0.1

DEFAULT_INTERFACE_MODULES=""

INTERFACE_NAME[0]=lan0
IP_ADDRESS[0]=15.170.178.24
DHCP_ENABLE[0]=1
SUBNET_MASK[0]=255.255.255.128
ROUTE_MASK[0]=0.0.0.0
ROUTE_GATEWAY[0]=15.170.178.126
BROADCAST_ADDRESS[0]=""
ROUTE_COUNT[0]=1
ROUTE_DESTINATION[0]=default

然后,使用 route 命令添加新的路由:# route add default 15.170.178.126 1

为了启用新的路由,需要启动服务并启用路由(见清单 6)。

清单 6. 启动服务并启用路由
/sbin/init.d inetd start
/sbin/init.d net start

现在检查 SAM,它与 IBM 的 SMIT 相似。尽管它不如 SMIT 那么强大,但是 HP 至少提供了基于文本的菜单系统。

清单 7. HP 的 SAM
# sam

                   HP-UX System Management Homepage (Text User Interface)
                                        SMH
---------------------------------------------------------------------------------
 a - Auditing and Security
 c - Auditing and Security Attributes Configuration(new)
 d - Peripheral Devices
 e - Resource  Management
 f - Disks and File Systems
 g - Display
 k - Kernel Configuration
 l - Printers and Plotters(new)
 m - Event Monitoring Service
 n - Networking and Communications
 p - Printers and Plotters
 s - Software Management
 u - Accounts for Users and Groups

接下来,导航到 Networking and Communications >Network Interfaces Configuration>Network Interface Cards。下面是输出(见清单 8)。

清单 8. 网络接口卡的输出
Interface  Subsystem  Hardware   Interface  Interface    IPv4 Address   IPv6 Address
Name                  Path       State      Type
----------------------------------------------------------------------------------------
lan0       iether     0/0/1/0    up         1000Base-T   15.170.178.24  Not Configured

在 HP-UX 上配置连网的方法相当明了,但是有时候有点儿麻烦。

Solaris

在 Solaris 上,需要使用文本文件配置连网;没有与 SAM 或 SMIT 相似的界面。首先在 /etc/nodename 中检查机器的主机名(见清单 9)。

清单 9. 检查机器的主机名
# more /etc/nodename
ezqspc03z1

还应该使用 ifconfig 收集信息(见清单 10)。

清单 10. 使用 ifconfig 收集信息
# ifconfig -a
lo0:9: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> 
  mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bge0:9: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
  mtu 1500 index 2
        inet 10.24.116.121 netmask ffffff00 broadcast 10.24.116.255

使用 plumb 参数启用卡。

例如,用 # ifconfig bge0 plumb 启用 bge0。

# ifconfig bge0 up 启动接口。

要想让修改持久有效,需要编辑以下文件:

  • /etc/hosts
  • /etchostname/bge0(针对 bge0 接口)
  • /etc/netmasks
  • /etc/defaultrouter

现在修改默认路由。在 Solaris 中修改默认路由需要执行以下步骤:

  1. 首先需要编辑 /etc/defaultrouter 文件。
  2. 删除默认路由器的 IP 地址:# route delete theipadress
  3. 分配新的地址:# route add default newipadress

尽管我有时候喜欢编辑文本文件,但是大多数管理员更喜欢通过菜单驱动的系统配置连网,这样更灵活、更方便。另外,在使用 Solaris 时,需要探测接口 —— 其他 UNIX 操作系统不需要这么做。IBM 和 HP 都有系统管理菜单系统,但是 IBM 的 SMIT 更强大。

AIX

在 AIX 上,在配置连网时通常使用 SMIT。列出以太网适配器的方法如下:# smit devices >communication >Ethernet adapter>adapter>list all Ethernet adapters(见清单 11)。

清单 11. 列出以太网适配器
                                COMMAND STATUS

Command: OK            stdout: yes           stderr: no

Before command completion, additional instructions may appear below.

ent0 Available  Virtual I/O Ethernet Adapter (l-lan)
ent1 Available  Virtual I/O Ethernet Adapter (l-lan)



F1=Help             F2=Refresh          F3=Cancel           F6=Command
F8=Image            F9=Shell            F10=Exit            /=Find
n=Find Next

要想进行修改,需要找到 Change/Show characteristics of an Ethernet adapter(见清单 12)。

清单 12. Change/Show characteristics of an Ethernet adapter
              Change / Show Characteristics of an Ethernet Adapter

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[TOP]                                                   [Entry Fields]
  Ethernet Adapter                                    ent0
  Description                                         Virtual I/O Ethernet >
  Status                                              Available
  Location
  Enable ALTERNATE ETHERNET address                   no                     +
  ALTERNATE ETHERNET address                         [0x000000000000]        +
  Minimum Tiny Buffers                               [512]                   +#
  Maximum Tiny Buffers                               [2048]                  +#
  Minimum Small Buffers                              [512]                   +#
  Maximum Small Buffers                              [2048]                  +#
  Maximum Medium Buffers                             [128]                   +#
  Maximum Medium Buffers                             [256]                   +#
  Minimum Large Buffers                              [24]                    +#
[MORE...8]

在 AIX 上,也可以使用 ifconfig。但是,用 ifconfig 所做的修改并不保存在 Object Data Manager (ODM) 中,在重新引导时会丢失。因此,ifconfig 不是首选方法;在 AIX 上处理网络时应该坚持使用 SMIT。

要想在 AIX 上添加默认路由,只需访问 SMIT>TCP/IP Minimum Configuration&Startup 并单击您的接口,就会出现清单 13 所示的屏幕。

清单 13. 在 AIX 上添加默认路由
                        Minimum Configuration & Startup

To Delete existing configuration data, please use Further Configuration menus

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[TOP]                                                   [Entry Fields]
* HOSTNAME                                           [lpar21ml162f_pub]
* Internet ADDRESS (dotted decimal)                  [172.29.141.94]
  Network MASK (dotted decimal)                      [255.255.192.0]
* Network INTERFACE                                   en0
  NAMESERVER
           Internet ADDRESS (dotted decimal)         [10.153.50.201]
           DOMAIN Name                               [vlp.com]
  Default Gateway
       Address (dotted decimal or symbolic name)     [172.29.128.13]
       Cost                                          [0]                      #
       Do Active Dead Gateway Detection?              no                     +
[MORE...2]

F1=Help             F2=Refresh          F3=Cancel           F4=List
F5=Reset            F6=Command          F7=Edit             F8=Image

然后,修改默认网关并按回车键两次(见清单 14)。

清单 14. 修改默认网关
                                 COMMAND STATUS

Command: OK            stdout: yes           stderr: no

Before command completion, additional instructions may appear below

en0
lpar21ml162f_pub
inet0 changed
en0 changed
inet0 changed

AIX 提供的连网配置方法非常简单。


性能调优

本节对比 HP-UX、Solaris 和 AIX 上的系统调优方法。

HP-UX

要记住,HP-UX 在 Itanium 和 PA-RISC 上运行。因此,与运行在 PA-RISC 上编译的程序相比,Integrity 服务器在运行针对 Itanium 编译的程序时性能更好。它可以以模拟(emulation)模式运行,但是运行速度没那么快。HP-UX 11.31 具有每线程锁,因此 HP-UX 的最新版本的性能显著提高了 —— 与 11iV2 相比,最多能够提高 30%。在磁盘 I/O 方面,建议使用块大小为 8 kb 的 VxFS。还可以通过 HP Online JFS 获得更好的性能。

在 SAM 中查看要调整的 kctune 和 kcweb 参数。

下面是 kctune 的参数列表(见清单 15)。

清单 15. kctune 的参数列表
# kctune
Tunable                           Value  Expression  Changes
NSTREVENT                            50  Default
NSTRPUSH                             16  Default
NSTRSCHED                             0  Default
STRCTLSZ                           1024  Default
STRMSGSZ                              0  Default
acctresume                            4  Default
acctsuspend                           2  Default
aio_iosize_max                        0  Default     Immed
aio_listio_max                      256  Default     Immed
aio_max_ops                        2048  Default     Immed
aio_monitor_run_sec                  30  Default     Immed
aio_physmem_pct                      10  Default     Immed
aio_prio_delta_max                   20  Default     Immed
aio_proc_max                          0  Default     Immed
aio_proc_thread_pct                  70  Default     Immed
aio_proc_threads                   1024  Default     Immed
aio_req_per_thread                    1  Default     Immed
allocate_fs_swapmap                   0  Default
alwaysdump                            0  Default     Immed
audit_memory_usage                    5  Default     Immed
audit_track_paths                     0  Default     Auto
base_pagesize                         4  Default
copy_on_write                         1  Default     Immed
core_addshmem_read                    0  Default     Immed
core_addshmem_write                   0  Default     Immed
create_fastlinks                      0  Default
default_disk_ir                       0  Default
diskaudit_flush_interval              5  Default     Immed
dlpi_max_ub_promisc                   1  Default     Immed
dma32_pool_size                 4194304  4194304
dmp_rootdev_is_vol                    0  Default
dmp_swapdev_is_vol                    0  Default
dnlc_hash_locks                     512  Default
dontdump                              0  Default     Immed
dst                                   1  Default
dump_compress_on                      1  Default     Immed
dump_concurrent_on                    1  Default     Immed
executable_stack                      0  Default     Immed
expanded_node_host_names              0  Default     Immed
fcache_fb_policy                      0  Default     Immed
fcache_seqlimit_file                100  Default     Immed
fcache_seqlimit_system              100  Default     Immed
fcd_disable_mgmt_lun                  0  Default     Immed
fclp_ifc_disable_mgmt_lun             0  Default     Immed
filecache_max                1018863616  Default     Auto
filecache_min                 101883904  Default     Auto
fr_statemax                      800000  Default
fr_tcpidletimeout                 86400  Default
fs_async                              0  Default
fs_symlinks                          20  Default     Immed
ftable_hash_locks                    64  Default
gvid_no_claim_dev                     0  Default
hires_timeout_enable                  0  Default     Immed
hp_hfs_mtra_enabled                   1  Default
intr_strobe_ics_pct                  80  Default     Immed
io_ports_hash_locks                  64  Default
ipf_icmp6_passthru                    0  Default
ipl_buffer_sz                      8192  Default
ipl_logall                            0  Default
ipl_suppress                          1  Default
ipmi_watchdog_action                  0  Default     Immed
ksi_alloc_max                     33600  Default     Immed
ksi_send_max                         32  Default
lcpu_attr                             0  Default     Auto
max_acct_file_size              2560000  Default     Immed
max_async_ports                    4096  Default     Immed
max_mem_window                        0  Default     Immed
max_thread_proc                    1100  1100        Immed
maxdsiz                      1073741824  Default     Immed
maxdsiz_64bit                4294967296  Default     Immed
maxfiles                           2048  Default
maxfiles_lim                       4096  Default     Immed
maxrsessiz                      8388608  Default
maxrsessiz_64bit                8388608  Default
maxssiz                         8388608  Default     Immed
maxssiz_64bit                 268435456  Default     Immed
maxtsiz                       100663296  Default     Immed
maxtsiz_64bit                1073741824  Default     Immed
maxuprc                             256  Default     Immed
mca_recovery_on                       0  Default     Auto
msgmbs                                8  Default     Immed
msgmnb                            16384  Default     Immed
msgmni                              512  Default     Immed
msgtql                             1024  Default     Immed
ncdnode                             150  Default
nclist                             8292  Default
ncsize                             8976  Default
nflocks                            4096  Default     Auto
nfs2_max_threads                      8  Default     Immed
nfs2_nra                              4  Default     Immed
nfs3_bsize                        32768  Default     Immed
nfs3_do_readdirplus                   1  Default     Immed
nfs3_jukebox_delay                 1000  Default     Immed
nfs3_max_threads                      8  Default     Immed
nfs3_max_transfer_size          1048576  Default     Immed
nfs3_max_transfer_size_cots     1048576  Default     Immed
nfs3_nra                              4  Default     Immed
nfs4_bsize                        32768  Default     Immed
nfs4_max_threads                      8  Default     Immed
nfs4_max_transfer_size          1048576  Default     Immed
nfs4_max_transfer_size_cots     1048576  Default     Immed
nfs4_nra                              4  Default     Immed
nfs_portmon                           0  Default     Immed
ngroups_max                          20  Default     Immed
ninode                             8192  Default
nkthread                           8416  Default     Immed
nproc                              4200  Default     Immed
npty                                 60  Default
nstrpty                              60  Default
nstrtel                              60  Default
nswapdev                             32  Default
nswapfs                              32  Default
numa_policy                           0  Default     Immed
pa_maxssiz_32bit               83648512  Default
pa_maxssiz_64bit              536870912  Default
pagezero_daemon_enabled               1  Default     Immed
patch_active_text                     1  Default     Immed
pci_eh_enable                         1  Default
pci_error_tolerance_time           1440  Default     Immed
process_id_max                    30000  Default     Auto
process_id_min                        0  Default     Auto
pwr_idle_ctl                          0  Default     Auto
remote_nfs_swap                       0  Default
rng_bitvals                  9876543210  Default
rng_sleeptime                         2  Default
rtsched_numpri                       32  Default
sched_thread_affinity                 6  Default     Immed
scroll_lines                        100  Default
secure_sid_scripts                    1  Default     Immed
semaem                            16384  Default
semmni                             2048  Default
semmns                             4096  Default
semmnu                              256  Default
semmsl                             2048  Default     Immed
semume                              100  Default
semvmx                            32767  Default
shmmax                       1073741824  Default     Immed
shmmni                              400  Default     Immed
shmseg                              300  Default     Immed
streampipes                           0  Default
swchunk                            2048  Default
sysv_hash_locks                     128  Default
tcphashsz                             0  Default
timeslice                            10  Default
timezone                            420  Default
uname_eoverflow                       1  Default     Immed
vnode_cd_hash_locks                 128  Default
vnode_hash_locks                    128  Default
vol_checkpt_default               10240  Default
vol_dcm_replay_size              262144  Default
vol_default_iodelay                  50  Default
vol_fmr_logsz                         4  Default
vol_max_bchain                       32  Default
vol_max_nconfigs                     20  Default
vol_max_nlogs                        20  Default
vol_max_nmpool_sz               4194304  Default     Immed
vol_max_prm_dgs                    1024  Default
vol_max_rdback_sz               4194304  Default     Immed
vol_max_vol                     8388608  Default
vol_max_wrspool_sz              4194304  Default     Immed
vol_maxio                           256  Default
vol_maxioctl                      32768  Default
vol_maxkiocount                    2048  Default
vol_maxparallelio                   256  Default
vol_maxspecialio                    256  Default
vol_maxstablebufsize                256  Default
vol_min_lowmem_sz                532480  Default     Immed
vol_mvr_maxround                    256  Default
vol_nm_hb_timeout                    10  Default
vol_rootdev_is_vol                    0  Default
vol_rvio_maxpool_sz             4194304  Default     Immed
vol_subdisk_num                    4096  Default
vol_swapdev_is_vol                    0  Default
vol_vvr_transport                     1  Default
vol_vvr_use_nat                       0  Default
volcvm_cluster_size                  16  Default
volcvm_smartsync                      1  Default
voldrl_max_drtregs                 2048  Default
voldrl_min_regionsz                 512  Default
voliomem_chunk_size               65536  Default
voliomem_maxpool_sz             4194304  Default
voliot_errbuf_dflt                16384  Default
voliot_iobuf_default               8192  Default
voliot_iobuf_limit               131072  Default
voliot_iobuf_max                  65536  Default
voliot_max_open                      32  Default
volpagemod_max_memsz               6144  Default     Immed
volraid_rsrtransmax                   1  Default
vps_ceiling                          16  Default     Immed
vps_chatr_ceiling               1048576  Default     Immed
vps_pagesize                         16  Default     Immed
vx_maxlink                        32767  Default
vx_ninode                             0  Default     Immed
vxfs_bc_bufhwm                        0  Default     Immed
vxfs_ifree_timelag                    0  Default     Immed
vxtask_max_monitors                  32  Default

可以看到有两种内核参数。一种立即生效 (immed),另一种在重新引导时生效 (Default)。

可以使用 kctune 命令查看一个参数。只需输入清单 16 这样的 kctune 命令。

清单 16. 使用 kctune
# kctune vx_ninode
Tunable    Value  Expression  Changes
vx_ninode      0  Default     Immed
#

我喜欢使用 -B 选项,这会在做修改时备份原来的值。我们来修改一个参数(见清单 17)。

清单 17. 使用 -B 选项
# kctune -B vps_ceiling=32
       * The automatic 'backup' configuration has been updated.
       * Future operations will update the backup without prompting.
       * The requested changes have been applied to the currently
         running configuration.
Tunable                Value  Expression  Changes
vps_ceiling  (before)     16  Default     Immed
             (now)        32  32

现在看看 SAM。在清单 18 所示的内核配置部分中,可以看到内核可调项。

清单 18. 内核配置部分
 SMH->Kernel Configuration
---------------------------------------------------------------------------------
    t - Tunables                        View or modify kernel tunables

    m - Modules                         View or modify kernel modules and drivers

    a - Alarms                          View or modify alarms for kernel tunables

    l - Log Viewer                      View the changes made to kernel tunables 
                                        or modules

    u - Usage                           View usage of kernel tunables

    c - Manage Configuration            View the  options available to manage 
                                        configurations

    b - Restore Previous Boot Values    Restores Previous Boot Values for Tunables 
                                        And Modules

                            SMH->Kernel Configuration->Usage
                                  Usage Monitoring is On
--------------------------------------------------------------------------
Tunable                    Current Usage             Current Setting
==========================================================================
filecache_max              76054528                  1018863616
maxdsiz                    11403264                  1073741824
maxdsiz_64bit              42663936                  4294967296
maxfiles_lim               38                        4096
maxssiz                    786432                    8388608
maxssiz_64bit              98304                     268435456
maxtsiz                    35823616                  100663296
maxtsiz_64bit              1409024                   1073741824
maxuprc                    3                         256
max_thread_proc            21                        1100
msgmni                     2                         512
msgtql                     0                         1024
nflocks                    27                        4096
ninode                     727                       8192
nkthread                   330                       8416
nproc                      151                       4200
npty                       0                         60
nstrpty                    1                         60
nstrtel                    0                         60
nswapdev                   1                         32
nswapfs                    0                         32
semmni                     28                        2048
semmns                     146                       4096
shmmax                     17868904                  1073741824
shmmni                     7                         400
shmseg                     3                         300

除了菜单驱动的系统 SAM 之外,HP-UX 还允许通过命令行执行调优任务。总的来说,我喜欢 HP-UX 使用的性能调优方法,但是我认为 kctune 中的东西太多了。AIX 是按领域组织调优参数的。

Solaris

与 HP-UX 和 AIX 不同,在 Solaris 上要使用文本文件完成大多数工作。主要文件是 /etc/system。在转移到新版本时,建议先使用一个空文件,只添加第三方应用程序需要的可调项。对 /etc/system 所做的所有修改在重新引导后生效。

我们在 /etc/system 中做一个修改:set nfs:nfs_nra=4

这个修改为使用 NFS version 2 软件挂载的文件系统设置预读取块的数量。Solaris 10 中的一个重要变化是,许多 Solaris 内核参数现在已经被资源控制取代。修改资源控制的命令是 prctl 命令。例如,现在通过资源控制处理所有共享内存和信号量。这意味着不再需要在 /etc/system 中设置与共享内存和信号量(即 sem)相关的任何条目。以 Oracle 调优为例。在以前的版本中,在 /etc/system 中配置 SHMMAX,然后重新引导。现在使用 prctl。这一变化的优点是修改可以立即生效,不需要重新引导。缺点是在重新引导时信息会丢失,所以需要在用户配置文件中输入信息。把 max-shm-memory 的值改为 6 GB 的命令是:# prctl -n project.max-shm-memory -v 6gb -r -i project user.root

其他调优方法包括:

  • 使用 kmdb,内核调试器
  • 使用 mdb,模块化调试器
  • 使用 ndd 配置 TCP/IP 参数
  • 使用 /etc/default 调整 NCA 参数
  • 使用 prtctl 修改资源控制

通过 ndd 进行调优的示例如下:# ndd -get /dev/tcp tcp_time_wait_interval

怎么调整 NFS 呢?这些参数也在 /etc/system 中,包括 nfs_cots_timeo、nfs_allow_preepoch_time 和 nfs4_pathconf_disable_cache。

我知道一些管理员喜欢编辑文本文件,但是一般来说,大多数管理员更喜欢 HP 或 IBM 提供的简便的调优系统。尽管 prtctl 在某些方面有帮助,但是也会带来混乱,因为在一些方面要使用 prtctl,对于其他方面仍然使用 /etc/system。

AIX

在 AIX 上,有几个调优命令,分别用于 I/O(对于网络和磁盘使用不同的实用程序)、内存和 CPU 的调优:ioo、no、vmo 或 schedo。使用 nfso 调整 nfs 子系统。AIX 6.1 还有一些性能改进。比较重要的改进包括默认参数更符合日常工作的情况,并且加入受限制的可调参数,这有助于防止管理员把东西弄乱。最近的改进包括:

  • 改进了以下领域的默认可调项:vmo、ioo、aio、no、nfso 和 schedo。
  • 在文件系统方面,修改了 Enhanced Journaling File System,允许挂载 JFS2 f/s 而不启用日志记录。这确实可以提高性能,但是我建议不要使用它,因为这会导致可用性问题。
  • I/O pacing 可以限制针对一个文件的未完成 I/O 请求数量,这可以有效地防止磁盘 I/O 密集型进程。AIX 6.1 在默认情况下启用 I/O pacing。在 AIX 5.3 中,需要显式地启用这个特性。
  • AIO 是一个 AIX 软件子系统,它允许进程发出 I/O 请求而不必等待 I/O 完成。在 AIX 6.1 中,在默认情况下装载 AIO 子系统,但是不启动。当应用程序发出 AIO I/O 请求时,会自动地启动它。另外,原来用来配置 AIO 服务器的 aioo 命令已经取消了。
  • 引入了一个新的网络缓存守护进程,它可以提高使用 DNS 解析名称时的性能。使用 AIX 的 System Resource Controller (SRC) 启动它,使用 netcdctrol 实用程序进行管理。

我们来做一些修改。

下面的命令把页面设置为 16777216 字节的大页面,这在 Oracle 环境中尤其有用:# vmo -r -o lgpg_size=16777216 lgpg_regions=256

我们来看看虚拟内存。AIX 虚拟内存管理器控制机器上的所有内存,而不只是虚拟内存。在 UNIX 系统上,减少分页数量总是很重要的。如何让 AIX 虚拟内存管理器减少分页数量呢?进程在处理计算信息时使用计算内存,它们是临时的内存段。它们没有持久的磁盘存储位置。另一方面,文件内存使用持久存储,而不是内存段。您可能更希望将文件内存页存储到磁盘,而不是计算内存。可以使用虚拟内存设置中的几个参数实现这个目的。我们需要调整 minperm、maxperm 和 maxclient。为了避免 AIX 对工作存储进行分页并利用数据库缓存,需要把 maxperm 设置为比较高的值(大于 90)并确保 lru_file_repage=0。这个参数表示是否应该考虑 VMM re-page 计数和它应该使用什么类型的内存。默认设置是 1,需要把它改为 0。这要使用 vmo 命令来完成。把这个参数设置为 0,就是告诉 VMM 希望它只置换文件页面,而不置换计算页面。在 AIX 6.1 中,minperm、maxperm 和 maxclient 已经设置为适当的值。在 AIX 5.3 中,需要执行清单 19 所示的命令。

清单 19. 在 AIX 5.3 中设置 minperm、maxperm 和 maxclient 值
# vmo -p -o minperm%=3
# vmo -p -o maxperm%=97
# vmo -p -o maxclient%=97

IBM 在性能调优方面占据优势,到目前为止它的性能调优方法是最直观的。在向自调优系统发展方面,HP-UX 在近几年进步很大,但是还不够。Solaris 通过 prtctl 引入了一些积极的改进,但是要配置的东西还是太多。对于 AIX,就简单多了。用 vmo 调整内存,用 ioo 调整磁盘/IO,用 schedo 调整 CPU,用 no 调整网络,用 nfso 调整 nfs。没法再简单了!另外,AIX 6.1 中对调优参数的改进进一步扩大了 AIX 的优势。


结束语

本文比较了 AIX 6.1、HP-UX (11Iv3) 和 Solaris (10/08) 的最新版本中的创新和特性/功能改进。还讨论了执行某些任务的命令和方法的差异,比如配置连网和性能调优。此外,还总结了这三种 UNIX 系统的虚拟化特性及其基本差异。您自己决定最喜欢哪一种,但是根据我的比较,AIX 在所有方面都很出色。HP-UX 与 AIX 最为相似,而 Solaris 主要通过文本文件方式进行系统管理。

参考资料

学习

  • AIX 6 工作负载分区和动态应用程序迁移:这份白皮书介绍 WPAR 概念,提供实际的使用信息,讲解正确地设置动态应用程序可移动性功能的步骤。
  • developerWorks AIX 6 资源中心:你可以从这里找到更多和 AIX 6 相关的资源。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • 阅读 IBM 白皮书 Improving Database Performance with AIX concurrent I/O
  • 了解 IBM System p and AIX InfoCenter 提供的 AIX memory affinity support
  • Redbook Database Performance Tuning on AIX 帮助系统设计师、系统管理员和数据库管理员设计、规划、实现、维护、监视和调整 AIX 上的关系数据库管理系统,实现最佳性能。
  • developerWorks 技术活动网络广播:随时关注 developerWorks 技术活动和网络广播。
  • Podcasts:收听 Podcast 并了解 IBM 技术专家的最新想法。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=407409
ArticleTitle=AIX 6.1、Solaris 10 和 HP-UX 与 System p
publish-date=07092009