章 4. 記憶體

本章節將概述 Red Hat Enterprise Linux 7 管理記憶體的能力。〈節 4.1, “考量”〉討論與記憶體相關影響效能的因素。〈節 4.2, “監視與診斷效能問題” 〉教您如何使用 Red Hat Enterprise Linux 7 工具來診斷與記憶體使用率或設定細節相關的效能問題。〈節 4.3, “配置工具”〉則討論可以被用來解決 Red Hat Enterprise Linux 7 內與記憶體相關的效能問題的工具與策略。

4.1. 考量

在預設情況下,系統會最佳化 Red Hat Enterprise Linux 7 來控管工作負載。如果您的系統管理員或使用案例需要大量的記憶體,更改系統管理虛擬記憶體的方式可以改善應用程式的效能。

4.1.1. 分頁大小

實體記憶體是由稱為分頁的區塊來管理。每一分頁的實體位置會對應至一個虛擬的位置,好讓處理器可以存取記憶體。此對應儲存於資料結構中,稱為分頁表。
在預設情況下,一頁大概是 4 KB 大小。因為預設分頁很小,您需要很多分頁來管理大量的記憶體。然而,分頁表只能儲存有限的位址對應,增加它可以儲存的位址對應不僅很昂貴,對將效能等級維持在記憶體需求等級來說也很困難。
Red Hat Enterprise Linux 也讓每一個分頁用靜態大分頁管理大量記憶體。靜態大分頁最大可以被設為 1 GB。但是它們很難用手動管理,而且必須在開機時就被指派。至於 Red Hat Enterprise Linux 7.1,它們可以透過每個節點為基準被指派。
透明大分頁是靜態大分頁大量自動化的替代品。透明大分頁的大小是 2 MB,而且可以在預設情況中啟用。它們有時候可能會影響延遲敏感的應用程式,所以當延遲有可能發生時,它們會被停用。
欲了解設定大分頁來改善應用程式效能的細節,請見〈節 4.3.1, “設定巨大分頁”〉。

4.1.2. 轉譯對應緩衝區大小

從分頁表讀位置對應是很浪費時間而且消耗資源的,所以 Linux 執行系統為近期使用的位置提供快取:轉譯對應緩衝區(TLB)。但是在預設情況下 TLB 只能快取一定數量的位置對應。如果要求的位置對應不在 TLB 裡面(意思是這個 TLB 是「未猜中」─ miss 的),那麼系統仍然需要讀取分頁表來決定虛擬位置對應的實體。
因為應用程式記憶體需求與用來快取位置對應的分頁大小之間的關係,對有大量記憶體需求的應用程式來說,跟有最小記憶體需求的應用程式比起來,其效能較有可能因為 TLB 未猜中而下降。因此要盡量避免 TLB 未猜中。
Red Hat Enterprise Linux 提供超大轉譯緩衝器(HugeTLB)。它讓記憶體可以在非常大的區段被管理。這讓系統可以一次快取較多的位置對應,也減少 TLB 未猜中的可能性,進而改善有大量記憶體需求的應用程式的效能。
欲了解設定 HugeTLB 的細節,請見〈節 4.3.1, “設定巨大分頁”〉。