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

来源:百度文库 编辑:神马文学网 时间:2024/04/25 03:29:47
比较三种主要的商业 UNIX 操作系统

文档选项

打印本页

将此页作为电子邮件发送

英文原文
级别: 中级
Ken Milberg, 作家/网站专家, Future Tech
2009 年 7 月 09 日
近几年,HP、Sun 和 IBM® 都发布了他们的商业 UNIX® 操作系统的新版本。本文对比这些版本中的一些创新。讨论执行某些任务的方法的差异,比如连网和性能调优。另外,讨论这三种操作系统在虚拟化方面的差异。
您可以访问“AIX 6 资源中心”了解更多和 AIX 6 相关的资源:AIX 6 资源中心
 
首先讨论这三种主要商业 UNIX 操作系统的最新版本中的新特性和创新。
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 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 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 和动态应用程序可移动性显然是最重要的。




回页首
现在,我们比较一下这三种操作系统提供的虚拟化功能。
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 的产品只适用于低端机型、高端机型和/或特定的体系结构。
Sun 采用多种方法在 Solaris 上实现虚拟化:
容器或区:这个特性允许在一个 Solaris 内核实例中运行多个虚拟操作系统。这是操作系统虚拟化的一种形式,与 AIX 6.1 的 WPAR 相似。 xVM 服务器:这个在 2008 年 2 月引入的创新是一个基于 Xen 和系统管理程序的解决方案,可以在 x86 机器上的 Solaris 中运行。在 Sparc 上,它仍然基于逻辑域。 逻辑域 (LDOM):这允许同时运行多个操作系统。实际上,它有许多问题,包括可伸缩性差、微分区功能有限制而且不支持在系统之间进行动态分配。另外,它只能在低端 SPARC 服务器上运行。 硬件分区 (DSD):这在某些方面与 IBM 的逻辑分区(不属于 PowerVM)相似。硬件分区不具备真正的虚拟化功能,因为不能在分区之间共享资源。
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 系统时,运行 /sbin/set_parms 程序。以后还可以通过 set_parms initial 命令运行它。这个程序用来配置系统主机名、IP 地址和其他网络参数。我们来运行它:# set_parms initial(清单 1)。
_______________________________________________________________________________ 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)。
# 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)。
# 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)。
# ifconfig lan0 lan0: flags=1843 inet 15.170.178.24 netmask ffffff80 broadcast 15.170.178.127
接下来,要配置默认路由器。首先需要修改这个文件:/etc/rc.config.d/netconf。这个 netconf 文件存储配置值(见清单 5)。
# 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)。
/sbin/init.d inetd start /sbin/init.d net start
现在检查 SAM,它与 IBM 的 SMIT 相似。尽管它不如 SMIT 那么强大,但是 HP 至少提供了基于文本的菜单系统。
# 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)。
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 上,需要使用文本文件配置连网;没有与 SAM 或 SMIT 相似的界面。首先在 /etc/nodename 中检查机器的主机名(见清单 9)。
# more /etc/nodename ezqspc03z1
还应该使用 ifconfig 收集信息(见清单 10)。
# 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 中修改默认路由需要执行以下步骤:
首先需要编辑 /etc/defaultrouter 文件。 删除默认路由器的 IP 地址:# route delete theipadress。 分配新的地址:# route add default newipadress。
尽管我有时候喜欢编辑文本文件,但是大多数管理员更喜欢通过菜单驱动的系统配置连网,这样更灵活、更方便。另外,在使用 Solaris 时,需要探测接口 —— 其他 UNIX 操作系统不需要这么做。IBM 和 HP 都有系统管理菜单系统,但是 IBM 的 SMIT 更强大。
在 AIX 上,在配置连网时通常使用 SMIT。列出以太网适配器的方法如下:# smit devices >communication >Ethernet adapter>adapter>list all Ethernet adapters(见清单 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)。
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 所示的屏幕。
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)。
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 在 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)。
# 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 命令。
# kctune vx_ninode Tunable Value Expression Changes vx_ninode 0 Default Immed #
我喜欢使用 -B 选项,这会在做修改时备份原来的值。我们来修改一个参数(见清单 17)。
# 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 所示的内核配置部分中,可以看到内核可调项。
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 是按领域组织调优参数的。
与 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 上,有几个调优命令,分别用于 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 所示的命令。
# 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 主要通过文本文件方式进行系统管理。