在我的系统中,内核的 Lowmem(NORMALZONE)长度为 597424 kb。据我所知,它最多应该为 890 MB。为什么这个系统使用 ~590 MB?它是可调的吗?
我问这个问题是因为我面临着此系统不时出现低内存 oom 情况。所以我想将lowmem用得尽可能大。
Linux 3.10.24-2 #1 SMP 2013 年 12 月 31 日星期二 07:09:19 EET 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
答案1
我不确定这次我的意见是否会被听到,但无论如何我都会尝试:转换x86_64
并不像你想象的那么难。
但我想你仍然需要某种解释。我认为如果你只有 4G 内存,那么 aLowTotal
等于 ~850mb,对于 16G 内存,它大约是 ~750mb,对于 64G 内存,它大约是 ~378mb。
所有低位内存都用于
struct page
描述其他所有内容的数组。
因此,解决您的问题的实际方法是减少服务器拥有的内存量(物理上或可能通过mem
启动参数但我还没有检查过)。
你也可以通过以下方式更改内核/用户空间分割VMSPLIT_2G
内核配置选项。
但实际上,切换到 x86_64 更容易,不是吗?=]
PS. 您实际上可以将 x86 用户空间与 x86_64 内核一起使用。