Show Table of Contents
3.7. memory
memory(記憶體)子系統會根據使用於控制群組中的工作的記憶體資源,自動產生記憶體報告,然後設定這些工作所能使用的記憶體限制:
- memory.stat
- 回報廣泛的記憶體數據,如以下表格所述:
表格 3.1. memory.stat 所回報的值
數據 描述 cache分頁快取,包括 tmpfs(shmem),單位為位元組rss匿名與 swap 快取,不包含 tmpfs(shmem),單位為位元組mapped_file記憶體映射的已映射檔案之大小,包括 tmpfs(shmem)單位為位元組pgpgin分至記憶體中的分頁數量 pgpgout由記憶體中分出的分頁數量 swapswap 使用量,單位為位元組 active_anon啟用中、最近最少使用的(LRU)清單上的匿名,以及 swap 快取記憶體,包括 tmpfs(shmem),單位為位元組inactive_anon未啟用的 LRU 清單上的匿名與 swap 快取,包括 tmpfs(shmem),單位為位元組active_file啟用中的 LRU 清單上的檔案支援記憶體,單位為位元組 inactive_file非啟用中 LRU 清單上的檔案支援記憶體,單位為位元組 unevictable無法重新收回的記憶體,單位為位元組 hierarchical_memory_limit包含了 memorycgroup 的階層記憶體限制,單位為位元組hierarchical_memsw_limit記憶體加上包含了 memorycgroup 的階層的 swap 限制,單位為位元組此外,除了hierarchical_memory_limit和hierarchical_memsw_limit之外,這些檔案皆有對應的前綴total_,它不僅會回報控制群組,還會回報它的所有子群組。比方說,swap會回報控制群組的 swap 使用量,而total_swap則會回報控制群組和其所有子群組的 swap 使用量。當您詮釋memory.stat所回報的值時,請注意各數據如何相互關聯;active_anon+inactive_anon= anonymous memory +tmpfs的檔案快取 + swap 快取因此,active_anon+inactive_anon≠rss,因為rss不包含tmpfs。active_file+inactive_file= cache -tmpfs的大小
- memory.usage_in_bytes
- 回報控制群組中,程序目前所使用的記憶體使用量總數(位元組)。
- memory.memsw.usage_in_bytes
- 回報控制群組中,程序目前所使用的記憶體數量與 swap 空間的總和(單位為位元組)。
- memory.max_usage_in_bytes
- 回報控制群組中,程序所使用的最大記憶體數量(單位為位元組)。
- memory.memsw.max_usage_in_bytes
- 回報控制群組中,程序所使用的最大記憶體數量與 swap 空間(單位為位元組)。
- memory.limit_in_bytes
- 設置最大的使用者記憶體數量(包括檔案快取)。若沒有指定單位的話,數值將會被解譯為位元組。然而,您可透過使用字尾來指定較大的單位 —
k或K代表 KB,m或M代表 MB,以及g或G則代表 GB。您無法使用memory.limit_in_bytes來限制 root 控制群組;您只可將值套用至階層中,處於較低階層的群組中。將-1寫入memory.limit_in_bytes,以移除任何既有的限制。 - memory.memsw.limit_in_bytes
- 設置最大的記憶體總和與 swap 使用量。若沒有指定單位的話,數值將會被解譯為位元組。然而,您可透過使用字尾來指定較大的單位 —
k或K代表 KB,m或M代表 MB,以及g或G則代表 GB。您無法使用memory.memsw.limit_in_bytes來限制 root 控制群組;您只可將值套用至階層中,處於較低階層的群組中。將-1寫入memory.memsw.limit_in_bytes,以移除任何既有的限制。 - memory.failcnt
- 回報記憶體限制超過
memory.limit_in_bytes中所設置的值的次數。 - memory.memsw.failcnt
- 回報記憶體加上 swap 空間限制超過
memory.memsw.limit_in_bytes中所設置的值的次數。 - memory.force_empty
- 當設為
0時,會將此控制群組中的工作所使用的所有分頁記憶體清空。此介面只能在控制群組沒有工作時才可使用。若記憶體無法釋放的話,它便會視情況被移至父控制群組中。請在移除控制群組之前,使用memory.force_empty來避免將未使用的分頁快取移至其父控制群組中。 - memory.swappiness
- 設置 kernel 的傾向特性,以將使用於此控制群組中的程序的記憶體換出,而不是由分頁快取收回分頁。這和為系統設置於
/proc/sys/vm/swappiness中的特性相同,計算方式也相同。預設值為60。若使用的值比60還要低的話,將會降低 kernel 換出程序記憶體的傾向,大於60的值會提高 kernel 換出程序記憶體的傾向,並且當值大於100時,kernel 將會開始換出此控制群組中,屬於程序的位址空間一部分的分頁。請注意,0這個值無法避免程序記憶體被切換出;當系統記憶體不足時,換出這個動作還是有可能會發生,因為全域虛擬記憶體管理邏輯不會讀取 cgroup 的值。若要完全地封鎖分頁,請使用mlock()來代替 cgroup。您不可更改下列群組的 swappiness:- root 控制群組,使用了設置於
/proc/sys/vm/swappiness中的 swappiness。 - 一個底下含有子群組的控制群組。
- memory.use_hierarchy
- 包含一個指定記憶體使用量是否應被記入控制群組階層中的旗標(
0或1)。若啟用的話(1),記憶體控制器將會由超過了它記憶體限制的程序和子程序收回記憶體。就預設值(0)來說,控制器不會由一項工作的子程序收回記憶體。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.