hab einen Server mit 32Bit Debian und 4 GB RAM. Allerdings erkennt der Kernel nur 2,5 GB RAM. Memory Hole ist im BIOS aktiviert, HIGHMEM im Kernel auch.
# cat .config| grep HIGHMEM
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
# free
total used free shared buffers cached
Mem: 2565380 31720 2533660 0 1744 10496
-/+ buffers/cache: 19480 2545900
Swap: 3903752 0 3903752
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Lieber nicht... für die Bearbeitung der Kernel-Konfiguration gibt's hüsche Frontends wie menuconfig... etwas relativ triviales wie Highmem kann man aber auch direkt in der Konfiguration ändern (vorausgesetzt, man weiß, was man tut). Den Kernel neu übersetzen muss man hinterher aber trotzdem noch 8)
Habe nun aus meiner Distribution Debian Etch das Paket "linux-headers-2.6.18-4-686-bigmem" installiert - neugestartet - und nun werden auch die 4GB RAM angezeigt.
Mal grundsätzlich - ich habe bald einen neuen Rootserver (Core 2 Duo / 4 GB RAM) und mein Hoster hat leider das Rescue-System bislang nur für 32-bit Linux am laufen.. sprich - sollte ich Debian 64-bit installieren, habe ich womöglich ein Problem, weil ich aus dem Rescue-System nicht mal grub oder lilo starten kann. ;)
Mit HIGHMEM und PAE sollte man ja theoretisch unter 32-bit Debian auch ohne Probleme die 4 GB ansprechen können. Ich habe allerdings diverse Horrorgeschichten gehört, was dann alles passieren kann ;) ("Im schlimmsten Fall kann der Kernel nicht den ganzen benötigten RAM in den LOWMEM mappen und killt dann wegen Speichermangel Prozesse, obwohl eigentlich noch genügend RAM im HIGHMEM übrig wäre")
Außerdem möchte ich gern Xen verwenden.
Was würdet ihr sagen - lieber 32-bit, weil es in der Praxis trotzdem sehr gut läuft, oder aufs Rescue vorerst (angeblich kommt es in einem Monat) verzichten und Debian 64-bit nehmen, weil alles andere Quatsch wäre?
Solange Du nicht über 4GB RAM hast, solltest Du bei 32Bit (CONFIG_HIGHMEM64G=y) bleiben, insbesondere in Verbindung mit XEN.
Die Horrorgeschichten würden mich interessieren, URL?
auf einem 32-Bit System? Mit der 4GB-Option kann man keine 4GB RAM adressieren, weil ein Teil des Adressraums für Hardware-Adressen reserviert ist. Das habe ich verstanden. Aber was macht die 64GB-Option? Sorgt die nur dafür, dass der Kernel bei der Speicheradressierung auf PAE zurükgreift, oder ist das ein davon unabhängiger Mechanismus? Wenn tatsächlich nur PAE dadurch genutzt wird, würde ich dann fast eher zu einem 64 Bit OS raten, denn PAE als Abstraktionsschicht zwischen Speicherbus und VME ist dann doch eine eher schmutzige Angelegenheit, was Performance und (potenzielle) Fehleranfälligkeiten angeht (allein durch das Mapping von 36-Bit-Adressen (Kernel-Sicht) auf 32-Bit-Adressen (Prozess-Sicht) dürfte einiges an Performance verloren gehen).
The main danger of running on a 32 bit system with lots of highmem (more than 8GB) is that the kernel could end up needing to allocate more data than what fits in ZONE_NORMAL. This means the machine can effectively run out of memory, even if there were still lots of high memory free.
Another issue is that the system will more aggressively reclaim kernel data structures like cached inodes, buffer heads and other caches that can help system performance.
The third issue is that, on a 32 bit system, no process will be able to effectively use more than 3GB of memory. This means that buying more than 4GB of memory is only useful if none of the processes on your system need all of the memory.
Alles in allem klingt HIGHMEM64G irgendwie mehr wie eine Krücke, als wie eine Lösung. :/ Jetzt ist nur die Frage - hat man bei genau 4 GByte RAM mehr Ärger durch HIGHMEM64G, oder durch ein komplettes 64-bit OS? ;)
Aber was macht die 64GB-Option? Sorgt die nur dafür, dass der Kernel bei der Speicheradressierung auf PAE zurükgreift
Nun muss ich die Thematik auch nochmal aufwirbeln :)
Bei mir steht nächste Woche eine 8 GB RAM Maschine in den Startlöchern. Ich habe mir philwo's Links durchgelesen und augenscheinlich scheint es erst bei mehr als 8 GB RAM Probleme zu geben, andererseits soll man bei über 4 GB 64Bit in Erwägung ziehen.
Hat jemand tiefergreifende Erkenntnisse? Ich würde 32bit preferieren, ein Prozess der > 3 GB RAM für sich allein braucht wird sowieso nicht auf dem Server laufen.
"ultra extremely low performance" ist nicht zu spüren. ;) Ich habe zwar keine Benchmarks gemacht, aber der Server geht soweit gut ab. ;)
millo, magst du mir PN schreiben, wo du deinen 8 GByte Server bestellt hast? Ich hatte nämlich auch so ein 8 GByte Angebot im Auge, aber wir haben dann erstmal einen mit 4 genommen (man muss sich ja nicht gleich übernehmen ;)).