Почему в зоне памяти ядра меньше 896 МБ?
В моей системе Lowmem ядра (NORMALZONE) имеет длину 597424 кб. Насколько я знаю, это должно быть около 890 МБ в макс. Почему эта система использует ~590 МБ? Это настраивается?
Я спрашиваю об этом, потому что время от времени я сталкиваюсь с низкими условиями в этой системе. Поэтому я хочу использовать lowmem как можно больше.
Linux 3.10.24-2 # 1 SMP вт 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
1 ответ
Я не уверен, что меня услышат на этот раз, но я все равно попробую: переключиться на x86_64
не так сложно, как вы думаете.
Но я думаю, вам все еще нужно какое-то объяснение. Я предполагаю, что если у вас будет только 4G памяти, то LowTotal
будет равно ~850 МБ, для 16G это будет около ~750 МБ, а для 64G это будет ~378 МБ.
Позвольте мне привести Linux Торвальдса:
Вся ваша нехватка памяти используется для
struct page
массивы, которые описывают все остальное.
Таким образом, на самом деле обходной путь для вашей проблемы состоит в том, чтобы уменьшить объем памяти сервера (физически или, возможно, через mem
параметр загрузки но я не проверял).
Также вы можете изменить ядро / разделение пространства пользователя через VMSPLIT_2G
опция конфигурации ядра.
Но на самом деле перейти на x86_64 проще, не так ли? знак равно
PS. Вы можете использовать x86 userland с ядром x86_64.