Kernel PAE um mehr als 3(4)GB RAM auf i386-System zu nutzen?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
ingo2
Beiträge: 1125
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Kernel PAE um mehr als 3(4)GB RAM auf i386-System zu nutzen?

Beitrag von ingo2 » 11.12.2007 22:07:58

wenn man mehr als 3(4) GB RAM nutzen möchte, z.B. wegen mehrerer VM's, gibt es prinzipiell ja 2 Möglichkeiten:

a) man nimmt gleich die amd64-Version.
Da ist aber nicht alle Software für 64-bit verfügbar (man könnte zwar per 'chroot' zwar nachrüsten ....)

b) man benutzt einen 32-bit Kernel und schaltet PAE frei.
Das ist die Idee, die mir für Lenny am besten gefällt. Grund ist, ich habe hier auch noch 'Parallels Workstation' und darin in einer VM OS/2 laufen. Das wird nur von Parallels unterstützt, es gibt aber keine amd64-Version davon.

Dazu meine Frage:

es gibt in der Kernel-Konfiguration den Punkt:
Code:

Code: Alles auswählen

Processor Type and Features -> High Memory Support -> no | 4GB | 64GB
Da sind original 4GB aktiviert, man kann aber auch 64GB konfigurieren. Arbeitet die CPU (Athlon64 X2) dann mit PAE?

Code: Alles auswählen

Processor Type and Features -> Memory Model -> Sparse Memory | Flat Memory
Sollte man da dann auch auf 'Sparse Memory' stellen?
Ich vermute, das dient dazu, das Loch für die PCI-Adressen von 3 - 4GB auszusparen?

Und die wichtigste Frage: "geht das überhaupt gut"?

P.S.: mein MB (ASUS M2N-E) und die CPU können definitiv mit > 4GB RAM umgehen und nutzen (6GB habe ich selbst schon getestet mit amd64-System)

Viele Grüße,
Ingo

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Kernel PAE um mehr als 3(4)GB RAM auf i386-System zu nutzen?

Beitrag von gms » 12.12.2007 14:13:01

ingo2 hat geschrieben: Da sind original 4GB aktiviert, man kann aber auch 64GB konfigurieren. Arbeitet die CPU (Athlon64 X2) dann mit PAE?
mit dieser Einstellung wird das System nicht einmal booten, wenn PAE von der CPU nicht unterstützt wird. Dh. wenn das System bootet, dann arbeitet die CPU mit PAE :roll:
ingo2 hat geschrieben:

Code: Alles auswählen

Processor Type and Features -> Memory Model -> Sparse Memory | Flat Memory
Sollte man da dann auch auf 'Sparse Memory' stellen?
mit PAE hat das nichts zu tun
ingo2 hat geschrieben: Und die wichtigste Frage: "geht das überhaupt gut"?
diese Frage kannst du dir sehr einfach selber beantworten: einen Testkernel bauen und versuchen diesen zu Booten, sollte diese Frage klären.

Gruß
gms

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.12.2007 14:21:01

Ob dein Prozessor PAE unterstützt siehst du so:

Code: Alles auswählen

cat /proc/cpuinfo | grep pae
Wurde bei Intel im Pentium Pro eingeführt.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.12.2007 14:33:11

problematisch ist aber eher das Mainboard, nicht daß einer denkt, wenn der Prozessor PAE unterstützt, sollte alles funktionieren

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.12.2007 15:37:51

Wenn ich das richtig verstanden habe wird bei einem x86_64 Prozessor, der im 64bit Modus läuft auch PAE aktiviert, d.h. mit einem Amd64 sollte PAE auf jeden Fall funktionieren.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.12.2007 16:18:15

Spasswolf hat geschrieben:Wenn ich das richtig verstanden habe wird bei einem x86_64 Prozessor, der im 64bit Modus läuft auch PAE aktiviert, d.h. mit einem Amd64 sollte PAE auf jeden Fall funktionieren.
sorry, aber bei einem 64 bit Kernel gibt es kein PAE

Gruß
gms

Benutzeravatar
ingo2
Beiträge: 1125
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Beitrag von ingo2 » 12.12.2007 18:43:08

Hey Leute, vielen Dank für die guten Antworten!

nach dem Test mit

Code: Alles auswählen

ingo@pp:~$ cat /proc/cpuinfo | grep pae
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
bin ich dann auch zur Tat geschritten und habe für ARCH386 und mit 32-bit Sourcen einen Kernel gebaut, bei dem ich die '64GB Speicher' aktiviert habe (PAE erscheint dann automatisch in gconfig und ist aktiviert). Alles glatt gelaufen:

der Kernel bootet,
meine 6GB RAM sind voll nutzbar
vorhandene Software scheint auch problemlos weiter zu funktionieren
und ich habe das Gefühl, daß das ganze System merklich schneller geworden ist.

Dafür sehe ich aber eigentlich keinen Grund, ist auch nur subjektiv und nicht gemessen ;-)

Das Dumme ist nur: Parallels-Workstation kompiliert seine Treiber problemlos (sind 4 Module) und installiert sie auch. Es läßt sich auch starten, aber die VM da drin mit OS/2 als Gast mag nicht mehr starten, kommt die Fehlermeldung "Unable to allocate memory for monitopr PE!" - was auch immer das bedeuten soll. Habe jedenfalls gleich mal das Problem in deren Forum gepostet.

Jetzt stellt sich natürlich die Gretchenfrage, ob es generell sinvoller ist, ein 32-bit System zu installieren und einen Kernel mit PAE zu verwenden,
oder, ob man lieber gleich ein 64-bit System und 'flat memory' verwendet.

Es ist natürlich verlockend, auf diese Weise alle vorhandene 32-bit Software weiter zu verwenden, könnte aber für die Zukunft eine Sackgasse sein?

Beste Grüße und nochmal vielen Dank für Eure Hilfe,
Ingo

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.12.2007 19:52:02

ingo2 hat geschrieben:Es läßt sich auch starten, aber die VM da drin mit OS/2 als Gast mag nicht mehr starten, kommt die Fehlermeldung "Unable to allocate memory for monitopr PE!"
wenn diese Fehlermeldung schon vom OS/2 kommt, muß dort vielleicht PAE extra aktiviert werden ( oder deaktiviert :? )
ingo2 hat geschrieben: Jetzt stellt sich natürlich die Gretchenfrage, ob es generell sinvoller ist, ein 32-bit System zu installieren und einen Kernel mit PAE zu verwenden, oder, ob man lieber gleich ein 64-bit System und 'flat memory' verwendet.
gegen einen 64-bit Kernel spricht nicht mehr sehr viel, auch ein 32-bit Userspace kann damit sehr gut betrieben werden. Probleme machen dabei allerdings externe Treiber, die noch zusätzliche Libraries benötigen und daher oft diesen "64 bit Kernel/32 bit Userspace" Modus nicht unterstützen.
ingo2 hat geschrieben:Es ist natürlich verlockend, auf diese Weise alle vorhandene 32-bit Software weiter zu verwenden, könnte aber für die Zukunft eine Sackgasse sein?
es gibt dann auch noch Biarch bzw Multilib Installationen, also wo du sowohl 32 bit, als auch 64 bit Programme laufen lassen kannst, dann sollte der Kernel klarerweise aber auch 64bit sein.

Gruß
gms

Benutzeravatar
ingo2
Beiträge: 1125
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Beitrag von ingo2 » 12.12.2007 20:45:50

Danke gms,

habe inzwischen nochmals das Manual zu Parallels studiert (sorry, hatte rtfm mal wieder vergessen;-)
Das kann auch mit PAE im Host-System nicht umgehen - traurig!

Habe einfach mit dem Parameter 'mem=4096M' gebootet und alles ist ok, aber eben wie bisher nur 3GB nutzbar - dann kann ich mir das Gefrickel auch sparen.

Da ich keine exotische Hardware habe, sondern von Linux voll unterstützte, und somit fremde Module nicht benutzen muß (außer GraKa = Nvidia, und deren Treiber ist ok), werde ich wohl endgültig auf ein 64-bit System setzen.
Ich behalte dann für Parallels mein altes 32-bit System, aber die Zukunft sollte man auch durch Mitmachen unterstützen!

Vielen Dank für Eure Hilfe - habe wieder Etliches dazu gelernt,
Ingo

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 13.12.2007 00:21:04

gms hat geschrieben:
Spasswolf hat geschrieben:Wenn ich das richtig verstanden habe wird bei einem x86_64 Prozessor, der im 64bit Modus läuft auch PAE aktiviert, d.h. mit einem Amd64 sollte PAE auf jeden Fall funktionieren.
sorry, aber bei einem 64 bit Kernel gibt es kein PAE

Gruß
gms
Was ich sagen wollte war, im 64bit Modus ist PAE immer an:
PAE Physical Address Extension (bit 5 of CR4) — When set, enables paging
mechanism to reference greater-or-equal-than-36-bit physical addresses.
When clear, restricts physical addresses to 32 bits. PAE must be enabled to
enable IA-32e mode operation. Enabling and disabling IA-32e mode opera-
tion also requires modifying CR4.PAE.
IA-32e heisst bei Intel der 64bit Modus. Quelle: Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 13.12.2007 12:31:03

Gegen eine Art "code reuse" umgelegt auf die CPU ( wie immer man das nennen mag ) ist ja auch nichts einzuwenden :lol:.
Du hast aber recht, so betachtet kann der 64 bit Mode sicherlich auch als Erweiterung von PAE angesehen werden, der allerdings 64 bit statt 32 bit virtuelle Adresse und 52 bit statt 36 bit physische Adressen verwendet und daher auch maximal 4PB statt 64GB ansprechen kann.

Gruß
gms

Benutzeravatar
ingo2
Beiträge: 1125
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Beitrag von ingo2 » 13.12.2007 13:11:26

> so betachtet kann der 64 bit Mode sicherlich auch als Erweiterung von PAE angesehen werden

Ich bin zwar kein Fachmann auf dem Gebiet, aber für mich ist der Unterschied wohl:

a) 32-bit PAE:
hier erfolgt die Adressierung mit 32-bit Wortbreite und Adressierung des Speichers > 4GB durch eine Art 'remapping', indem der Speicher in 4GB-Segmenten in den physisch adressierbaren Raum eingeblendet wird. Etwa so wie früher beim Übergang von 16-bit -> 32-bit mit 64k-Segmenten gearbeitet wurde.

b) bei 'true 64-bit' erfolgt die Adressierung linear (flat memory model) direkt mit 64-bit Wortbreite.
In Wirklichkeit besitzen die CPU's aber noch keine 64 Adress-Pins, glaube nur 48 und die oberen 16-bit bleiben ungenutzt. Reicht ja auch im Moment voll aus, da 2exp48 immerhin 280 TB ausmacht :-)

Wenn dem wirklich so ist, muß die CPU bei 32-bit PAE natürlch zusätzliche Rechenschritte zu Adressierung mit Offset + Wert machen, und 2 32-bit Werte zu berechnen. Bei 64-bit sind die Register 64 bit breit und die Adressierung erfolgt direkt.

Viele Grüße,
Ingo

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 13.12.2007 16:07:26

Intel hat mit PAE "Physical Address Extension" die physischen Adressen auf eine 36 bit Länge erweitert und mit der "Extended Memory 64 Technology" (EM64T, früher hieß das IA32e, dann wurde es auf "intel 64" umbenannt) wurde diese nochmals auf maximal 52 bit erweitert. EM64T ( und auch AMD64) ist jedoch ein "64-bit flat virtual address space", die Adressen müssen daher auch noch in physische Adressen umgewandelt werden.

Gruß
gms

Antworten