为什么内核低内存区less于896 MB?

在我的系统内核Lowmem(NORMALZONE)是597424 kb的长度。 据我所知,它应该是最大890 MB。 为什么这个系统使用〜590 MB? 它是可调的吗?
我问这个问题是因为,我在这个系统上面临着低迷的时间 。 所以我想尽可能使用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并不像你想象的那样困难。

但是我想你还是需要一些解释。 我build议,如果你只有4G的内存,那么LowTotal将等于〜850MB,16G则约为750MB,而64G则为〜378mb。

让我引用Linux Torvalds :

所有的低内存用于描述其他所有的struct page数组。

所以实际上你的问题的解决方法是减less内存服务器的数量(物理上或可能通过mem启动参数,但我没有检查)。
您也可以通过VMSPLIT_2G内核configuration选项更改内核/用户空间分割。
但真的,切换到x86_64只是更容易,不是吗? =]

PS。 您实际上可以使用x86用户空间和x86_64内核。