Linux 4GB Arbeitsspeicher

Jan-Benedict Glaw jbglaw at lug-owl.de
Mon Dec 16 16:45:02 CET 2002


On Mon, 2002-12-16 16:07:01 +0100, Johannes Vieweg <jvg at gmx.net>
wrote in message <200212161507.gBGF72N01421 at LittleBrother.Guilligan>:
> Am Montag, 16. Dezember 2002 15:24 schrieben Sie:
> > Hallo,
> >
> > Ich moechte auf einem PC mit 4 GB Arbeitsspeicher (XEON P4 Prozessor)
> > einen Prozess starten, der auch die 4 GB voll ausnutzt. Leider kann
> > ich aber maximal etwa 2.3 GB allocieren. Ich habe bereits versucht
> > einen neuen Kernel zu compilieren, mit anderem kernel/user space
> > Verhaeltnis. Aber leider hat das nicht viel geaendert.
> 
> Müsste aber eigentlich gehen. Ich kann mich an diverse SuSi-Kernels
> mit angeblichen 64GB RAM Unterstützung erinnern. Wenn ich nicht
> ganz von Alzheimer befallen bin, müsste es im Kernel eine Option
> a la "High Memory Support" geben. Damit dürfte das Prob gelöst sein.
> Btw, Du hast nen Kernel kompiliert, welchen denn? (Sollte aber schon
> 2.4.x sein...)

Falsch - das alles hilft: nix. Diese 64GB-Option ermöglicht es, mit
Prozessoren, die "PAE" unterstützen, bis zu 64GB RAM anzusprechen. Der
Kollege möchte aber, daß _ein_ Prozeß die gesamten 4GB einnehmen soll.
(...vielleicht mal von ein paar MB für den Kernel abgesehen). Das
funktioniert aber nicht (Design-Problem):

Kernel- und Userspace-Programme teilen sich den gesamten, linear mit
32bit addressierbaren Speicherraum. Der Kernel ist immer da, von den
Prozessen immer nur ein Teil (VM halt:-). Das Problem ist nun, daß von
den virtuellen Adressen her zu einem Zetpunkt immer der komplette Kernel
und der/die gerade laufenden Prozesse gemapt sein müssen (in Hardware
oder in software). Unter'm Strich bleibt das Flaschenöhr nicht der
physikalische Speicher-Bus (der dank PAE u.U. 64GB addressieren kann),
sondern der 32bittige Userspace. ...und da ist eine Adresse halt nur
32bit lang, und das muß für Kernel _und_ Applikation zusammen reichen.

Da sich der Kernel natürlich nicht das Wasser abgraben lassen will,
reserviert er aus dem 4GB-Adressraum erstmal die Hälfte (oder, je nach
Auswahl auch nur bis zu 512MB oder einem GB IIRC). Das ist für die
Applikation dann von den theoretischen 4GB abzuziehen. Mehr geht auf
32bit-Hardware halt nicht.

Kauf' Dir 'ne Alpha
Kauf' Dir 'nen PPC
Kauf' Dir 'ne UltraSPARC
Kauf' Dir 'ne MIPS64
Kauf' Dir 'nen Hammer
Kauf' Dir 'nen Itanium

...aber schmeiß den dicken 386'er-Verschnitt aus dem Fenster, wenn Du
mehr als 3GB RAM für eine Applikation brauchst[*].

MfG, JBG
[*] Alternativ kannst Du Dein Programm auch in mehrere Einzel-Programme
zersägen. Jedes malloc()iert dann 'nen GB und Du mapst Dir dann immer
den passenden Prozeß 'rein. Langsam, aber so kommst Du zu viel RAM...

-- 
   Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481
   "Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur
    fuer einen Freien Staat voll Freier Bürger" | im Internet!
   Shell Script APT-Proxy: http://lug-owl.de/~jbglaw/software/ap2/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lug-owl.de/pipermail/linux/attachments/20021216/d6363111/attachment.sig>


More information about the Linux mailing list