4 GB Ram

Diese Seite ist mittlerweile schon etwas überholt, da 64bit mittlerweile schon "normal" ist und der Hauptspeicher von Servern schon ein vielfaches von 4GB ist.

Diese Seite beschäftigt sich mit "sehr großen" Servern, d.h. Systeme, die vielleicht nur etwas mehr als 1 GB Speicher habe, die 4 GB Grenzen ankratzen oder sogar über 4 GB Speicher haben und dabei noch mit 32-bit Systemen arbeiten.

Das sind Anfang 2005 sicher noch die Mehrzahl der Systeme, da zwar schon viele Server "64-bit" könnten aber noch sehr wenige Firmen schon Windows 64bit installieren. Das liegt zum einen an der fehlenden TreiberUnterstützung als auch an der fehlenden Anwendungssoftware. Wir werden hier Begriffe wie /3GB,  /UserVA, PAE, AWE EMS, XMS etc. ansprechen.

Diese Beschreibung soll keine detaillierte Information über Speichermanagement unter Windows darstellen, sondern einen Einstieg in die Materie vermitteln. Lesen Sie auf jeden Fall die weiterführenden Quellen.

Das leidige Thema Speicher

Mein erster Computer ZX81 hatte 16kbyte (?) RAM, der Apple ][ schon 64 kByte, das zugleich die Obergrenze der 8-Bit CPUs Z80 und 6502 war. Der erste PC war dann schon ein 286 und  hatte 1 Megabyte Speicher, 16bit BUSBreite für Daten und und 20 Adressleitungen (erinnern sie sich noch an das A20 Gate ?). Aber schon da war zu sehen, dass die Hardware schneller wächst, als die Software darauf vorbereitet ist. Nur die älteren unter den Lesern werden sich noch damals an die 640kbyte Grenze erinnern und wie die Bytes darüber mittels HIMEM, EMM386, LOADHI und anderen Tricks genutzt wurden und wie sich die ROMs der Erweiterungskarten um den Adressbereich geschlagen haben.

Erst der 386 hat dann wirklich alle 32 Adressleitungen nach außen geführt, so dass bis zu 4 GB adressierbar waren, die damals unerreichbar und irreal wirkten. Fakt ist aber, dass mein 3 Jahre altes Notebook, auf dem ich diese Zeilen gerade schreibe, 768 MByte hat und die 4GB Grenze überhaupt nicht mehr unerreichbar ist. Hier stellt sich dann die Frage, wie ein Betriebssystem und die Anwendungen damit umgehen.

1 Terabyte Maximum ?
Die aktuell von Microsoft aufgestellte Obergrenze für Windows ist wohl bei 1 TB (Terabyte Hauptspeicher) zu sehen, wobei diese Grenze wohl nur darauf beruht, dass Microsoft von einem namhaften Hersteller (Man munkelt FSC) tatsächlich solch einen Server zum Testen erhalten hat. Wenn ein Hersteller mehr Speicher zum testen bereit stellt, kann die Grenze sicher weiter angehoben werden.

Übrigens: Wenn es die Hardware unterstützt, kann Windows sogar im laufenden Betrieb mit Speicher aufgerüstet werden. Dieses "Hot-Add RAM-Feature" moderner Server kann aber zu Problemen führen, da hierbei die Kernel Ressourcen verbraucht werden. Einige Parameter stellt das System eben beim Start ein und kann diese im Betrieb nicht anpassen. Obergrenzen von Windows Versionen

Die erste logische Grenze an die Sie stoßen können, ist die durch ihre Windows Lizenz vorgegeben. Nicht jede Windows Version nutzt wirklich allen verfügbaren Speicher:

Betriebssystem Technologie /3GB Max Speicher

Windows 95

32bit

nein

2 GByte

Windows NT4

32bit

nein

keine /3GB Option verfügbar. Ergibt eine 1GB/2GB Aufteilung statt der erhofften 1GB/3GB Teilung. Ist also nachteilig

Windows NT4 Enterprise

32bit

ja

4  GB (?)

Windows 2000 Standard

32bit

nein

2 GB
keine /3GB Option verfügbar. Ergibt eine 1GB/2GB Aufteilung statt der erhofften 1GB/3GB Teilung. Ist also nachteilig

Windows 2000 Advanced Server

32bit

ja

8 GB (mit PAE)

Windows 2000 Enterprise/Datacenter

32bit

ja

32 GB (mit PAE)

Windows 2003 Server

32bit

ja

4GB
/3GB Option nur für DCs ohne Zusatzfunktion unterstützt

Windows 2003 Enterprise

32bit

ja

32 GB

Windows 2003 Datacenter

32bit

ja

64 GB

Windows XP x64

64bit

NEIN

16 Exabyte
32bit Systeme erhalten 2GB

Windows 2003 Server x64

64bit

NEIN

theoretisch 16 Exabyte
16 TB aktuell unterstützt( 8TB System / 8 TB User)
32bit Systeme erhalten 2GB

Vista

32bit

NEIN

4 GB  (Meist nur 3 GB nutzbar)
(Siehe auch http://blogs.msdn.com/dcook/archive/2007/03/25/who-ate-my-memory.aspx)

Vista

64bit

 

 

Zudem müssen Sie auch sicherstellen, dass die Anwendung (also z.B.: SQL oder Exchange) den Speicher nutzen können

Active Directory Details

Ein Active Directory Domain Controller ist natürlich auch eine Datenbank und je mehr Informationen der Datenbank im Speicher sind, desto schneller und effektiver kann der Server antworten. Jeder Lesezugriff auf der Festplatte ist ein vielfaches langsamer als eine Antwort aus dem Hauptspeicher. Daher kann es in größeren Netzwerken sinnvoller sein, zwei Server mit viel Speicher zu installieren als viele Server mit wenige Speicher. Allerdings können Sie ja anhand der Größe der Datei NTDS.DIT eine grobe Abschätzung ihres Speicherbedarfs für das Active Directory machen.

Wenn Sie einen Windows Standard Server als DC verwenden, dann sollten Sie wissen, dass erst Windows 2003 Standard die /3GB Option unterstützt und diese Funktion von Microsoft nur unterstützt wird, wenn der Server sonst keine Dienste nutzt. Wenn ihr Server also noch SQL und Exchange nutzt, dann ist /3GB mit dem Standardserver nicht unterstützt.

  • Exchange und das Active Directory
  • Q244368 How to Optimize Active Directory Replication in a Large Network
  • Q271088 XGEN: Optimizing Windows 2000 Active Directory Servers with Six or Eight Processors to Run with Exchange 2000
  • Q222019 DCPROMO Space Requirements für Active Directory Database and Log

Exchange Details

Auch mit Exchange müssen Sie auf dem Windows 2000 Standard Server mit Probleme rechnen, wenn der Server mehr als 1 GByte Speicher bereit stellt. Nähere Informationen finden Sie dazu in folgendem Artikel

Das war aber schon fast alles, da Exchange selbst analysiert, wie viel Speicher verfügbar ist und sich entsprechend verhält. Insofern sind Sie primäre an ihre physikalischen Grenzen und die Grenzen des Betriebssystems gebunden. Und wenn Sie nun nicht genug Speicher bekommen können, dann sollten Sie wissen, dass Exchange 2003 nicht mehr als 8 CPUs nutzen kann und auch kein AWE/PAE unterstützt.

SQL Details

System Server Speichernutzung

SQL2000 Dev/Ent

Windows 2000 std

2GB

SQL2000 Dev/Ent

Windows 2000 adv
Windows 2000 datacenter
Windows 2003

2 GB
3 GB mit /3GB ohne AWE
4GB mit AWE

SQL 7.0

Windows 2000 adv
Windows 2000 datacenter
Windows 2003

2GB
3GB mit /3GB

SQL 2000
SQL 7.0

NT4 Enterprise

2GB
3GB mit /3GB

kein AWE Support unter NT4

Für SQL kann demnach folgende Aussage verallgemeinert werden:

Bis 4 GB physischen RAM sollten Sie den /3GB Switch einsetzen
Über 4 GB physischen RAM sollten Sie ohne /3GB Switch und entsprechender SQL Konfiguration arbeiten. Siehe auch : http://www.Microsoft.com/resources/documentation/msa/edc/all/solution/en-us/rak/rag/edcrag10.mspx

Sie sehen aber schon, dass es sehr wohl möglich ist, mit einem 32-bit Windows mehr als 4 Gigabyte zu nutzen, nur wie kann dies sein ?

/3GB oder wie 4 GB in 2 GB oder 3 GB aufgeteilt werden.

ein 32Bit Prozessor hat 32 Adressleitungen und kann demnach 2 hoch 32 = 4294967296 Speicherstellen ansprechen. Eine Speicherzelle besteht aus 8 Bit  ( = 1 Byte), so dass eine 32bit-CPU eben mit zu 4 Gigabyte Speicher adressieren kann. Das hat nichts damit zu tun, dass ein PCI-Bus oder Speicherbausteine mehr als 8 Bit auf einmal überträgt. Bei einem Lesevorgang werden dann einfach mehr Bytes auf einmal übertragen. Die Gesamtspeichermenge bleibt davon unberührt. Speicher jenseits von 4 Gigabyte ist daher ohne Tricks und Kniffe nicht direkt nutzbar.

Nun muss natürlich ein Computer auch noch Eingaben und Ausgaben verarbeiten. Dazu werden Schnittstellen benötigt, die sich ebenfalls über Adressen ansprechen lassen müssen. Daher werden bei den meisten Computern einige Speicherbausteine vom BIOS ausgeblendet, so dass dort Platz für BIOS und Speicherbereich (z.B.: die Grafikkarte oder Netzwerkkarte) ist. Auch zur Steuerung von Karten muss des "Control Ports (IO-Port)" geben. Bei den PCs sind dies oft niedrige Adressen. Vielleicht erinnern Sie sich noch, dass der erste COM-Port auf der Adresse 3f8hex gelegen hat und 378hex die parallele Schnittstelle LPT1: ist. So werden also aus ihrem linearen Speicher sehr schnell Flickenteppiche.

Ein Server mit 3 GByte Hauptspeicher kann demnach so aussehen:

Die 3 Gigabyte sind physikalisch vorhanden. Ein paar Bytes werden durch die I/O-Ports "überblendet" und oben blenden sich die Erweiterungskarten ein. Wenn Sie aber nun einen Server mit 4 Gigabyte kaufen, dann kann es sein, dass Sie nur 3,5 Gigabyte nutzen können. Sehr viele Computer blenden den oberen Speicher einfach aus, um Platz für die Erweiterungskarten zu haben:

Im Windows Taskmanager sehen Sie dann oft nur die 3,5 GByte "free". In diesem Fall können Sie nur hoffen, dass ein BIOS-Update ihnen den Speicher zugänglich macht. Manchmal ist es auch einfach nur eine Option im BIOS, die sie aktivieren müssen. So kann es helfen, die Speicheradressen zum Einblenden von AGP, PCI-X, etc. zu verlagern. Einige Systeme können den Speicher auch oberhalb von
Viele BIOS-Versionen unterstützten Remapping und kleben den sonst nicht nutzbaren Speicher >4GB wieder an

So sieht dies aber nur die physikalische Hardware, denn zwischen ihrer Software und der Anwendung ist das Betriebssystem mit dem Speichermanagement und dem Memory Controller als Hardware, welcher Speicher überall hin "umordnen" kann. Wenn Sie daher mit ihrer Anwendung sequentiell von Byte 1 zu Byte 1000000 laufen, bedeutet dies nicht, dass der Speicher auch physikalisch an einem Ort ist. Ein Teil kann sogar in das Swapfile ausgelagert worden sein. Die meisten Betriebssystem virtualisieren den Hauptspeicher. Windows nutzt dazu ein Speichermodell mit 2GB/2GB oder entsprechend auch 1GB/3GB

Durch das Setzen des "/3GB"-Schalters wird Windows angewiesen, nur 1 GByte für seine Systemverwaltung zu verwenden und jeder Anwendungen virtuell 3 GB zuzuweisen.

Der /3GB Schalter ist nicht abhängig vom physikalischen HauptspeicherAusbau und keine Voraussetzung für die Nutzung von mehr als 4GB RAM. Allerdings ist der Einsatz erst ab 1 GB sinnvoll, da sonst das Pagefile die Hauptarbeit macht.

Der Einsatz des 3GB -Schalters muss aber mit Bedacht erfolgen, da die Auswirkungen auch negativ sein können

  • 3GB sind zuviel für die Anwendung
    Es gibt tatsächlich Programme, die den "freien Speicher" erfragen und dann "-1073741824 Bytes Free" verstehen und mit einem Fehler abstürzen. Aufgefallen ist mir dies bei 16bit Installationsroutinen (z.B.: alte InstallShield Programme), die oft noch unter der Haube von neuen Programmen sind
  • 3GB werde nicht genutzt
    Erhoffen Sie sich nicht, dass ein DNS-Server, eine Access Anwendung oder andere Programme von dem 3 GB Schalter profitieren würden. Die Erweiterung des verfügbaren Hauptspeichers muss der Anwendung echte Vorteile bringen.
  • 1GB sind zu wenig für das System
    Die Verringerung des Systempools auf 1 GB kann auf einigen System sogar zu Problemen führen. Sie entziehen dem System ja ein 1GB zur Verwaltung von Prozessen, Fenstern, Systemdiensten etc. 3GB ist daher besonders vorsichtig auf Domänen Controllern oder Terminal Servern einzusetzen. Denn oftmals ist es NICHT allein der Speicher für Anwendungen, der knapp sein kann. Bedenken Sie, dass quasi jede Anwendung 2GB oder 3 GB für sich virtuell beanspruchen kann

Kein /3GB mit Windows 2000 Standard Server und NT4 Standard Server

Wenn Sie daher einen einen Server mit viel Speicher konfigurieren, dann heißt es nicht immer "Viel hilft viel", sondern es muss genug von der richtigen Ressource sein und die Anwendung muss mitspielen.

Mehr als 3GB/4GB ? Dann wird PAE / AWE interessant

Was machen Sie nun aber, wenn ihr Server tatsächlich mehr als 4 Gigabyte Hauptspeicher betreiben kann und Sie vor allem eine Anwendung nutzen möchten, die mit 3 GB nicht auskommt ?. Aber da gibt es ja noch den Speichermanager und schon in Zeiten von DOS und Windows 3.1 (16bit Grenze) war es möglich, den Speicher jenseits von 640 MByte zu nutzen. Der Memory Manager ist dafür zuständig, den virtuellen Speicher der Anwendung auf physikalischen Speicher umgesetzt wird und nicht vorhandener "echter" Speicher notfalls durch das Pagefile ersetzt wird. Dieses Hantieren mit Speicherseiten ist auch eine wichtige Schnittstellen für die AWE-Erweiterung. Eine Anwendung kann über diese Schnittstelle Speicher anfordern und verwenden. Ein Stückweit könnten Sie dies mit dem EMS-Speicher der frühen DOS-Zeiten vergleichen. Denn physikalisch kann die Anwendung aufgrund der Begrenzungen nur bis zu 4 Gigabyte adressieren. Daher kann eine Anwendung über AWE weiteren Speicher in diesen eigenen Adressraum einblenden lassen.

AWE bzw. PAE ist also keine Funktion, damit Windows mehr als 4 Gigabyte verwalten kann. PAE ist ein Weg, damit Anwendungen aus ihrer 3GB Grenze Ausbrechen können, indem Sie mittels AWE auf weitere Speicher zugreifen. Voraussetzung ist aber, dass die Anwendung AWE nutzt.

Alle CPUs die auf der IA-32 Architektur von Intel basieren (seit Intel Pentium Pro) unterstützen einen 36-bit physical addressing Mode. (Physical Address Extension (PAE)) Dies erlaubt die Ansteuerung von bis zu 64 GByte Hauptspeicher durch das Betriebssystem.
Erst durch AWE können jedoch 32bit Anwendungen mehr als 3/4 GB ansprechen.

Dies bedeutet, dass ein Betriebssystem  maximal 64 Gigabyte ansprechen und entsprechend vorbereiteten Anwendungen zuteilen kann. Dazu ist aber der Schalter "/PAE" zu aktivieren.

PAE wird seit Windows 2003 SP1 und Windows XP SP2 automatisch aktiviert, wenn der Prozessor die Funktion "no-execute page protection" unterstützt. Bei Windows 2003 Standard und Windows XP ist dann jedoch wieder das 4 GB Limit aktiv, um Probleme mit Treibern zu vermeiden.

Aus der Online Hilfe von Windows 2003

PAE X86 allows software using the Address Windowing Extensions (AWE) API set running on a computer with an Intel Pentium Pro processor or later and either Windows Server 2003, Enterprise Edition, or Windows Server 2003, Datacenter Edition, to map more physical memory into the application's virtual address space.

AWE und /3GB stören sich
Wenn sie mehr als 16 Gigabyte RAM haben, dürfen Sie /3GB nicht einsetzen, da ansonsten AWE den Speicher darüber nicht nutzen kann.

  • 834628 Data is corrupted when PAE is enabled on a Windows Server 2003-based computer

Der PAE-Switch kann auch auf Windows XP und Windows Standard Server 2003 verwendet werden. Auch der SBS-Server ist davon nicht ausgenommen. Diese Systeme können jedoch maximal 4 GB adressieren. Hier dient der Schalter zur Unterstützung der DEP (Data Execution Prevention). Siehe auch http://www.Microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx

Pagefile und viel Speicher

Bei so viel Speicher stellt sich die Frage, wie mit dem Pagefile umgegangen wird, zumal Sie nur ein Pagefile pro Partition anlegen können, welches zudem maximal 4 Gigabyte groß ist. Um daher z.B. ein 6 GB großes Pagefile anzulegen, müssten Sie die Festplatte schon in zwei Partitionen teilen.

Auf der anderen Seite stellt sich natürlich die Frage des Sinns eines Pagefile, wenn der Server so viel Speicher hat. Das Pagefile "simuliert" ja nur Speicher über die Festplatte und die Festplatte ist faktisch immer die langsame Komponente. Bei dem Preis für Speicher sollte es einfacher sein, gleich mehr RAM hinzu zu fügen.

Betriebssystem Default Pagefilegröße

Windows NT 3.51

= Hauptspeicher + 11 MegaByte

Windows NT 4.0

= Hauptspeicher

Windows 2000/XP/2003

Automatisch (was auch immer das bedeutet)

Windows 2003 x64 mit <=8 GB RAM

RAM * 1.5

Windows 2003 x64 mit >8GB

RAM + 10 MB

Für die als Administrator bedeutet das eher, dass Sie ihrem aktuellen Server genau auf die Finger schauen, was er mit dem Pagefile tut und entsprechend die Einstellungen vornehmen. Es ist daher wahrscheinlicher, dass sie kein oder nur ein sehr kleines Pagefile brauchen, wenn Sie "ausreichend" Speicher für ihre Anwendung haben. Bedenken Sie einfach, wie lange es wohl dauern mag, z.B. 1 Gigabyte aus dem Pagefile nachzuladen und wie langsam dann ihre Anwendung sein wird. So gesehen ist mehr RAM sehr viel billiger. Das Pagefile hat sicher seine Daseinsberechtigungen, wenn Sie so wenig Speicher bereitstellen, dass die Anwendung gar nicht erst startet. Das was früher oft das Problem wenn ein Programm wenige Megabyte Speicher hatte und die zu verarbeitenden Dokumente sehr groß sind.

Es gibt keine generelle Empfehlung außer den Ratschlag, die Pagefilenutzung, die Festplattenaktivität und die Speichernutzung von Programmen mittels Perfmon genauer zu untersuchen.

64bit und Speicher

Eine bessere Lösung aus dieser Speichermisere ist natürlich der umstieg auf 64bit Prozessoren. 64bit steht zwar primär für die Breite des Datenbusses, d.h. die parallele Übertragung von 64 Bits an Stelle der bisherigen 32bit aber damit verbunden ist natürlich auch eine Verbreiterung der Adressleitungen, so dass viel mehr Speicher ansteuerbar wird. Die Ergebnisse sind vielsagend:

  • Jede 32bit Anwendung hat virtuell 4 Gigabyte Speicher
    Dazu muss aber der Entwickler die Option "/LARGEADDRESSAWARE"  beim kompilieren verwenden und seinen Code entsprechend kompatibel schreiben..
  • Aktuelle Obergrenze bei 1 Terabyte
    Windows 64bit kann sicher mehr, aber mehr wurde zumindest Anfang 2006 noch nicht in Realität getestet
  • Langsame Migration
    Viele heutige CPUs könnten schon mit Windows 64bit betrieben werden, aber können ebenso mit Windows 32bit installiert werden. 64bit Serveranwendungen müssen auf Windows 64bit installiert werden.
  • Exchange 2007 wird nur als 64Bit Version verfügbar sein.
    E2K7:64-bit

Weitere Links