Por que o Kernel Low memory zone é menor que 896 MB?

1

No meu sistema, o Lowmem do kernel (NORMALZONE) tem 597424 kb de comprimento. Tanto quanto eu aprendo, deve ser cerca de 890 MB no máximo. Por que esse sistema usa ~ 590 MB? É ajustável?
Eu estou perguntando isso porque, estou enfrentando com baixas condições de tempo neste sistema de tempos a tempos . Então, eu quero usar o lowmem o maior possível.

Linux 3.10.24-2 # 1 SMP Ter Dez 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
    
por seaquest 31.12.2013 / 07:07

1 resposta

3

Não tenho certeza de que serei ouvida desta vez, mas tentarei mesmo assim: mudar para x86_64 não é tão difícil quanto você pensa.

Mas eu acho que você ainda precisa de algum tipo de explicação. Eu proponho que se você tivesse apenas 4G de memória, então um LowTotal seria igual a ~ 850mb, para 16G seria em torno de ~ 750mb e para 64G seria ~ 378mb.

Deixe-me citar o Linux Torvalds :

All your low memory is used for the struct page arrays that describe everything else.

Então, na verdade, uma solução alternativa para o seu problema é reduzir a quantidade de memória que o servidor tem (fisicamente ou possivelmente via mem boot param mas eu não verifiquei).
Além disso, você pode alterar o kernel / userspace split através da VMSPLIT_2G opção de configuração do kernel .
Mas realmente, mudar para x86_64 é apenas mais fácil, não é? =]

PS. Você pode realmente usar o userland x86 com o kernel x86_64.

    
por 01.01.2014 / 04:41