大頁記憶體(HugePages),有時也叫“大記憶體頁”、“記憶體大頁”、“标準大頁”。作業系統以記憶體頁為機關管理記憶體,記憶體頁的大小對系統性能有影響。記憶體頁設得太小,記憶體頁會很多,管理記憶體頁的數組會比較大,耗記憶體,同時TLB(Translation Lookaside Buffer,頁表寄存緩沖器,可了解為頁表緩沖)大小是固定的,導緻TLB MISS增加。在不同的應用場合,記憶體頁的大小的最優值是不同的。是以一般的系統都支援多種記憶體頁的取值。
“大記憶體頁”有助于 Linux 系統進行虛拟記憶體管理。顧名思義,除了标準的4KB大小的頁面外,它還能幫助管理記憶體中的巨大的頁面(通常是2MB)。使用“大記憶體頁”,你最大可以定義 1GB 的頁面大小。對于那些記憶體操作非常頻繁的業務來說,可以有效的提高性能。簡而言之,通過啟用大頁記憶體,系統隻需要處理較少的頁面映射表,進而減少通路/維護它們的開銷!
大頁記憶體類似專用記憶體,會從系統中摳出一塊大記憶體,而想要使用這塊記憶體,應用程式必須修改程式。 其次,如果程式記憶體使用較少,卻申請了大頁,就造成了記憶體浪費,這個時候就要用到透明大頁(Transparent Huge Pages,THP)了。這兩者的差別在于大頁的配置設定機制:标準大頁管理是預配置設定的方式,而透明大頁管理則是動态配置設定的方式,且不需要修改程式源碼。
THP 是一個提取層,可用于自動建立、管理和使用超大頁面的大多數方面。THP可以改進系統的性能,可以減少使用超大頁面的複雜行,目前THP已在各種系統、配置、程式和負載中測試優化,可以改進大多數系統配置的性能。
grep Huge /proc/meminfo #檢視大頁記憶體使用情況 cat /sys/devices/system/node/node*/meminfo | fgrep Huge #檢視各個numa節點的大頁記憶體情況 cat /proc/mounts #檢視大頁記憶體挂載情況