
In meinem System ist der Lowmem des Kernels (NORMALZONE) 597424 kb lang. Soweit ich weiß, sollte er maximal 890 MB betragen. Warum verwendet dieses System ~590 MB? Ist es anpassbar?
Ich frage das, weil ich mitLowmem-Oom-Bedingungen auf diesem System von Zeit zu Zeit. Daher möchte ich möglichst viel Lowmem verwenden.
Linux 3.10.24-2 #1 SMP Dienstag, 31. Dezember 2013, 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
Antwort1
Ich bin nicht sicher, ob ich dieses Mal gehört werde, aber ich werde es trotzdem versuchen: Der Wechsel zu x86_64
ist nicht so schwer, wie Sie denken.
Aber ich schätze, Sie brauchen trotzdem eine Erklärung. Ich schlage vor, wenn Sie nur 4 GB Speicher hätten, LowTotal
wären es ungefähr 850 MB, bei 16 GB wären es ungefähr 750 MB und bei 64 GB wären es ungefähr 378 MB.
Lass michzitieren Linux Torvalds:
Ihr gesamter unterer Speicher wird für die
struct page
Arrays verwendet, die alles andere beschreiben.
Die eigentliche Problemumgehung für Ihr Problem besteht darin,reduzierenSpeichermenge, die der Server hat (physisch oder möglicherweise übermem
Boot-Parameteraber ich habe es nicht überprüft).
Sie können die Kernel-/Userspace-Aufteilung auch ändern überVMSPLIT_2G
Kernel-Konfigurationsoption.
Aber eigentlich ist die Umstellung auf x86_64 doch einfacher, oder? =]
PS. Sie können tatsächlich x86-Userland mit x86_64-Kernel verwenden.