pathfinder鞋子:AIX 6.1、Solaris 10 和 HP-UX 与 System p

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 02:12:16

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

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

文档选项

打印本页

将此页作为电子邮件发送

英文原文


级别: 中级

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

2009 年 7 月 09 日

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

您可以访问“AIX 6 资源中心”了解更多和 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                        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                        mtu 8232 index 1                        inet 127.0.0.1 netmask ff000000                        bge0:9: flags=1000843                        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 主要通过文本文件方式进行系统管理。