AIX 作為 IBM Power 系統的原生作業系統,承載著大量關鍵 Oracle 工作負載。Oracle 9i 在 AIX 上的效能調優核心在於記憶體管理,特別是虛擬記憶體管理器 (VMM) 與 Oracle SGA/PGA 的協同運作。本文深入剖析 AIX 記憶體分頁機制、檔案快取調優、交換空間配置、進程優先級、資料區塊大小、日誌歸檔緩衝與 SGA 調整等關鍵領域。
當進程申請記憶體超過物理記憶體總量,AIX 會在記憶體與磁碟間交換頁面。大量分頁會嚴重拖垮效能,尤其當資料庫檔案置於 JFS/JFS2 檔案系統時:
解決方案:優先使用裸裝置或啟用 Concurrent I/O (CIO) 掛載選項,繞過檔案系統快取。
透過 vmtune 命令調整 MINPERM 與 MAXPERM 控制檔案快取佔用記憶體比例:
| 參數 | 預設值 | 建議值 (Oracle 專用) | 說明 |
|---|---|---|---|
| MINPERM | 20% | 5% 或更低 | 檔案快取頁低於此值時,同時交換檔案頁與計算頁 |
| MAXPERM | 80% | 20% 或更低 | 檔案快取頁高於此值時,僅交換檔案頁 |
指令範例:
# vmtune -p 5 -P 20
使更多記憶體留給 Oracle SGA 而非檔案快取。AIX 5L 後改用 vmo 命令,參數為 minperm% 與 maxperm%。
mkps / chpslsps -a 檢視使用率,vmstat 監控分頁活動記憶體不足時,依下列優先級分配:
實務判斷:查詢動態效能視圖發現 Shared Pool 與 Buffer Cache 皆需擴大,但記憶體有限時,優先給 Shared Pool,效益通常更高(減少硬解析、鎖爭用)。
DB_BLOCK_SIZE,範圍 2KB~32KB,預設 4KBLOG_ARCHIVE_BUFFER_SIZE,預設 4KBDB_BLOCK_BUFFERS、SHARED_POOL_SIZEvmo -r -o lgpg_regions=... -o lgpg_size=16777216cio,繞過檔案系統快取與鎖,Oracle 9.2.0.4+ 支援aioo -r -o maxservers=...,加速備份/恢復/排序bindprocessor 將關鍵 Oracle 進程綁定特定 CPU,減少上下文切換Oracle on AIX 調優的根本目標:避免分頁、熱資料留在 SGA。透過 vmtune/vmo 限制檔案快取、配置充足交換空間、合理設定優先級、選擇適當區塊大小、善用 AIX 進階特性。每個調整都需以 vmstat、iostat、svmon、AWR 等工具量化驗證。記住:調優是迭代過程,單一參數變更、觀察效果、建立基線,方為正道。