Linux
為什麼核心低記憶體區域小於 896 MB?
在我的系統中,核心 (NORMALZONE) 的 Lowmem 長度為 597424 kb。據我所知,最大應該是 890 MB。為什麼這個系統使用 ~590 MB?可調嗎?我問這個是因為,我在這個系統上不時
面臨低記憶體 oom 條件。所以我想盡可能大地使用lowmem。
Linux 3.10.24-2 #1 SMP Tue Dec 31 07:09:19 EET 2013 i686 i686 i386 GNU/Linux
# free -lk total used free shared buffers cached Mem: 37426296 3369432 34056864 0 36048 1373524 Low: 597424 278236 319188 High: 36828872 3091196 33737676 -/+ buffers/cache: 1959860 35466436 Swap: 35318864 0 35318864 # cat /proc/meminfo MemTotal: 37426296 kB MemFree: 33971268 kB Buffers: 36172 kB Cached: 1383668 kB SwapCached: 0 kB Active: 2034844 kB Inactive: 1036224 kB Active(anon): 1656904 kB Inactive(anon): 12716 kB Active(file): 377940 kB Inactive(file): 1023508 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 36828872 kB HighFree: 33667168 kB LowTotal: 597424 kB LowFree: 304100 kB SwapTotal: 35318864 kB SwapFree: 35318864 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 1653176 kB Mapped: 138320 kB Shmem: 18348 kB Slab: 117464 kB SReclaimable: 44796 kB SUnreclaim: 72668 kB KernelStack: 7704 kB PageTables: 97184 kB NFS_Unstable: 0 kB Bounce: 116 kB WritebackTmp: 0 kB CommitLimit: 65259900 kB Committed_AS: 3876084 kB VmallocTotal: 122880 kB VmallocUsed: 27020 kB VmallocChunk: 23732 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 10232 kB DirectMap2M: 901120 kB
我不確定這次是否會被聽到,但無論如何我都會嘗試:切換到
x86_64
並不像你想像的那麼難。但我想你仍然需要某種解釋。我建議,如果你只有 4G 的記憶體,那麼 a
LowTotal
將等於 ~850mb,對於 16G,它將約為 ~750mb,而對於 64G,它將是 ~378mb。您所有的低記憶體都用於
struct page
描述其他所有內容的數組。因此,實際上解決您的問題的方法是減少伺服器擁有的記憶體量(物理上或可能通過
mem
引導參數,但我尚未檢查)。您還可以通過
VMSPLIT_2G
核心配置選項更改核心/使用者空間拆分。但實際上,切換到 x86_64 更容易,不是嗎?=]
PS。您實際上可以將 x86 使用者空間與 x86_64 核心一起使用。