
Ich entschuldige mich im Voraus, wenn dies nicht klar genug ist, um mein Problem zu verstehen. Es ist etwas lang, aber ich habe mein Bestes getan, um es verständlich zu machen.
Ich führe Exchange 2016 CU6 auf einer Windows Server 2016-VM aus und erhalte im Anwendungsprotokoll häufig die Warnung, dass ich nicht mehr genügend virtuellen Speicher (Auslagerungsdatei) habe.
Meine Überwachung zeigt, dass die Auslagerungsdatei seit der Erstellung der VM im April 4 GB groß war und nie über 4 GB hinaus angewachsen oder verkleinert wurde.
Um dieses Problem zu beheben und zu verstehen, worum es geht, habe ich zwei Test-VMs mit einer Standardinstallation von Windows Server 2016 Standard und Windows Server 2008 R2 Enterprise erstellt, beide mit derselben physischen und virtuellen Speicherkonfiguration:
Testen der VM-Konfiguration
RAM: 4GB
Datenträger C (für das System reserviert): 32 GB
Datenträger G (reserviert für die Auslagerungsdatei): 8 GB
Auslagerungsdatei für Laufwerk C:: 512 bis 1024 MB
Auslagerungsdatei für Laufwerk G: Vom System verwaltete Größe
Meine Test-VM 2016 nutzt derzeit 512 MB auf dem Laufwerk C: und 1 GB auf dem Laufwerk G:, also insgesamt 5,5 des zugesicherten Speichers.
Die Test-VM 2008 nutzt derzeit 512 MB auf dem Laufwerk C: und 4 GB auf dem Laufwerk G:, was insgesamt 12,5 GB an zugewiesenem Speicher entspricht.
Nachdem ich viel über das gebundene Gedächtnis recherchiert hatte, bin ich auf diesen Artikel von Mark Russinovitch gestoßen:https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/
Ich habe beschlossen, das Tool testlimit64.exe mit dem Schalter -m zu verwenden, um zu sehen, ob die Auslagerungsdatei auf der Test-VM 2016 und der Test-VM 2008 größer wird.
Das Ergebnis spiegelt das eingangs erläuterte Problem wider, bei dem die Auslagerungsdatei auf der Test-VM 2016 auf dem Laufwerk G: nicht zunimmt, auf der Test-VM 2008 jedoch schon:
Laut diesem Microsoft KB:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/automatic-memory-dump, mit der Einstellung „Automatischer Speicherauszug“ unterSystemsteuerung->System->Erweiterte Systemeinstellungen->Start und Wiederherstellung->Debuginformationen schreibenWenn die Auslagerungsdatei als systemverwaltet konfiguriert ist, kann sie auf eine Größe eingestellt werden, die kleiner ist als die Menge des physischen Speichers.
Bei den von mir durchgeführten Tests wurde diese Einstellung nicht verwendet. Sowohl die Test-VM 2008 als auch die Test-VM 2016 waren mit Kernel-Speicherauszug konfiguriert.
Wenn ich also die Auslagerungsdatei auf dem Laufwerk G: auf der Test-VM 2016 auf „Vom System verwaltet“ einstelle, wird ihre Größe automatisch von Windows festgelegt und erhöht sich unter Last nicht.Dies ist der Kern des Problems, da es sich um eine Verhaltensänderung bei Windows Server 2008 handelt.
Mein letzter Test bestand darin, die Auslagerungsdatei auf dem Laufwerk G: manuell auf 4096 - 8100 MB zu konfigurieren und das Tool testlimit64.exe erneut mit dem Schalter -m auszuführen. Wie Sie sehen, vergrößert sich die Auslagerungsdatei von 4 GB auf ~8 GB.
Hier ist meine Frage: Warum erhöht Windows Server 2016 die Größe der Auslagerungsdatei nicht, wenn sie auf systemgesteuert eingestellt ist? Was hat sich diesbezüglich zwischen Windows Server 2008 und 2016 geändert?
Vielen Dank, dass Sie alles durchgelesen haben und für Ihre Antworten.
Antwort1
Entsprechend Dieser ArtikelFür Server 2016 werden systemverwaltete Auslagerungsdateien wie folgt dimensioniert:
3 × RAM or 4 GB, whichever is larger. This is then limited to the volume size ÷ 8. However it can grow to within 1 GB of free space on the volume if required for crash dump settings.
Für Server 2008 heißt es:
3 × RAM or 4 GB, whichever is larger
Es hört sich also so an, als ob Sie die 1/8-Regel sehen, die auf Server 2016 durchgesetzt wird.
Hoffe, das hilft ... Prost