Resource Monitor - niedriger Systemspeicher

SOLIDWORKS allgemein
Modul: SOLIDWORKS
Gilt für: versionsübergreifend
Status: 28.03.2025

 

Ausgangslage

Im laufenden Betrieb von SOLIDWORKS ploppt eine Warnung bezüglich geringem Systemspeicher auf. Sei dies im ersten Schritt als Hinweis oder bereits als Warnmeldung. Egal welche Meldung erscheint, hier droht Gefahr!

Grund der Meldung

Eine grosse Baugruppe ist geöffnet inkl. Zeichnung und allen möglichen weiteren Dateien. Die erste Vermutung, zu wenig RAM. Sie werfen einen Blick in die RAM-Übersicht des Task-Managers und stellen fest, dass dieser Speicher bei weitem nicht ausgelastet ist.

Systemressourcen sind jedoch nicht nur das physische RAM, sondern auch die Windows GDI-Objekte, Benutzerobjekte und die Auslagerungsdatei.

Windows GDI, was ist das?

Windows GDI (Graphics Device Interface) wird in CAD-Software wie SOLIDWORKS für die Darstellung von 2D- und 3D-Elementen in der Benutzeroberfläche genutzt. Obwohl moderne CAD-Programme hauptsächlich auf OpenGL oder DirectX für die 3D-Grafik setzen, spielt GDI eine Rolle bei der Darstellung von Elementen der Bedienoberfläche, Skizzen, Icons und Tooltips. Eigentlich alles, was irgendwo dargestellt werden muss.

Probleme mit GDI-Ressourcen:

Windows hat seinerseits eine standardmässige Grenze von 10’000 GDI-Objekte. Zu viele offene Dateien oder komplexe UI-Elemente wie SOLIDWORKS PDM können SOLIDWORKS verlangsamen, überlasten und am Ende zum Absturz bringen.

Diese Systemressourcen werden beim Schliessen des Programms zum grössten Teil dem System wieder zur Verfügung gestellt. Jedoch nur zum Teil. Erst bei einem Neustart von Windows werden diese restlos zurückgegeben. Dies führt uns unter anderem zum Beitrag Resource Monitor - nach Windows Neustart, welcher das nicht vollständige Herunterfahren von Windows thematisiert. Ein Running-Gag im Support.

Wie viele GDI-Objekte sind genutzt?

Erscheint im laufenden Betrieb von SOLIDWORKS die Ressourcen-Warnmeldung, zeigt der Windows Task-Manager wie folgt die genutzten Windows GDI-Wert an:

         Starten Sie den Windows Task-Manager via CTRL-Alt-Del und klicken auf Task-Manager oder direkt via CTRL-Shift-ESC. Details-Tab anzeigen, via RMT in der Kopfzeile die GDI- und Benutzerobjekte-Spalte einblenden.

          Sortieren Sie die nun sichtbare GDI-Objekte- resp. Benutzerobjekte-Spalte absteigend per Klick auf den Spaltentitel. Als Grenzwert ist jedoch nicht nur der Wert bei SOLIDWORKS zu betrachten. Es gilt die Summe der Spalte! 

Lösungen und Best Practices:

Was lässt den GDI-Wert in die Höhe klettern? Unsere Erfahrung zeigt, dass dies oft von importierter Geometrie herrührt. Z.B. importierte STEP-Daten, welche ihrerseits auf tausenden von Flächen eine Farbe aufgetragen haben. Jede Fläche mit Farbe jagt den GDI-Zähler in die Höhe. Die SOLIDWORKS Funktion «Leistungsbewertung» verweist wunderschön auf diese Modelle. Halten Sie in der Leistungsbewertung die Augen nach «Erscheinungsbilder» offen.

Tritt die Ressourcen Warnmeldung regelmässig auf und Sie haben Ihre Daten bereinigt, können auch die Grenzwerte für die GDI-Handles und Benutzerobjekte erhöht werden. Bedenken Sie dabei; wenn Sie Windows in der einen Ecke mehr Ressourcen zur Verfügung stellen, wird dies mit Garantie an einer anderen Ecke abgezwackt.

Warnhinweis

Änderungen an der Windows Registry, insbesonders falsch vorgenommene, können schwerwiegende Probleme verursachen, die möglicherweise eine Neuinstallation des Betriebssystems erforderlich machen. Sie verwenden die nachfolgenden Informationen auf eigenes Risiko.

Die Grafikgeräteschnittstelle (Graphics Device Interface, GDI) ist eine Legacy-Komponente von Microsoft Windows, die für die Darstellung grafischer Objekte und deren Übertragung an Ausgabegeräte wie Monitore und Drucker zuständig ist.

  • GDI Objects = GDIProcessHandleQuota
  • User Objects = USERProcessHandleQuota

Die Standardeinstellung ist 10’000 für beide Parameter, aber aufgrund von spezifischen Ansätzen, Anpassungen, grossen Baugruppen, einer grossen Anzahl geöffneter Dateien, Zusatzanwendungen usw. kann die Grenze leicht erreicht werden und SOLIDWORKS stürzt ab. Im Allgemeinen sind die "GDI-Objekte" grösser als die "Benutzerobjekte".

Vorgeschlagene Werte während des Testzeitraums:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\ GDIProcessHandleQuota (32768 dec – maximum 65536)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\ USERProcessHandleQuota (16384 dec – maximum 16384)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\ GDIProcessHandleQuota (32768)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota (16384) 

Sobald sich das Verhalten stabilisiert haben, können Sie niedrigere Werte zuweisen und testen. Bei Änderungen dieser Werte muss der PC neu gestartet werden.

Was sind die Folgen einer Erhöhung des GDI-Handle-Limits pro Prozess?  Microsoft lässt grüssen. Ein spannender Beitrag zum Thema: https://devblogs.microsoft.com/oldnewthing/20210831-00/?p=105624

Weitere Informationen zu den Auswirkungen dieser Einstellungen finden Sie auf den folgenden Microsoft-Webseiten: