Gibt es irgendwelche Nachteile des "/ 3Gb" -Schalters in boot.ini für 32-Bit-Windows?

8

Microsoft empfiehlt, den Schalter / 3Gb in Boot.ini zu verwenden, um mehr Speicher für einen Prozess zu erhalten, der auf einem 32-Bit-System ausgeführt wird.

Derzeit benötige ich viel Speicher für den Devenv- Prozess (Visual Studio 2008), da ich eine komplexe Lösung habe, die viele Projekte und Formulare enthält und in der Entwurfszeit viele Ressourcen verbraucht.

Ich möchte fragen, ob jemand weiß, was negative Aspekte der Verwendung von / 3Gb-Switch sind, ob es Umstände gibt, unter denen die Verwendung nicht empfohlen wird.

Bogdan_Ch
quelle
Vielen Dank an alle, die geantwortet haben. Alle Beiträge sind sehr informativ und es gibt viele Überlegungen, die berücksichtigt werden müssen. Ich habe auch einige Dokumentationen gelesen und festgestellt, dass Sie dies für MS SQL Server selbst für 32-Bit-Systeme nicht benötigen. Sie können AWE (Address Windowing Extensions) technet.microsoft.com/en-us/library/ms190673.aspx
Bogdan_Ch

Antworten:

11

Auf einem Desktop-Computer gibt es wahrscheinlich keine Probleme. Der Kernel-Paged-Pool ist auf einem W2K3 / WXP-Computer mit dem / 3GB-Switch-Set kleiner. Dies ist wahrscheinlich kein Problem für einen Desktop-Computer, da Sie nicht nahe daran sein sollten, Ihren Kernel-Seitenpool zu erschöpfen. Wenn Sie auf einem Server den ausgelagerten Kernel-Pool erschöpfen, treten Probleme auf, und es ist viel wahrscheinlicher, dass Sie ihn erschöpfen können.

Hier einige Details zu den Überlegungen zum Kernelspeicher, die mit dem / 3GB-Switch verbunden sind. Wenn Sie wirklich möchten, können Sie den NT-Kernel-Debugger starten und Ihr System vor und nach der Änderung mit den Informationen in diesem Dokument profilieren: http://blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx

Evan Anderson
quelle
3
Ich frage mich immer, wenn ich Downvotes bekomme, warum ich Downvotes bekomme. Ich glaube nicht, dass irgendetwas in diesem Beitrag sachlich falsch ist, aber wenn es so wäre, würde ich es wissen wollen, damit ich den Beitrag entweder löschen oder korrigieren könnte. Ich bin gespannt, was das Problem ist, das die Downvoter damit haben ... (und natürlich ist mir klar, dass sie niemals zurückkommen werden, um auf diesen Kommentar zu antworten ... na ja ...)
Evan Anderson
5

Ihrem Kernel steht weniger Speicher zur Verfügung - der Switch passt die Aufteilung des Adressraums im Kernelmodus / des Adressraums im Benutzermodus (zuvor 2 GB bis 2 GB) auf 1 GB bis 3 GB an. Lesen Sie den Beitrag von Raymond Chen über / 3 GB und die Folgemaßnahmen, bevor Sie fortfahren.

crb
quelle
5

Bevor Sie Änderungen vornehmen, sollten Sie zunächst überprüfen, ob die Prozesse, die Sie ausführen möchten, mit dem Flag LARGEADDRESSAWARE verknüpft sind. Mit dem Flag werden keine Änderungen an der Verwendung des Speichers durch den Prozess vorgenommen.

Sie können die SDK-Tools dafür verwenden:

dumpbin / headers exeName

Die Kopfzeilen sollten Folgendes enthalten:

Die Anwendung kann große Adressen (> 2 GB) verarbeiten

Ich habe die Überprüfung auf devenv.exe durchgeführt und in VS2008 enthält sie das Flag.

Jack Bolding
quelle
4

Viele Nachteile. Standardmäßig weist Windows jedem Prozess einen 4-GB-Speicherpool zu, der zu 50% zwischen den Kernelmodusprozessen (allen Apps gemeinsam) und den Benutzermodusprozessen (für jede App eindeutig) aufgeteilt ist (vereinfachte Erläuterung). Eine App, die auf dem System ausgeführt wird, verfügt daher über 2 GB Speicher zum Spielen, während das System selbst über eigene 2 GB verfügt. Wichtiger Hinweis: Diese zweiten 2 GB sind die gleichen 2 GB für alle Apps, die auf dem System ausgeführt werden.

Der Schalter / 3GB passt die Aufteilung so an, dass der Kernelmodus 1 GB und der Benutzermodus 3 GB erhält.

Betrachten Sie nun die Apps, die Sie ausführen. Einige von ihnen benötigen mehr Speicherplatz im Kernelmodus, andere mehr Speicherplatz im Benutzermodus. Da der Kernelmodus-Pool gemeinsam genutzt wird, kann Ihnen dort sehr schnell der Arbeitsspeicher ausgehen, wenn Sie Apps ausführen, die den Kernelmodus-Speicher unter Druck setzen. Wenn Ihre Apps jedoch viel Speicher im Benutzermodus verwenden, erhalten Sie durch die Implementierung von / 3 GB den erforderlichen Headroom.

Es liegt also wirklich an der Art der Anwendungen, die Sie ausführen möchten. Die goldene Regel ist, den App-Anbieter zu konsultieren und die Dokumentation zu lesen. Insbesondere wenn der App-Anbieter keine Empfehlung hat, sollten Sie misstrauisch werden. Haben sie ihre App ordnungsgemäß getestet oder nicht? Dies sind grundlegende Dinge, die jeder Anbieter wissen sollte.

Hier wird alles ziemlich gut diskutiert: http://blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

In Ihrem speziellen Fall denke ich, dass ein Wechsel zu 64-Bit und mehr RAM eine praktikablere Lösung ist, da Sie mit / 3 GB nicht wirklich das bekommen, was Sie wollen (funktioniert es überhaupt unter XP?)

Maximus Minimus
quelle
Ich denke, anstelle von "Kernel Mode Pool" besser zu sagen "Kernel Virtual Address Space". Auch "geteilt" bedeutet für mich "für alle Anwendungen identisch". Ist es so?
dma_k
1

Wir haben es auf einigen Systemen verwendet, auf denen Bildverarbeitungs-Apps für viele große Bilder ausgeführt wurden, und haben keine Probleme festgestellt. In allen Situationen, in denen Sie den zusätzlichen Gig an Anwendungsspeicher benötigen, werden Sie die App wahrscheinlich laufen lassen und nichts anderes mit dem System tun, sodass es wahrscheinlich keine großen Auswirkungen gibt.

Ward - Monica wieder einsetzen
quelle
1

Es funktioniert nur zuverlässig (außer beim Debuggen von Treibern usw.) auf einem Enterprise Server-Betriebssystem für LARGEADDRESSAWARE-Binärdateien.

devenv ist keine solche binäre . SQL Server und Exchange sind zum Beispiel.

Sie benötigen ein x64-Bit-Betriebssystem und VS x64- Bearbeitung: LARGEADDRESSAWARE wird auf x64 erkannt , um die 2-GB-Grenze zu überschreiten.

gbn
quelle
actaully devenv.exe ist sich der großen Kleidung bewusst.
Jack Bolding
Richtig, ich habe das bei meiner Bearbeitung über x64 verpasst. Erneut bearbeitet
gbn