|
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 相关的资源:
|
|
首先讨论这三种主要商业 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 readyto 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 lanClass 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 -inName Mtu Network Address Ipkts Ierrs Opkts Oerrs Colllan0 1500 15.170.178.0 15.170.178.24 32657 0 24500 0 0lo0 32808 127.0.0.0 127.0.0.1 131689 0 131689 0 0 |
然后,我们就可以清楚地看到 lan0 与 15.170.178.2 相关联(见清单 4)。
清单 4. 检查 lan0 关联
# ifconfig lan0lan0: 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-UXLOOPBACK_ADDRESS=127.0.0.1DEFAULT_INTERFACE_MODULES=""INTERFACE_NAME[0]=lan0IP_ADDRESS[0]=15.170.178.24DHCP_ENABLE[0]=1SUBNET_MASK[0]=255.255.255.128ROUTE_MASK[0]=0.0.0.0ROUTE_GATEWAY[0]=15.170.178.126BROADCAST_ADDRESS[0]=""ROUTE_COUNT[0]=1ROUTE_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 AddressName 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/nodenameezqspc03z1 |
还应该使用 ifconfig 收集信息(见清单 10)。
清单 10. 使用 ifconfig 收集信息
# ifconfig -alo0:9: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000bge0: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 中修改默认路由需要执行以下步骤:- 首先需要编辑 /etc/defaultrouter 文件。
- 删除默认路由器的 IP 地址:# route delete theipadress。
- 分配新的地址:# 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 STATUSCommand: OK stdout: yes stderr: noBefore 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=CommandF8=Image F9=Shell F10=Exit /=Findn=Find Next |
要想进行修改,需要找到 Change/Show characteristics of an Ethernet adapter(见清单 12)。
清单 12. Change/Show characteristics of an Ethernet adapter
Change / Show Characteristics of an Ethernet AdapterType 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 & StartupTo Delete existing configuration data, please use Further Configuration menusType 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=ListF5=Reset F6=Command F7=Edit F8=Image |
然后,修改默认网关并按回车键两次(见清单 14)。
清单 14. 修改默认网关
COMMAND STATUSCommand: OK stdout: yes stderr: noBefore command completion, additional instructions may appear belowen0lpar21ml162f_pubinet0 changeden0 changedinet0 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 的参数列表
# kctuneTunable Value Expression ChangesNSTREVENT 50 DefaultNSTRPUSH 16 DefaultNSTRSCHED 0 DefaultSTRCTLSZ 1024 DefaultSTRMSGSZ 0 Defaultacctresume 4 Defaultacctsuspend 2 Defaultaio_iosize_max 0 Default Immedaio_listio_max 256 Default Immedaio_max_ops 2048 Default Immedaio_monitor_run_sec 30 Default Immedaio_physmem_pct 10 Default Immedaio_prio_delta_max 20 Default Immedaio_proc_max 0 Default Immedaio_proc_thread_pct 70 Default Immedaio_proc_threads 1024 Default Immedaio_req_per_thread 1 Default Immedallocate_fs_swapmap 0 Defaultalwaysdump 0 Default Immedaudit_memory_usage 5 Default Immedaudit_track_paths 0 Default Autobase_pagesize 4 Defaultcopy_on_write 1 Default Immedcore_addshmem_read 0 Default Immedcore_addshmem_write 0 Default Immedcreate_fastlinks 0 Defaultdefault_disk_ir 0 Defaultdiskaudit_flush_interval 5 Default Immeddlpi_max_ub_promisc 1 Default Immeddma32_pool_size 4194304 4194304dmp_rootdev_is_vol 0 Defaultdmp_swapdev_is_vol 0 Defaultdnlc_hash_locks 512 Defaultdontdump 0 Default Immeddst 1 Defaultdump_compress_on 1 Default Immeddump_concurrent_on 1 Default Immedexecutable_stack 0 Default Immedexpanded_node_host_names 0 Default Immedfcache_fb_policy 0 Default Immedfcache_seqlimit_file 100 Default Immedfcache_seqlimit_system 100 Default Immedfcd_disable_mgmt_lun 0 Default Immedfclp_ifc_disable_mgmt_lun 0 Default Immedfilecache_max 1018863616 Default Autofilecache_min 101883904 Default Autofr_statemax 800000 Defaultfr_tcpidletimeout 86400 Defaultfs_async 0 Defaultfs_symlinks 20 Default Immedftable_hash_locks 64 Defaultgvid_no_claim_dev 0 Defaulthires_timeout_enable 0 Default Immedhp_hfs_mtra_enabled 1 Defaultintr_strobe_ics_pct 80 Default Immedio_ports_hash_locks 64 Defaultipf_icmp6_passthru 0 Defaultipl_buffer_sz 8192 Defaultipl_logall 0 Defaultipl_suppress 1 Defaultipmi_watchdog_action 0 Default Immedksi_alloc_max 33600 Default Immedksi_send_max 32 Defaultlcpu_attr 0 Default Automax_acct_file_size 2560000 Default Immedmax_async_ports 4096 Default Immedmax_mem_window 0 Default Immedmax_thread_proc 1100 1100 Immedmaxdsiz 1073741824 Default Immedmaxdsiz_64bit 4294967296 Default Immedmaxfiles 2048 Defaultmaxfiles_lim 4096 Default Immedmaxrsessiz 8388608 Defaultmaxrsessiz_64bit 8388608 Defaultmaxssiz 8388608 Default Immedmaxssiz_64bit 268435456 Default Immedmaxtsiz 100663296 Default Immedmaxtsiz_64bit 1073741824 Default Immedmaxuprc 256 Default Immedmca_recovery_on 0 Default Automsgmbs 8 Default Immedmsgmnb 16384 Default Immedmsgmni 512 Default Immedmsgtql 1024 Default Immedncdnode 150 Defaultnclist 8292 Defaultncsize 8976 Defaultnflocks 4096 Default Autonfs2_max_threads 8 Default Immednfs2_nra 4 Default Immednfs3_bsize 32768 Default Immednfs3_do_readdirplus 1 Default Immednfs3_jukebox_delay 1000 Default Immednfs3_max_threads 8 Default Immednfs3_max_transfer_size 1048576 Default Immednfs3_max_transfer_size_cots 1048576 Default Immednfs3_nra 4 Default Immednfs4_bsize 32768 Default Immednfs4_max_threads 8 Default Immednfs4_max_transfer_size 1048576 Default Immednfs4_max_transfer_size_cots 1048576 Default Immednfs4_nra 4 Default Immednfs_portmon 0 Default Immedngroups_max 20 Default Immedninode 8192 Defaultnkthread 8416 Default Immednproc 4200 Default Immednpty 60 Defaultnstrpty 60 Defaultnstrtel 60 Defaultnswapdev 32 Defaultnswapfs 32 Defaultnuma_policy 0 Default Immedpa_maxssiz_32bit 83648512 Defaultpa_maxssiz_64bit 536870912 Defaultpagezero_daemon_enabled 1 Default Immedpatch_active_text 1 Default Immedpci_eh_enable 1 Defaultpci_error_tolerance_time 1440 Default Immedprocess_id_max 30000 Default Autoprocess_id_min 0 Default Autopwr_idle_ctl 0 Default Autoremote_nfs_swap 0 Defaultrng_bitvals 9876543210 Defaultrng_sleeptime 2 Defaultrtsched_numpri 32 Defaultsched_thread_affinity 6 Default Immedscroll_lines 100 Defaultsecure_sid_scripts 1 Default Immedsemaem 16384 Defaultsemmni 2048 Defaultsemmns 4096 Defaultsemmnu 256 Defaultsemmsl 2048 Default Immedsemume 100 Defaultsemvmx 32767 Defaultshmmax 1073741824 Default Immedshmmni 400 Default Immedshmseg 300 Default Immedstreampipes 0 Defaultswchunk 2048 Defaultsysv_hash_locks 128 Defaulttcphashsz 0 Defaulttimeslice 10 Defaulttimezone 420 Defaultuname_eoverflow 1 Default Immedvnode_cd_hash_locks 128 Defaultvnode_hash_locks 128 Defaultvol_checkpt_default 10240 Defaultvol_dcm_replay_size 262144 Defaultvol_default_iodelay 50 Defaultvol_fmr_logsz 4 Defaultvol_max_bchain 32 Defaultvol_max_nconfigs 20 Defaultvol_max_nlogs 20 Defaultvol_max_nmpool_sz 4194304 Default Immedvol_max_prm_dgs 1024 Defaultvol_max_rdback_sz 4194304 Default Immedvol_max_vol 8388608 Defaultvol_max_wrspool_sz 4194304 Default Immedvol_maxio 256 Defaultvol_maxioctl 32768 Defaultvol_maxkiocount 2048 Defaultvol_maxparallelio 256 Defaultvol_maxspecialio 256 Defaultvol_maxstablebufsize 256 Defaultvol_min_lowmem_sz 532480 Default Immedvol_mvr_maxround 256 Defaultvol_nm_hb_timeout 10 Defaultvol_rootdev_is_vol 0 Defaultvol_rvio_maxpool_sz 4194304 Default Immedvol_subdisk_num 4096 Defaultvol_swapdev_is_vol 0 Defaultvol_vvr_transport 1 Defaultvol_vvr_use_nat 0 Defaultvolcvm_cluster_size 16 Defaultvolcvm_smartsync 1 Defaultvoldrl_max_drtregs 2048 Defaultvoldrl_min_regionsz 512 Defaultvoliomem_chunk_size 65536 Defaultvoliomem_maxpool_sz 4194304 Defaultvoliot_errbuf_dflt 16384 Defaultvoliot_iobuf_default 8192 Defaultvoliot_iobuf_limit 131072 Defaultvoliot_iobuf_max 65536 Defaultvoliot_max_open 32 Defaultvolpagemod_max_memsz 6144 Default Immedvolraid_rsrtransmax 1 Defaultvps_ceiling 16 Default Immedvps_chatr_ceiling 1048576 Default Immedvps_pagesize 16 Default Immedvx_maxlink 32767 Defaultvx_ninode 0 Default Immedvxfs_bc_bufhwm 0 Default Immedvxfs_ifree_timelag 0 Default Immedvxtask_max_monitors 32 Default |
可以看到有两种内核参数。一种立即生效 (immed),另一种在重新引导时生效 (Default)。
可以使用 kctune 命令查看一个参数。只需输入清单 16 这样的 kctune 命令。
清单 16. 使用 kctune
# kctune vx_ninodeTunable Value Expression Changesvx_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 Changesvps_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 1018863616maxdsiz 11403264 1073741824maxdsiz_64bit 42663936 4294967296maxfiles_lim 38 4096maxssiz 786432 8388608maxssiz_64bit 98304 268435456maxtsiz 35823616 100663296maxtsiz_64bit 1409024 1073741824maxuprc 3 256max_thread_proc 21 1100msgmni 2 512msgtql 0 1024nflocks 27 4096ninode 727 8192nkthread 330 8416nproc 151 4200npty 0 60nstrpty 1 60nstrtel 0 60nswapdev 1 32nswapfs 0 32semmni 28 2048semmns 146 4096shmmax 17868904 1073741824shmmni 7 400shmseg 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 主要通过文本文件方式进行系统管理。
参考资料 学习
讨论
关于作者 |
| |
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)。 |
|
|
|