瞭解 IBM DB2 9 for Linux、UNIX 和 Windows 如何善用多重頁面大小。隨著 POWER5+ 處理器架構推出,IBM AIX 5L 作業系統新增對 64 KB 頁面的支援,特性類似當前預設的 4 KB 頁面。此外,AIX 5L Version 5.3 TL04 還為此硬體架構引入 16 GB 巨型頁面特性。DB2 9 自動利用 64 KB 頁面為該平台上的資料庫應用程式提供高效能,並支援 16 GB 巨型頁面的使用。
現代作業系統多在虛擬位址空間執行程式,虛擬位址具彈性、獨立性、可移植性、超過實體記憶體的定址空間,並允許底層硬體配置獨立性。但代價是:程式參考的記憶體位址為虛擬位址,每次處理指令或資料的記憶體位置都需將虛擬位址轉換為實體位址,由頁表維護,增加執行時間。頁表大小與頁面大小成反比——頁面越小,頁表越大,開銷越大。
多年來 4 KB 是大多數作業系統(含 AIX 5L)的標準頁面大小。隨資料量與處理器可定址記憶體增加,4 KB 頁面效率逐漸降低。為提升大量資料應用程式效能,基於 IBM POWER5+ 處理器且執行 AIX 5L V5.3 TL04(或更新)的系統引入多頁面大小支援。自 AIX 5L V5.1 起,POWER 處理器與 AIX 5L 支援 4 KB 與 16 MB 兩種頁面;最新可用頁面為 64 KB 與 16 GB。64 KB 頁面與 4 KB 行為相同(記憶體非固定、可分頁)。
DB2 9 自動偵測系統可用頁面大小。若 64 KB 可用,則將部分程序與所有共享記憶體區域預設大小設為 64 KB。自 IBM DB2 UDB V8.2.5 起,DB2 也增加對 16 GB 頁面的支援。
程式執行前,作業系統載入器必須將其載入實體記憶體。AIX 5L 環境中,程序記憶體分為私有區域與共享區域:
程序參考的虛擬位址需轉換為實體位址。每個執行中程序的虛實映射由頁表維護。為加速轉換,架構有 processor-on-a-chip (PoC) 快取與轉換後備緩衝器 (TLB) 邏輯。TLB 為小型快取區域,儲存近期位址轉換以便重用。
除了處理器時脈速度,每指令時脈週期 (CPI) 是另一重要效能指標。CPI 越低,執行越快、效能越好。TLB 快取條目重用(快取命中)意味著更快的位址轉換與實體記憶體存取。TLB 未命中需存取主存中的頁表,消耗大量處理器週期。擴大位址空間(32 位元增至 64 位元)雖普遍,但會增加頁表大小、降低轉換速度。
解決之道有二:一、增加 TLB 大小(受晶片空間限制,無法成比例增長);二、減少頁表條目以縮小頁表。頁表大小與頁面大小成反比,增加頁面大小可縮小頁表,且每個 TLB 條目可滿足更多位址轉換(頁面越寬,儲存資訊越多)。
POWER5+ 架構(執行 AIX 5L)透過引入多頁面大小解決頁表問題。應用程式可選擇符合其工作負載大小與特性的頁面大小,產生顯著效能優勢。
POWER5+ 處理器與 AIX 5L V5.3(具 5300-04 技術等級)引入 64 KB 與 16 GB 兩種新虛擬記憶體頁面大小。16 GB 僅用於極高效能環境,64 KB 專為通用設計。實際上,對大多數工作負載,64 KB 優於 4 KB。分配 16 GB 頁面需 IBM Hardware Management Console (HMC) Version 5 Release 2 機器碼。
在基於 POWER5+ 的系統上執行 5300-04 技術等級的 64 位元 AIX 5L 核心時,64 KB 頁面支援自動啟用,無需系統配置或調優。64 KB 頁面完全可分頁,64 KB 頁框池大小動態調整。AIX 5L 管理池大小,根據不同頁面大小需求改變 4 KB 與 64 KB 頁框數量。但 16 MB 頁面需用 vmo 指令配置 AIX 5L。
可用 svmon 與 vmstat 監控 4 KB 與 64 KB 頁框數量。例如顯示 DB2 程序各頁面大小統計:
# svmon –P 852128
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
852128 db2sysc 372534 65669 0 371671 Y N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 4521 0 0 3657
m 64 KB 302477 133 0 302478
...
自 DB2 9 起,DB2 自動為選定記憶體區域偵測與使用 64 KB 頁面。此前 DB2 預設用 4 KB,在支援 16 MB 的系統上提供自訂配置能力。POWER5+ 架構與 DB2 UDB V8.2.5 也引入 16 GB 大型頁面自訂配置。
對 DB2 而言,系統主記憶體最大消費者是緩衝池(基本上是單一大型共享記憶體區域)。DB2 支援緩衝池共享記憶體使用底層系統所有可用頁面大小(4 KB、64 KB、16 MB、16 GB)。DB2 9 自動偵測 AIX 5L 與 POWER5 硬體是否支援 64 KB,若支援則允許所有 DB2 共享記憶體區域(緩衝池、鎖清單、日誌緩衝區、公用程式堆、套件快取、監視器堆、共享排序堆)使用 64 KB 頁面。效能一節將詳細論述不同 AIX 頁面大小對 DB2 交易工作負載的效能提升。
除共享記憶體,DB2 也允許代理私有記憶體自訂配置 16 MB 頁面。常見消費者為排序堆記憶體,代理查詢執行期間用於排序記錄行。但 DB2 目前不自動為代理私有記憶體啟用 64 KB,也不允許代理私有記憶體自訂 16 GB 頁面。
雖 AIX 5L 與 DB2 支援不同頁面大小,但配置 16 MB 或 16 GB 需客製化硬體、AIX 5L 與 DB2 配置。讓 DB2 選擇預配置的 16 MB 或 16 GB 頁面,可用 DB2_LARGE_PAGE_MEM=DB 或 DB2_LARGE_PAGE_MEM=DB:16GB 登錄變數。請參考最新 DB2 與 AIX 5L 文件了解配置說明。
16 MB 與 16 GB 頁面都需小心調整分配給這些頁面大小的 AIX 記憶體池大小。配置不當可能導致 4 KB 或 64 KB 池過度分頁。分配 16 MB/16 GB 頁面時,它們在記憶體中扎根,AIX 5L 無法動態移動大頁面池與小頁面池間的頁面。但若分配足夠記憶體,工作負載可在效能上受益。
隨 64 KB 頁面引入,執行於基於 POWER5+ 硬體與 5300-04 技術等級 AIX 5L 上的 DB2 應用程式可自動享受更大頁面大小帶來的效能優勢,零使用者或管理開銷。完全無需將 64 KB 頁面固定在記憶體中,AIX 5L 可動態移動 4 KB 與 64 KB 池間頁面。
除所有 DB2 共享記憶體區域,DB2 9 還為程序堆疊自動使用 64 KB 頁面,進一步提升效能且零資源開銷。
前幾節討論大型頁面大小的關鍵效能優勢與在 DB2 中的使用。本節呈現內部線上交易處理 (OLTP) 工作負載的效能結果(用 DB2 9 評測)。
效能結果來自兩組系統:
圖 1 顯示相對效能提升(以 4 KB 為基準規格化)。使用 64 KB 頁面時,效能較 4 KB 提升 13%;從 64 KB 變 16 MB 再提升 8%;從 16 MB 變 16 GB 再提升 3%。DB2 吞吐率以每分鐘交易數衡量。
圖 2 將效能提升與 CPI 降低、TLB 失誤率下降關聯。CPI 越高代表執行指令需更多週期,效能未達最佳。TLB 失誤開銷佔 CPI 重要部分。提高 TLB 命中率可改善 CPI,進而提升程式效能。使用 64 KB 頁面時,DB2 工作負載 CPI 改善 11%,TLB 失誤率降 13%,整體效能提升 13%。使用 16 MB 與 16 GB 時,TLB 命中率進一步提高,CPI 成比例改善,獲得更高總吞吐率。
為展示 64 KB 頁面效能提升百分比,在 32 GB RAM 的 p5-520 上對相同工作負載執行另一組測試(緩衝池 18 GB)。圖 3 顯示與 p5-570(緩衝池 473 GB)相比,p5-520 採 64 KB 頁面效能提升 5%(4 KB 基準)。兩組測試差異可預期:隨資料庫與緩衝池記憶體增加,TLB 快取壓力也隨之增加。
在支援 64 KB 頁面且採用最新 AIX 5L V5.3 TL04 的系統上執行時,DB2 9 會自動偵測與使用 64 KB 頁面,立竿見影提升效能。但提升幅度因工作負載而異(5%~13%)。如今在大記憶體系統上,透過有效利用 TLB 快取限制,將虛擬位址轉換為實體位址的開銷降至最低,可從硬體投資獲取更高回報。此外,DB2 仍允許自訂配置 16 MB 大型頁面與 16 GB 巨型頁面,若需更高效能可善用此點。