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