程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> POWER5+和AIX 5L多頁面支持下的IBM DB2 Enterprise 9性能

POWER5+和AIX 5L多頁面支持下的IBM DB2 Enterprise 9性能

編輯:DB2教程

了解IBM® DB2® 9 for Linux®、UNIX®和Windows® (DB2)如何利用多頁面大小(multiple page size)。隨著POWER5+™處理器架構的引入,IBM AIX 5L™ 操作系統增加了對新的64 KB 頁面的支持,這種頁面與當前默認的 4 KB 頁面具有類似的性質。此外,AIX 5L Version 5.3 TL04 還為這種硬件架構引入了一種新的16 GB 巨型頁面特性。DB2 9 自動利用64 KB 頁面為該平台上的數據庫應用程序提供高性能。此外,DB2 還支持對16 GB 巨型頁面的使用。

簡介

由於各種各樣的原因,大多數現代操作系統都是在虛擬地址空間中運行程序的。虛擬地址有很多優點,包括靈活性、獨立性、可移植性以及比物理內存更多的尋址空間,此外在一定程度上還允許底層硬件配置的獨立性。

然而,在虛擬地址空間中運行程序也會帶來相應的成本。程序(包括 DB2)引用的內存地址是虛擬地址。每次為程序指令或數據處理內存位置時,都需要將虛擬地址轉換成物理(或實際)內存地址。這種轉換是由一個頁表來維護的,這個過程增加了程序的執行時間。頁表的大小與頁面大小成反比,這意味著頁面大小越小,頁表就越大,開銷也就越大。

多年來,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 自動檢測系統中可用的頁面大小。如果 64KB 頁面大小可用,那麼 DB2 會將一些進程和所有共享內存區域的默認大小設置為 64 KB。從 IBM DB2 Universal Database ™ (UDB) V8.2.5 開始,DB2 還增加了對 16 GB 頁面的支持。

背景知識

讓我們看看進程運行時環境,了解清楚為什麼大型頁面對諸如 DB2 之類的企業應用程序有如此高的價值。

進程運行時環境

在運行任何程序之前,操作系統裝載器必須將它裝載到實際內存中。在 AIX 5L 環境中,用於運行進程的內存被分成各種不同的內存區域。用於進程的私有區域有:text、stack 和 data/heap,每個區域專用於某個特定的用途:

text 區域存儲進程的指令。

data/heap 區域包含動態分配的內存和可全局訪問的程序數據(例如 DB2 代理私有內存)。

stack 區域用於子程序返回地址,也用於存儲自動數據。

另外還有一個非私有區域,稱為共享內存,這是 DB2 和其他多進程應用程序廣泛采用的進程間通信機制。DB2 使用共享的內存區域來有效地在相互協作的 DB2 進程(如 DB2 代理)之間處理和共享數據(主要用於緩沖池)。DB2 還將共享內存用於各種其他的堆。

如前所述,進程所引用的內存地址是虛擬地址,需要將其轉換成物理地址。對於每個正在運行的進程,虛擬地址與物理地址之間的映射是在一個稱作頁表的數據結構中維護的。頁表的數量與虛擬地址空間的大小成比例。因此,頁表的大小就很重要。為了加快地址轉換,架構中有一個 processor-on-a-chip (PoC) 緩存和相關的轉換後備緩沖器 (TLB) 邏輯。TLB 是一個較小的緩存區域,用於存儲最近的地址轉換,以便再次使用。

大型頁面的優點

除了處理器時鐘速度外,另一個重要的處理器性能度量是每條指令的時鐘周期(CPI)。實際上,CPI 是對運行一條指令需要多少時間的度量。通常意義下的 CPI 是指平均或規格化的 CPI。CPI 越低,則執行越快,性能也就越好。

TLB 緩存條目重用(緩存命中)意味著更快的地址轉換,還意味著對物理內存的更快的訪問。如果 TLB 沒有命中,那麼就需要訪問存儲在主存中的頁表,而這樣做需要消耗相當多的處理器周期。增加進程的地址空間(也就是說,從 32 位地址空間增大到 64 位地址空間)這種做法已經變得越來越普遍了,但是這樣會增加頁表的大小,從而降低地址轉換的速度。

為解決這個問題,有兩種選擇。一種選擇是增加 TLB 大小。然而,由於芯片空間的限制,TLB 的大小不能成比例地增加。另一種選擇是通過減少頁表中的條目來減少頁表的大小。前面已經指出,頁表的大小與頁面大小是成反比的,這意味著增加頁面大小可以使頁表變得更小,而且,每個 TLB 條目可以滿足更多的地址轉換。(也就是說,頁面越寬,每個頁面存儲的信息也就越多。)

POWER5+ 處理器架構(運行 AIX 5L 操作系統)通過引入多頁面大小來解決頁表問題。一個應用程序可以選擇與其工作負載的大小和特性相符的頁面大小。在本文的後面您將看到,這種思想可以產生相當大的性能優勢。

AIX 5L 多頁面大小支持

這一節對 AIX 5L 的多頁面大小支持作一個簡要的概述。在簡介部分已提到,POWER5+ 處理器和 AIX 5L V5.3(具有 5300-04 建議的技術級別)引入了對兩種新的虛擬內存頁面大小的支持:64 KB 和 16 GB。16 GB 的頁面僅用於性能非常高的環境,而 64 KB 的頁面則是為通用目的而設計的。實際上,對於大多數工作負載,使用 64 KB 的頁面比使用 4 KB 的頁面更好。我們將在本文的後面討論對 DB2 使用 64 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 進行配置。

可以使用 AIX 5L svmon 和 vmstat 命令來監視系統上 4 KB 和 64 KB 頁幀的數量。例如,要顯示關於每種頁面大小的 DB2 進程統計信息,可以使用 -P 標志、 DB2 進程 ID (PID) 和 svmon 命令:

# 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
  Vsid   Esid Type Description       PSize Inuse  Pin Pgsp Virtual
    0     0 work kernel (lgpg_vsid=0)     L 65536 65536  0 65536
          Addr Range: 0..65535
 2e845f 78000048 work default shmat/mmap      m  4096   0  0 4096
          Addr Range: 0..4095
 1987b1 78000021 work default shmat/mmap      m  4096   0  0 4096
... output snipped ...

DB2 多頁面大小支持的啟用

從 DB2 9 開始,DB2 自動為選擇的內存區域檢測和使用 64 KB 頁面大小。在此版本之前,DB2 默認情況下都是使用 4 KB 的頁面大小,同時在支持 16 MB 頁面的系統上提供了自定義配置 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 文檔,了解關於通過配置硬件和 AIX 5L 操作系統來使之支持 16 MB 或 16 GB 頁面的說明。

16 MB 和 16 GB 頁面大小都要求小心地調整分配給這些不同頁面大小的 AIX 內存池的內存大小。這時要特別小心,因為如果配置不當,則可能導致 4 KB 或 64 KB 頁面大小的池過度分頁。當分配 16 MB 和 16 GB 的頁面時,它們就在內存中扎下根來,AIX 5L 操作系統不能動態地移動較大頁面大小(16 MB 或 16 GB)的池與較小頁面大小(4 KB 或 64 KB)的池之間的頁面。然而,如果為 16 GB 或 16 MB 的池分配了足夠的內存,那麼工作負載就可以在性能方面受益。

隨著 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 進行評測)。

我們所描述的性能結果是從兩組系統上收集的:

一個是 IBM System p5? 570 Model 9117-570,使用頻率為 2.2 GHz 的 16 POWER5+ 處理器和 512 GB RAM

其中創建了 8 TB 的數據庫。

為 DB2 緩沖池分配了 473 GB 內存(從 512 GB 的 RAM 中分配)。

一個是 IBM System p5 520 Express Model 9131-52A,使用頻率為 1.9 GHz 的兩個 POWER5+ 處理器和 32 GB RAM

其中創建了一個 25 GB 的數據庫。

為 DB2 緩沖池分配了 18 GB 內存(從 32 GB 的 RAM 中分配)。

圖 1 展示了相對的性能提高,它們是在 4 KB 頁面大小與 DB2 和 the AIX 5L 操作系統所支持的不同頁面大小之間進行規格化之後得到的。這些度量是在一個 16 路 p5-570 上測得的。當使用 64 KB 頁面大小時,與使用 4 KB 頁面大小相比,在性能上提高了 13%。此外,當從 64 KB 變為 16 MB 的頁面時,性能提高了 8%。最後,當從 16 MB 的頁面變為 16 GB 的頁面時,性能又提高了 3%。DB2 吞吐率性能是以每分鐘的事務數量來度量的。

圖 1. 4 KB 頁面與其他受支持的頁面大小之間的性能提升

圖 2 將圖 1 看到的性能提升與減少的 CPI 和相應減少的 TLB 失誤率關聯起來。CPI 值越高,則運行指令所需的周期就越多,這意味著程序的運行性能未達到最優。TLB 失誤的開銷是整個 CPI 度量中的一個重要部分。提高 TLB 命中率可以提高 CPI 度量,從而也提高程序的性能。

如圖 2 所示,使用 64 KB 頁面時,DB2 工作負載的 CPI 度量提高了 11%。與使用 4 KB 的頁面相比,TLB 失誤率減少了 13%,導致工作負載的整體性能提高 13%。當使用 16 MB 和 16 GB 頁面時,TLB 命中率進一步提高,導致 CPI 成比例增長,從而取得了更高的總體吞吐率。

圖 2. 4 KB 與其他受支持的頁面大小之間的 CPI 與 TLB 性能比較

通過圖 1 和圖 2 很容易推斷,使用 64 KB 的頁面大小可以明顯提高 DB2 應用程序的性能。然而用戶需要認識到,工作負載在性能上的提高是不確定的,它取決於數據庫的大小、可用的系統 RAM 以及為 DB2 緩沖池分配的內存。為了演示使用 64 kB 頁面大小在性能上提高的百分比,我們在采用 32 GB RAM 的 p5-520 上為相同的工作負載執行另外一組測試。在這組測試中,在可用的 32 GB RAM 中,只有 18 GB 被分配給 DB2 緩沖池。

圖 3 展示了與在 p5-570(為 DB2 緩沖池使用 473 GB 內存)上的測試相比,在 p5-520 上獲得的吞吐率所增加的百分比。與使用 4 KB 的頁面相比,使用 64 KB 的頁面可以使性能提高 5%。

圖 3. 使用 32 GB RAM 與使用 512 GB RAM 的系統上在采用 64 KB 頁面時在性能方面的提高

這兩組測試得到的性能結果的不同是可以預測的,因為隨著數據庫和分配給 DB2 緩沖池的內存的增加,TLB 緩存上的壓力也隨之增加。

結束語

當在支持 64 KB 頁面大小且采用最新的 AIX 5L V5.3 TL04 操作系統的系統上運行時,DB2 9 會自動檢測和使用 64 KB 頁面大小。這種較大的頁面大小可以立桿見影地提高性能。但是性能上的提高量卻是變化不定的(取決於工作負載,范圍在 5% 與 13% 之間)。現在,在采用較大內存的系統上,通過有效地利用 TLB 緩存限制將虛擬地址轉換為物理地址時所帶來的開銷,可以從硬件投資中獲得更高的收益。此外,DB2 還允許自定義配置 16 MB 大型頁面和 16 GB 巨型頁面,如果需要更高的性能,還可以利用這一點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved