Memory

Linux Huge Pages 使用統計

  • November 14, 2014

我已經將 Huge Pages 配置為與 Java 一起使用,儘管我對 /proc/meminfo 中的會計有疑問,但它似乎執行良好。為了顯示

# grep HugePages /proc/meminfo 
AnonHugePages:    274432 kB
HugePages_Total:    1008
HugePages_Free:      596
HugePages_Rsvd:      594
HugePages_Surp:        0

我的問題涉及“免費”和“Rsvd”數字 - 為什麼它們加起來不等於 1008 的“總計”?它們實際上加起來是 1190。我在這裡不明白什麼?

這是因為 HugePages_rsvd 本質上是從 HugePages_Free 中讀取的。這意味著,在 596 個免費的大頁面中,有 594 個已被某些應用程序保留以供使用。那就是核心已經承諾這 594 個大頁面可供應用程序使用。

如果現在有 3 個大頁面的請求,那麼它將失敗,因為只有 2 個可以被保留。將其視為 malloc() 呼叫,當您保留記憶體虛擬頁面以說明程序的 VSZ 但當程序實際使用它們時,它成為程序的 RSZ(執行集)。

由於大頁面總是駐留在主記憶體中,當應用程序請求它們時,核心會從空閒池中減少它並增加 Rsvd 計數器。

這是來自核心原始碼。https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt

where:
HugePages_Total is the size of the pool of huge pages.
HugePages_Free  is the number of huge pages in the pool that are not yet
               allocated.
HugePages_Rsvd  is short for "reserved," and is the number of huge pages for
               which a commitment to allocate from the pool has been made,
               but no allocation has yet been made.  Reserved huge pages
               guarantee that an application will be able to allocate a
               huge page from the pool of huge pages at fault time.
HugePages_Surp  is short for "surplus," and is the number of huge pages in
               the pool above the value in /proc/sys/vm/nr_hugepages. The
               maximum number of surplus huge pages is controlled by
               /proc/sys/vm/nr_overcommit_hugepages.

引用自:https://serverfault.com/questions/438463