Kernel / Benutzerspeicher aufteilung

Post Reply
Message
Author
Zwiling

Kernel / Benutzerspeicher aufteilung

#1 Post by Zwiling »

Hallo,

seit einiger Zeit befindet sich im Kernel ja die Möglichkeit, die Aufteilung des Hauptspeichers in Anwendungs- und Kernelspeicher zu verändern (2/2 oder 3/1).

jetzt frage ich mich, warum in aller Welt braucht der Kernel überhaupt soviel Speicher? Was läuft da noch aus eben dem Kernel und den Treibern, was auch im schlimmsten Falle nicht mehr als 50MB sein dürften?
Warum ist die Standardeinstellung für die (virtuelle) Spreicheraufteilung dann auf 2G/2G eingestellt und nicht 3G/1G? Und, wie bereits angefragt warum überhaupt ein volles Gig (oder eben gar 2) für den Kernel?

Abgesehen von nfs laufen ja auch die meisten Dienste im Benutzermodus, also sollte auch für Server zumindest eine 3/1 teilung vorteilhafter sein, eben mehr Speicher für die Anwendungen.
Bliebe noch die Frage nach dem System(Platten)cache.

Hat jemand mehr wissen oder (_verständliche_) Links zu diesem Thema?

Danke

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Du verwechselst *Speicher* mit *Speicheradressen*. In der 3/1-Konfiguration kann jeder Userspace-Prozess maximal 1GB RAM mappen, den Rest mappt der Kernel, zum Beispiel für Caches und Plattenpuffer. Die PCI-Mappings brauchen auch viele Speicheraddressen. Die GPU beispielsweise bis zu 256MB.

In der 2/2-Konfiguration kann jeder Prozess also 2GB RAM mappen, der Kernel allerdings auch nur noch 2GB, wodurch er weniger Plattenpuffer und Caches mappen kann.

Welche der beiden Konfigurationen günstiger ist, hängt von der Anwendung ab. Meistens hat man keine Anwendungen, die mehr als 1GB gleichzeitig mappen müssen, also ist 3/1 das Default.

Braucht man mehr als 2GB Mappings je Prozess, muss man PAE verwenden, dann kann man maximal 4GB mappen. Darüber geht nur mit 64-Bit-CPUs.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Post Reply