| Ken Milberg, 作家/網(wǎng)站專(zhuān)家, Future Tech
2009 年 7 月 09 日 近幾年,HP、Sun 和 IBM? 都發(fā)布了他們的商業(yè) UNIX? 操作系統的新版本。本文對比這些版本中的一些創(chuàng )新。討論執行某些任務(wù)的方法的差異,比如連網(wǎng)和性能調優(yōu)。另外,討論這三種操作系統在虛擬化方面的差異。 首先討論這三種主要商業(yè) UNIX 操作系統的最新版本中的新特性和創(chuàng )新。 HP-UX 創(chuàng )新 HP-UX 是 HP 提供的 UNIX 操作系統,最新版本是 11iV3。HP-UX 基于 System V,在 HP9000 RISC 服務(wù)器和 HP Integrity Itanium 系統上運行。它與 Solaris 相似,可以在 SPARC RISC 體系結構和 x86 機器上運行。AIX 只能在 POWER? 體系結構上運行;但是,由于 UNIX 是高端操作系統,所以 AIX 和 POWER 體系結構的緊密集成是有積極意義的。 HP-UX 11Iv3 支持最多 128 個(gè)處理器核、2TB 內存、2TB 的文件系統、16TB 的文件系統大小和 1 億 ZB 的存儲。最近的創(chuàng )新和改進(jìn)包括: - 通過(guò)動(dòng)態(tài)節能功能,減少了 10% 的能源使用量
- 通過(guò)根據位置優(yōu)化資源分布,把應用程序性能最多提高 20%
- 通過(guò) tune-N-Tools 調優(yōu)改進(jìn)對性能敏感的工作負載
大約一年前,HP 提供了幾套操作系統環(huán)境,這為客戶(hù)提供了新的選擇。它們包括數據中心、高可用性環(huán)境、虛擬服務(wù)器和基本環(huán)境。 - 提高了虛擬 I/O 的速度,在使用 HP Integrity 虛擬機器時(shí)這可以提高帶寬并提高 CPU 效率 60%。這個(gè)改進(jìn)通過(guò) gatekeeper 功能幫助優(yōu)先處理重要的數據流。
- Online JFS 通過(guò) VxFS 實(shí)現一種編制文件索引的新方法,并改進(jìn)了目錄的性能。
- HP Logical Volume Manager 改進(jìn):
- 支持在線(xiàn)磁盤(pán)替換
- 動(dòng)態(tài)線(xiàn)支持
- 支持多路徑 I/O
- 性能改進(jìn)
- 提高了邏輯卷的最大大?。?2 - 16TB
- 通過(guò) Dynamic nPartitions 改進(jìn)了虛擬化。這允許把基于單元的 HP Integrity 和 HP9000 服務(wù)器配置成大小不同的分區,可以根據應用程序工作負載調整大小,在調整過(guò)程中應用程序仍然是可用的。
- 連網(wǎng)改進(jìn):
- 通過(guò)避免不必要的 TCP 通信,提高移動(dòng)客戶(hù)機的吞吐量。
- 改進(jìn) TCP 堆棧,提高性能。
- 改變了可調優(yōu)的 tcphasize。這現在是自動(dòng)調優(yōu)的;系統可以在引導時(shí)確定最優(yōu)值。
LVM 中的改進(jìn)確實(shí)不錯,但是 AIX 已經(jīng)實(shí)現了這些改進(jìn)中的大部分。 Solaris 創(chuàng )新 Solaris 10 最初是于 2005 年發(fā)布的。Solaris 的最新版本是 10 10/08。這個(gè)版本中的改進(jìn)包括: - 支持從 ZFS 引導并使用 ZFS 作為根文件系統。還對 Solaris ZFS 做了許多其他改進(jìn),包括:能夠回滾文件集而不需要卸載,改進(jìn)了 ZFS 發(fā)送命令,支持 ZFS 配額和保留(只適用于文件系統數據),zpool 歷史等命令行改進(jìn),允許通過(guò)升級命令用新的文件系統改進(jìn)升級現有的文件系統,允許非根用戶(hù)執行細粒度的 ZFS 管理任務(wù)。
- 在從一個(gè)系統轉移到另一個(gè)系統時(shí),允許 Solaris 容器自動(dòng)地更新它的環(huán)境。
- LDOM 支持,可以動(dòng)態(tài)地重新配置磁盤(pán)和網(wǎng)絡(luò ) I/O。
- 在 x86 系統上支持最多 256 個(gè)處理器 —— 原來(lái)是 64 個(gè)。
- 對 Solaris 區的改進(jìn),包括:允許在 Shared IP Zones 中設置默認路由器,允許 ZFS 上的區路徑。
- 安全改進(jìn),包括:通過(guò) Solaris Management Console 改進(jìn)了數據隔離,改進(jìn)了加密算法。
- 連網(wǎng)改進(jìn):提供 SIP 全程通信流度量和日志記錄,提供新的通信協(xié)議解析器實(shí)用程序。
對 ZFS 的這些改進(jìn)非常重要。當 ZFS 最初出現時(shí),它看起來(lái)令人難以置信,但它的根本問(wèn)題是特性功能很不夠。增加了新功能之后,ZFS 在許多方面能夠與 AIX 的 JFS2 和 HP 的 VxFs 匹敵了。 AIX 創(chuàng )新 AIX 6.1 最初是在大約兩年前發(fā)布的,現在有兩個(gè)版本:標準版(只包含基本 AIX)和企業(yè)版(包含工作負載分區管理程序和幾個(gè) Tivoli? 產(chǎn)品)。在這個(gè)方面,它與 HP 相似,HP 也有多個(gè)版本。最近的改進(jìn)包括: - 工作負載分區:WPAR 是與 Solaris 容器相似的操作系統虛擬化特性,它允許在一個(gè) AIX 6.1 實(shí)例中創(chuàng )建多個(gè) AIX 6.1 環(huán)境。只需幾秒即可創(chuàng )建應用程序 WPAR,它可以在全局實(shí)例中運行,這樣就可以快速測試新應用程序。
- 動(dòng)態(tài)應用遷移:這允許分區從一個(gè)系統轉移到另一個(gè)系統,而不需要重新啟動(dòng)應用程序,也不會(huì )中斷最終用戶(hù)對系統的訪(fǎng)問(wèn)。除了支持計劃內停機之外,這個(gè)特性還有助于管理工作負載,允許在非高峰時(shí)間段把服務(wù)器從系統中轉移出去,從而節省能源和成本,提高效率。
- 支持并發(fā) AIX 內核更新:不需要重新引導系統,系統更新即可生效。
- 支持存儲鍵:可以減少與 AIX 內核中的內存覆蓋相關(guān)的許多停機。
- 支持動(dòng)態(tài)跟蹤:可以簡(jiǎn)化系統或應用程序代碼的調試。
- 改進(jìn)了功能性恢復例程:可以從通常會(huì )導致系統崩潰的錯誤中恢復。
- 改進(jìn)了 AIX 6.1 的默認調優(yōu)參數,可以實(shí)現更好的性能。
- 提供新的名稱(chēng)解析器緩存守護進(jìn)程,可以更高效地處理主機名解析請求。
- 改進(jìn)了 NFS version 4 的 NIM 支持。
- 改進(jìn)了可管理性特性,比如 IBM Systems Director Console for AIX。
最近的安全改進(jìn)包括: - 基于角色的訪(fǎng)問(wèn)控制 (RBAC),允許管理員把管理責任委托給非根用戶(hù),從而提高安全性和可管理性。
- Trusted AIX 讓 AIX 6.1 能夠滿(mǎn)足法律和行業(yè)標準對私密性的大多數需求。
- Encrypted Filesystems 能夠加密文件系統中的數據,為 JFS 提供更強的安全性。
- 對 AIX 安全專(zhuān)家的改進(jìn)包括支持在 LDAP 中存儲安全模板。
- Secure-by-Default 安裝只啟用最少量的服務(wù)和包,從而在安裝時(shí)保持比較高的安全水平。
- 支持長(cháng)密碼。
在所有平臺上都支持這些 AIX 6.1 創(chuàng )新,但是以下創(chuàng )新只在 POWER 6? 體系結構上得到支持:應用程序存儲鍵、內核存儲鍵、自動(dòng)調整的頁(yè)面大小、固件輔助轉儲和硬件十進(jìn)制浮點(diǎn)。大多數 IBM POWER 管理員很喜歡 AIX 6.1,已經(jīng)開(kāi)始把它投入生產(chǎn)環(huán)境了。下面討論 AIX 6.1 的哪些特性讓它如此受歡迎,并與 Solaris 和 HP-UX 的最新版本做比較。 首先是工作負載分區和動(dòng)態(tài)應用遷移。Solaris 有區和容器,它們在某些方面與工作負載分區相似,但是沒(méi)有實(shí)現 WPAR 的某些功能??梢栽诓煌V狗謪^運行的情況下把工作負載分區上的工作負載從一個(gè)系統轉移到另一個(gè)系統,其他 UNIX 版本都無(wú)法這樣做。這為什么很重要?因為這可以在計劃內停機期間保持系統正常運行,從而提高可用性。系統管理員甚至操作員(通過(guò) WPAR 管理員)可以把這些虛擬操作系統分區轉移到其他系統,而不需要停機。這還有助于實(shí)現綠色計算,在非高峰時(shí)間段操作員可以把分區從利用率不高的機器轉移到其他機器,然后關(guān)閉空閑的機器。這個(gè)特性可以幫助公司節省大量成本,同時(shí)對環(huán)境有好處。在這里討論的所有創(chuàng )新中,AIX WPAR 和動(dòng)態(tài)應用程序可移動(dòng)性顯然是最重要的。 現在,我們比較一下這三種操作系統提供的虛擬化功能。 HP-UX - nPartitions:這些是硬分區,在某些方面與 SUN DSD 相似。與 SUN DSD 不同的是,它可以在其他分區在線(xiàn)的情況下為一個(gè)分區提供服務(wù)。它們還支持多個(gè)操作系統,比如 HP-UX、VMS、Linux? 和 Windows?,但是這只適用于 Itanium 處理器,不適用于 PA-RISC。與 Solaris 相似,它們只能用于高端系統,而且不支持在不重新引導的情況下轉移資源。
- vPars:這些是單獨的操作系統實(shí)例,它們可以駐留在 nPartition 或物理機器中。它們允許根據需求的變化在分區之間動(dòng)態(tài)地轉移 CPU 和 RAM 資源。一定要注意,不能在分區之間共享或轉移存儲資源。
- Integrity Virtual Machines:它們允許在一個(gè)分區上有多個(gè)單獨的訪(fǎng)客(guest)實(shí)例,訪(fǎng)客實(shí)例是完全隔離的環(huán)境。它們允許分區有自己的操作系統拷貝。在 HP 或 Sun 提供的所有虛擬化特性中,這個(gè)特性最接近 IBM 的 PowerVM?。它的粒度實(shí)際上比 PowerVM 提供的粒度更細,可以把機器劃分成 1/20 的微分區。主要缺點(diǎn)是可伸縮性不太好,只支持最多 4 個(gè) CPU 和 64GB 內存。其他限制包括在系統運行時(shí)不能轉移存儲適配器,也不能讓進(jìn)程只使用單一分區。
- Resource Partitions:這相當于 Solaris 容器和 AIX WPAR。
在這三家硬件廠(chǎng)商中,只有 IBM 具有單一的整合的技術(shù)和愿景。另外兩家采用多種戰略,即使是最有經(jīng)驗的系統用戶(hù),往往也會(huì )被搞糊涂。IBM 只提供 PowerVM。與 HP 和 Sun 提供的任何特性相比,它的可伸縮性更好、更新穎,可以轉移正在運行的分區。IBM 有 40 年的虛擬化經(jīng)驗(包括大型機),這確保 PowerVM 具有很好的穩定性。最后,它的特性和功能能夠擴展到整個(gè) POWER 產(chǎn)品系列。這是 HP 和 Sun 的嚴重缺點(diǎn),HP 和 Sun 的產(chǎn)品只適用于低端機型、高端機型和/或特定的體系結構。 Solaris Sun 采用多種方法在 Solaris 上實(shí)現虛擬化: - 容器或區:這個(gè)特性允許在一個(gè) Solaris 內核實(shí)例中運行多個(gè)虛擬操作系統。這是操作系統虛擬化的一種形式,與 AIX 6.1 的 WPAR 相似。
- xVM 服務(wù)器:這個(gè)在 2008 年 2 月引入的創(chuàng )新是一個(gè)基于 Xen 和系統管理程序的解決方案,可以在 x86 機器上的 Solaris 中運行。在 Sparc 上,它仍然基于邏輯域。
- 邏輯域 (LDOM):這允許同時(shí)運行多個(gè)操作系統。實(shí)際上,它有許多問(wèn)題,包括可伸縮性差、微分區功能有限制而且不支持在系統之間進(jìn)行動(dòng)態(tài)分配。另外,它只能在低端 SPARC 服務(wù)器上運行。
- 硬件分區 (DSD):這在某些方面與 IBM 的邏輯分區(不屬于 PowerVM)相似。硬件分區不具備真正的虛擬化功能,因為不能在分區之間共享資源。
AIX PowerVM 的虛擬化基于 IBM 的虛擬化系統管理程序戰略。它包括以下特性: - 微分區:這個(gè)特性允許把一個(gè) POWER CPU 劃分為最多 10 個(gè)邏輯分區,每個(gè)分區使用一個(gè) CPU 的 1/10。通過(guò)使用不封頂分區 (uncapped partition),它還允許系統的計算能力超過(guò)已經(jīng)分配給分區的標稱(chēng)計算能力。
- 共享處理器池:這個(gè)特性允許虛擬分區連接到共享池,可以隨著(zhù)需求的增長(cháng)獲取更多資源。在需求低時(shí),分區把資源返回給共享處理器池。
- 虛擬 I/O 服務(wù)器。這定義一種特殊的分區,允許以 Shared Ethernet 和 Virtual SCSI 的形式共享 I/O。
- 動(dòng)態(tài)應用遷移。這個(gè)創(chuàng )新允許把正在運行的分區從一臺機器轉移到另一臺機器。這讓系統能夠在計劃內停機期間正常運行,從而提高系統的可用性。這個(gè)特性只能在 POWER 6 上使用。
- 共享專(zhuān)用計算能力。這個(gè)特性讓分區可以把專(zhuān)用的處理器提供給共享處理器池。
連網(wǎng) 本節比較 HP-UX、Solaris 和 AIX 上的連網(wǎng)配置并在這三種系統上配置默認路由器。 HP-UX 在安裝之后第一次引導 HP-UX 系統時(shí),運行 /sbin/set_parms 程序。以后還可以通過(guò) set_parms initial 命令運行它。這個(gè)程序用來(lái)配置系統主機名、IP 地址和其他網(wǎng)絡(luò )參數。我們來(lái)運行它:# 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 地址并添加其他網(wǎng)絡(luò )參數。 我們來(lái)配置一個(gè)以太網(wǎng)卡。在安裝 LAN 卡之后,運行 ioscan(見(jiàn)清單 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 配置(見(jiàn)清單 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 相關(guān)聯(lián)(見(jiàn)清單 4)。 清單 4. 檢查 lan0 關(guān)聯(lián) # ifconfig lan0 lan0: flags=1843<UP,BROADCAST,RUNNING,MULTICAST,CKO> inet 15.170.178.24 netmask ffffff80 broadcast 15.170.178.127 | 接下來(lái),要配置默認路由器。首先需要修改這個(gè)文件:/etc/rc.config.d/netconf。這個(gè) netconf 文件存儲配置值(見(jiàn)清單 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。 為了啟用新的路由,需要啟動(dòng)服務(wù)并啟用路由(見(jiàn)清單 6)。 清單 6. 啟動(dòng)服務(wù)并啟用路由 /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 | 接下來(lái),導航到 Networking and Communications >Network Interfaces Configuration>Network Interface Cards。下面是輸出(見(jiàn)清單 8)。 清單 8. 網(wǎng)絡(luò )接口卡的輸出 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 上配置連網(wǎng)的方法相當明了,但是有時(shí)候有點(diǎn)兒麻煩。 Solaris 在 Solaris 上,需要使用文本文件配置連網(wǎng);沒(méi)有與 SAM 或 SMIT 相似的界面。首先在 /etc/nodename 中檢查機器的主機名(見(jiàn)清單 9)。 清單 9. 檢查機器的主機名 # more /etc/nodename ezqspc03z1 | 還應該使用 ifconfig 收集信息(見(jiàn)清單 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 啟動(dòng)接口。 要想讓修改持久有效,需要編輯以下文件: - /etc/hosts
- /etchostname/bge0(針對 bge0 接口)
- /etc/netmasks
- /etc/defaultrouter
現在修改默認路由。在 Solaris 中修改默認路由需要執行以下步驟: - 首先需要編輯 /etc/defaultrouter 文件。
- 刪除默認路由器的 IP 地址:
# route delete theipadress。 - 分配新的地址:
# route add default newipadress。 盡管我有時(shí)候喜歡編輯文本文件,但是大多數管理員更喜歡通過(guò)菜單驅動(dòng)的系統配置連網(wǎng),這樣更靈活、更方便。另外,在使用 Solaris 時(shí),需要探測接口 —— 其他 UNIX 操作系統不需要這么做。IBM 和 HP 都有系統管理菜單系統,但是 IBM 的 SMIT 更強大。 AIX 在 AIX 上,在配置連網(wǎng)時(shí)通常使用 SMIT。列出以太網(wǎng)適配器的方法如下:# smit devices >communication >Ethernet adapter>adapter>list all Ethernet adapters(見(jiàn)清單 11)。 清單 11. 列出以太網(wǎng)適配器 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 | 要想進(jìn)行修改,需要找到 Change/Show characteristics of an Ethernet adapter(見(jiàn)清單 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) 中,在重新引導時(shí)會(huì )丟失。因此,ifconfig 不是首選方法;在 AIX 上處理網(wǎng)絡(luò )時(shí)應該堅持使用 SMIT。 要想在 AIX 上添加默認路由,只需訪(fǎng)問(wèn) SMIT>TCP/IP Minimum Configuration&Startup 并單擊您的接口,就會(huì )出現清單 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 | 然后,修改默認網(wǎng)關(guān)并按回車(chē)鍵兩次(見(jiàn)清單 14)。 清單 14. 修改默認網(wǎng)關(guān) 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 提供的連網(wǎng)配置方法非常簡(jiǎn)單。 性能調優(yōu) 本節對比 HP-UX、Solaris 和 AIX 上的系統調優(yōu)方法。 HP-UX 要記住,HP-UX 在 Itanium 和 PA-RISC 上運行。因此,與運行在 PA-RISC 上編譯的程序相比,Integrity 服務(wù)器在運行針對 Itanium 編譯的程序時(shí)性能更好。它可以以模擬(emulation)模式運行,但是運行速度沒(méi)那么快。HP-UX 11.31 具有每線(xiàn)程鎖,因此 HP-UX 的最新版本的性能顯著(zhù)提高了 —— 與 11iV2 相比,最多能夠提高 30%。在磁盤(pán) I/O 方面,建議使用塊大小為 8 kb 的 VxFS。還可以通過(guò) HP Online JFS 獲得更好的性能。 在 SAM 中查看要調整的 kctune 和 kcweb 參數。 下面是 kctune 的參數列表(見(jiàn)清單 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),另一種在重新引導時(shí)生效 (Default)。 可以使用 kctune 命令查看一個(gè)參數。只需輸入清單 16 這樣的 kctune 命令。 清單 16. 使用 kctune # kctune vx_ninode Tunable Value Expression Changes vx_ninode 0 Default Immed # | 我喜歡使用 -B 選項,這會(huì )在做修改時(shí)備份原來(lái)的值。我們來(lái)修改一個(gè)參數(見(jiàn)清單 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 | 除了菜單驅動(dòng)的系統 SAM 之外,HP-UX 還允許通過(guò)命令行執行調優(yōu)任務(wù)??偟膩?lái)說(shuō),我喜歡 HP-UX 使用的性能調優(yōu)方法,但是我認為 kctune 中的東西太多了。AIX 是按領(lǐng)域組織調優(yōu)參數的。 Solaris 與 HP-UX 和 AIX 不同,在 Solaris 上要使用文本文件完成大多數工作。主要文件是 /etc/system。在轉移到新版本時(shí),建議先使用一個(gè)空文件,只添加第三方應用程序需要的可調項。對 /etc/system 所做的所有修改在重新引導后生效。 我們在 /etc/system 中做一個(gè)修改:set nfs:nfs_nra=4。 這個(gè)修改為使用 NFS version 2 軟件掛載的文件系統設置預讀取塊的數量。Solaris 10 中的一個(gè)重要變化是,許多 Solaris 內核參數現在已經(jīng)被資源控制取代。修改資源控制的命令是 prctl 命令。例如,現在通過(guò)資源控制處理所有共享內存和信號量。這意味著(zhù)不再需要在 /etc/system 中設置與共享內存和信號量(即 sem)相關(guān)的任何條目。以 Oracle 調優(yōu)為例。在以前的版本中,在 /etc/system 中配置 SHMMAX,然后重新引導?,F在使用 prctl。這一變化的優(yōu)點(diǎn)是修改可以立即生效,不需要重新引導。缺點(diǎn)是在重新引導時(shí)信息會(huì )丟失,所以需要在用戶(hù)配置文件中輸入信息。把 max-shm-memory 的值改為 6 GB 的命令是:# prctl -n project.max-shm-memory -v 6gb -r -i project user.root。 其他調優(yōu)方法包括: - 使用 kmdb,內核調試器
- 使用 mdb,模塊化調試器
- 使用 ndd 配置 TCP/IP 參數
- 使用 /etc/default 調整 NCA 參數
- 使用 prtctl 修改資源控制
通過(guò) ndd 進(jìn)行調優(yōu)的示例如下:# ndd -get /dev/tcp tcp_time_wait_interval。 怎么調整 NFS 呢?這些參數也在 /etc/system 中,包括 nfs_cots_timeo、nfs_allow_preepoch_time 和 nfs4_pathconf_disable_cache。 我知道一些管理員喜歡編輯文本文件,但是一般來(lái)說(shuō),大多數管理員更喜歡 HP 或 IBM 提供的簡(jiǎn)便的調優(yōu)系統。盡管 prtctl 在某些方面有幫助,但是也會(huì )帶來(lái)混亂,因為在一些方面要使用 prtctl,對于其他方面仍然使用 /etc/system。 AIX 在 AIX 上,有幾個(gè)調優(yōu)命令,分別用于 I/O(對于網(wǎng)絡(luò )和磁盤(pán)使用不同的實(shí)用程序)、內存和 CPU 的調優(yōu):ioo、no、vmo 或 schedo。使用 nfso 調整 nfs 子系統。AIX 6.1 還有一些性能改進(jìn)。比較重要的改進(jìn)包括默認參數更符合日常工作的情況,并且加入受限制的可調參數,這有助于防止管理員把東西弄亂。最近的改進(jìn)包括: - 改進(jìn)了以下領(lǐng)域的默認可調項:vmo、ioo、aio、no、nfso 和 schedo。
- 在文件系統方面,修改了 Enhanced Journaling File System,允許掛載 JFS2 f/s 而不啟用日志記錄。這確實(shí)可以提高性能,但是我建議不要使用它,因為這會(huì )導致可用性問(wèn)題。
- I/O pacing 可以限制針對一個(gè)文件的未完成 I/O 請求數量,這可以有效地防止磁盤(pán) I/O 密集型進(jìn)程。AIX 6.1 在默認情況下啟用 I/O pacing。在 AIX 5.3 中,需要顯式地啟用這個(gè)特性。
- AIO 是一個(gè) AIX 軟件子系統,它允許進(jìn)程發(fā)出 I/O 請求而不必等待 I/O 完成。在 AIX 6.1 中,在默認情況下裝載 AIO 子系統,但是不啟動(dòng)。當應用程序發(fā)出 AIO I/O 請求時(shí),會(huì )自動(dòng)地啟動(dòng)它。另外,原來(lái)用來(lái)配置 AIO 服務(wù)器的 aioo 命令已經(jīng)取消了。
- 引入了一個(gè)新的網(wǎng)絡(luò )緩存守護進(jìn)程,它可以提高使用 DNS 解析名稱(chēng)時(shí)的性能。使用 AIX 的 System Resource Controller (SRC) 啟動(dòng)它,使用 netcdctrol 實(shí)用程序進(jìn)行管理。
我們來(lái)做一些修改。 下面的命令把頁(yè)面設置為 16777216 字節的大頁(yè)面,這在 Oracle 環(huán)境中尤其有用:# vmo -r -o lgpg_size=16777216 lgpg_regions=256。 我們來(lái)看看虛擬內存。AIX 虛擬內存管理器控制機器上的所有內存,而不只是虛擬內存。在 UNIX 系統上,減少分頁(yè)數量總是很重要的。如何讓 AIX 虛擬內存管理器減少分頁(yè)數量呢?進(jìn)程在處理計算信息時(shí)使用計算內存,它們是臨時(shí)的內存段。它們沒(méi)有持久的磁盤(pán)存儲位置。另一方面,文件內存使用持久存儲,而不是內存段。您可能更希望將文件內存頁(yè)存儲到磁盤(pán),而不是計算內存??梢允褂锰摂M內存設置中的幾個(gè)參數實(shí)現這個(gè)目的。我們需要調整 minperm、maxperm 和 maxclient。為了避免 AIX 對工作存儲進(jìn)行分頁(yè)并利用數據庫緩存,需要把 maxperm 設置為比較高的值(大于 90)并確保 lru_file_repage=0。這個(gè)參數表示是否應該考慮 VMM re-page 計數和它應該使用什么類(lèi)型的內存。默認設置是 1,需要把它改為 0。這要使用 vmo 命令來(lái)完成。把這個(gè)參數設置為 0,就是告訴 VMM 希望它只置換文件頁(yè)面,而不置換計算頁(yè)面。在 AIX 6.1 中,minperm、maxperm 和 maxclient 已經(jīng)設置為適當的值。在 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 在性能調優(yōu)方面占據優(yōu)勢,到目前為止它的性能調優(yōu)方法是最直觀(guān)的。在向自調優(yōu)系統發(fā)展方面,HP-UX 在近幾年進(jìn)步很大,但是還不夠。Solaris 通過(guò) prtctl 引入了一些積極的改進(jìn),但是要配置的東西還是太多。對于 AIX,就簡(jiǎn)單多了。用 vmo 調整內存,用 ioo 調整磁盤(pán)/IO,用 schedo 調整 CPU,用 no 調整網(wǎng)絡(luò ),用 nfso 調整 nfs。沒(méi)法再簡(jiǎn)單了!另外,AIX 6.1 中對調優(yōu)參數的改進(jìn)進(jìn)一步擴大了 AIX 的優(yōu)勢。 結束語(yǔ) 本文比較了 AIX 6.1、HP-UX (11Iv3) 和 Solaris (10/08) 的最新版本中的創(chuàng )新和特性/功能改進(jìn)。還討論了執行某些任務(wù)的命令和方法的差異,比如配置連網(wǎng)和性能調優(yōu)。此外,還總結了這三種 UNIX 系統的虛擬化特性及其基本差異。您自己決定最喜歡哪一種,但是根據我的比較,AIX 在所有方面都很出色。HP-UX 與 AIX 最為相似,而 Solaris 主要通過(guò)文本文件方式進(jìn)行系統管理。 |