從 Red Hat Enterprise Linux 2.1 AS升級到 Red Hat Enterprise Linux 3

tolywang發表於2005-02-27

                  許多使用者已經開始從 Red Hat Enterprise Linux 2.1 Advanced Server (RHAS2.1) 向 Red Hat Enterprise Linux 3 (RHEL3) 移植,或者正部署一些新的伺服器到 RHEL3 上,並且有幾個問題。一些大家熟知的特性要麼行為發生了一些變化,要麼命名或實施發生了變化。我將試著說明 RHAS2.1 的一些更常用的特性以及如何在 RHEL3 中使用它們。

在這篇技術說明中,我將重點講述使用 Oracle VLM 選項來建立一個大的資料庫 buffercache,以及如何使用 hugetlb。


新的核心命名

RHAS2.1 for ia32
2.4.9-e.25 — 單處理器核心
2.4.9-e.25-smp — 能夠處理最高達 4GB 的實體記憶體的 SMP 核心
2.4.9-e.25 — 能夠處理最高達 16GB 左右的實體記憶體的企業 SMP 核心

使用者空間能夠訪問使用者空間段的 3GB 左右;核心部分位於其餘的 1GB 中(32 位系統上的 4GB 地址空間)。

預設的 SGA 最高可達 1.7GB (共享池和 buffercache)。透過使用 MAPPED_BASE 和將 Oracle 可執行程式與低位附加地址重新連結,有可能建立更大的、最高達 2.7GB 的 SGA。

RHEL3 for ia32
2.4.21-4.EL — 單處理器核心
2.4.21-4.ELsmp — 能夠處理最高達 16 GB 的實體記憶體的 SMP 核心
2.4.21-4.ELhugemem — 能夠處理超過 16 GB,最高達 64 GB 的 SMP 核心

與 hugemem 核心的另一個差異是核心和使用者空間地址空間被分為 4GB/4GB,這意味著使用 hugemem 核心,使用者空間程式可以訪問其 4GB 的地址空間。

使用 smp 核心,預設的 SGA 大小與 RHAS2.1 中一樣。不過,使用 hugemem 核心,可以建立一個最高達 3.6GB 的 SGA,且無需使用 VLM 選項。

bigpages 與 hugetlb

RHAS2.1 中一個典型的大型伺服器部署將使用 bigpages 作為啟動引數來預先分配一大塊記憶體,以單獨用於共享記憶體。這些頁面擁有一個 2MB 或 4MB 的 TLB 入口,它減少了 TLB 丟失的數量,因此將效能提高了幾個百分點。

在 RHAS2.1 中使用 bigpages 的另一個好處是它允許核心 VM 不用過多地擔心這部分虛擬記憶體的記錄。而且這些頁面不是可分頁或可交換的,因此可以保證 Oracle SGA 保留在主實體記憶體中。

Enterprise Linux 3 用一個稱為 hugetlb 的特性取代了 bigpages,在 Linux kernel 2.6 中也有 hugetlb 的一個移植。hugetlb 的工作方式有一些不同。Hugetlb 的行為類似於 bigpages 的行為;頁面由大的 TLB 入口支援,不可分頁,並且是預先分配的,這意味著一旦您分配了 x 兆位元組的 hugetlb 頁面,就只能透過利用 SHM_HUGETLB 分配的 hugetlbfs 或 shm 來使用該數量的實體記憶體。

RHEL3 不再需要啟動引數;它是可以動態調整的。在系統啟動之後,您可以向 /proc/sys/vm/hugetlb_pool 回送一個值,或者您可以將您想要的值放在 /etc/sysctl.conf 中。這個值的單位是兆位元組,它可以分配大約 2MB 的頁面。您可以在 /proc/meminfo 中看到這些值:

Hugepages_Total:500
Hugepages_Free:500
Hugepagesize:2048k

不過注意,核心需要找到 2MB 的連續物理頁面來分配 hugetlb 池。它盡力獲取儘可能多的頁面,但如果因存在二進位制程式正在執行而使得存在大量的碎片,則池分配將可能失敗。

想要分配共享記憶體的程式必須新增一個標記(SHM_HUGETLB)到 shmget() 標記。( 將預設這麼做;對於 Oracle9i Database,則需要一個補丁。)這種方式確保 Oracle 共享記憶體段將在這個池外分配。

VLM 選項

對於 RHEL3,要用 VLM 選項來建立一個非常大的 buffercache,有兩個選項:

  • 使用 shmfs(就像您在 RHAS2.1 中將做的一樣):將一個具有特定大小的 shmfs 載入到 /dev/shm 中,並設定正確的許可權。請記住,在 RHEL3 中,shmfs 分配的記憶體是可分頁的。
  • 使用 ramfs:除了頁面不是可分頁/可交換之外,ramfs 類似於 shmfs。這種方式提供了通常期望的效果。Ramfs 是透過載入 -t ramfs ramfs /dev/shm (先解除安裝 /dev/shm)來建立的。這裡唯一的不同是 ramfs 頁面不被大頁面支援。
引數 use_indirect_data_buffers=true 保持一樣;Oracle 端的設定不一定要改變。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84302/,如需轉載,請註明出處,否則將追究法律責任。

相關文章