Immer noch Geschwindigkeitsprobleme mit >1GB RAM?

Jan-Benedict Glaw jbglaw at lug-owl.de
Fre Aug 11 20:35:31 CEST 2006


On Fri, 2006-08-11 20:22:07 +0200, Christian Horn <christian.horn at muc-t-systems.com> wrote:
> On Fri, Aug 11, 2006 at 08:06:53PM +0200, Jan-Benedict Glaw wrote:
> > > Besteht dieses Problem immer noch, oder hat sich da mittlerweile was 
> > > getan? (Wir müssen eine Kiste, auf der 2.6.17.8 läuft eigentlich so 
> > > schnell wie möglich von 1GB auf 2GB bringen, wollen da aber nicht vor 
> > > dem gleichen Problem wie damals stehen :->)
> > 
> > Da über das Problem quasi keinerlei exakte Daten vorliegen wird man
> > dazu nichts sagen können :-(
> 
> Dem schliesse ich mich an, so krasse Performanceunterschiede habe ich
> da noch nicht erlebt. Der letzte Artikel den ich zum thema sah:
> http://kerneltrap.org/node/6067

Da geht es um eine andere Baustelle: Mit 1GB RAM kannst Du den RAM
problemlos mit 32bit-Pointern ansprechen; irgendwo wird zwischen
userland und kernelland die Grenze gezogen. Im schlimmsten Fall fehlen
Dir "einige" MB RAM.

Mit 4GB RAM hat Du ein anderes Problem: die ("legacy") 32bittigen
PCI-Karten brauchen I/O. Anders als bei ISA-Geräten, die nur den
Adreßraum zwischen 0..16MB addressieren können, haben PCI-Karten die
Möglichkeit, die vollen 4GB zu adressieren. Da bei PeZehs der Speicher
"von unten" hochgezählt wird und früher solche RAM-Mengen eher
nicht-existent waren, wurde der I/O-Bereich der PCI-Karten unter die
physikalische Oberkante, also 4GB, gehängt.

PCI-Karten können aber ihrerseits RAM und wasnichtwas mitbringen.
Daher muß das Fenster für PCI-Karten _groß_ sein, meist einige 100MB.
Das bedeutet im Umkehrschluß, daß das Chipset den physikalisch
vorhandenen RAM im Bereich von (fiktiven) 3.5 .. 4GB ausblenden muß,
um in diesem Bereich 500MB an I/O-Platz für die PCI-Geräte
freizuhalten.

Bei "billigen" Chipsets sind diese 500MB RAM schlichtweg verloren. Sie
sind bezahlt und garantiert unbrauchbar.

Die Luxus-Variante ist, daß ein fähiges Chipset den überdeckten RAM an
die Adressen von 4GB aufwärts legt. Damit ist er wieder verfügbar.
Einziger Haken: Jenseits der 4GB braucht man mehr als 32bit, um zu
adressieren. Benutzer-Programme, die allesamt 32bittig laufen, können
weiterhin maximal 4GB (im virtuellen Adreßraum) groß sein, aber der
Kernel muß mit Tricks und Kniffen irgendwie auch Adressen mit mehr als
32bit generieren können, um den RAM ab der Adresse 4GB zu adressieren.
Dazu werden die Physical Address Extensions, PAE genannt, genutzt.

Leider gibts die nicht für umsonst: der Kernel muß _einiges_ mehr an
Verwaltungs-Aufwand treiben, _auch_ für all den RAM < 4GB.

Daher kann es sich lohnen, lieber auf das halbe Gig zu verzichten, als
dafür den Preis erhöhter Langsamkeit (<-- kreativ:-) zu zahlen.

Das Ärgerliche hierbei ist, daß es sich nicht um 50MB oder so handelt,
bei bei 1GB physikalischem RAM, sondern daß man hier, je nach Chipset,
BIOS und PCI-Karten, schnell auch mal auf 800MB verzichten muß.

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:  The real problem with C++ for kernel modules is: the language just sucks.
the second  :                                            -- Linus Torvalds
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : http://www.tlug.de/pipermail/tlug_allgemein/attachments/20060811/1a277b05/attachment.pgp