Schon mal darüber nachgedacht, wie du den Speicher auf deiner Grafikkarte gezielt reduzieren kannst? Klingt komisch, ist aber wahr! In bestimmten Situationen kann dies sogar sehr nützlich sein. In diesem Tutorial zeige ich dir, wie du dieses Problem elegant lösen kannst.
Originalartikel
Egal, ob eine ältere Anwendung streikt, weil der allokierbare bzw. freie Speicher die Obergrenze dessen überschreitet, was das Programm verarbeiten kann (man erinnere sich an die Grenzen der 32-Bit-Programme) oder weil man einfach mal testen möchte, ab wann der freie Speicher unter Umständen nicht mehr reichen könnte und welche Fehlerbilder dabei ausgelöst werden – ich stand jetzt selbst vor diesem Problem und brauchte eine praktikable Lösung, die weder System- noch Grafikkartenlast erzeugt und trotzdem Speicher sauber blockt.
Für mich war der Lösungsansatz an Ende sicher einfach, denn ich habe mir einfach ein kleines OpenCL-Programm geschrieben, das genau dies tut: Speicher allokieren, also quasi blockieren und für den Zugriff durch andere Programme schützen. Denn DirectX und die Speicherverwaltung sind auch nicht zimperlich, wenn es darum geht, im Grafikkarten-Speicher enthaltene Inhalte um- und auszulagern, wenn das betreffende Programm im Hintergrund dümpelt. Allerdings ist dies alles (schon aus Haftungsgründen) nur Bestandteil meiner eigenen Werkzeugsammlung und nichts für den Download-Bereich. Aber der Lösungsansatz ist an sich ja simpel und so geht mein Dank auch an meinen Kollegen Yannick Guerrini, der mir als Ersatz ein gängiges Tool empfahl, das man geschickt zweckentfremden und genau für diese Zwecke nutzen kann.
Blocken und Lahmlegen – Wir brauchen nur zwei kostenlose Tools
Das Allokieren können wir auch geschickt mit memtestCL (Download) erledigen lassen. Dieses etwas ältere Freeware-Tool der Stanford University steht auch als Quellcode auf Github zur Verfügung und es tut genau das, was wir möchten. Die Vorgabe des zu testenden Speichers muss jedoch kleiner als 4 GB sein. Kein Problem! Starte einfach zwei Instanzen und weise ihnen unterschiedliche Speichermengen zu. Die Kommandozeilen-Parameter sind simpel und wer möchte, kann sich einfach eine Batch-Datei erstellen. Wenn du mehrere Grafikkarten in deinem Rechner hast, wähle die gewünschte Grafikkarte aus.
Der Aufruf des Programms ist simpel. Wenn du beispielsweise 2 GB allokieren möchtest, startest du einfach memtestCL 2048
– einfacher geht es fast nicht. Standardmäßig sind 50 Iterationen eingestellt, sodass genügend Zeit bleibt, um das Programm mit dem zweiten Tool zu stoppen. Für diesen Schritt benötigen wir den Process Explorer (Download) von Sysinternals. Starte ihn einfach. Wie die einzelnen Schritte nun ablaufen, zeige ich dir gleich.
Praxisbeispiel: Wir blockieren 4 GB mit memtestCL
Die Ausgangssituation: Der Grafikspeicher ist fast leer.
Doch das lässt sich leicht ändern! Starten wir nun memtestCL mit der gewünschten Speichergröße und dann den Process Explorer. Dort lassen wir alphabetisch absteigend die gerade laufenden Prozesse auflisten und suchen den Eintrag zu memtestCL.exe.
Wir markieren diese Zeile und klicken dann mit der rechten Maustaste auf den Eintrag. Es erscheint ein Popup-Menü, bei dem wir die Funktion “suspend” (Anhalten/Aussetzen) auswählen.
Jetzt ist das Programm faktisch im Ruhemodus und verursacht keine Prozessorlast mehr. Der Speicher ist jedoch blockiert und steht der Grafikkarte nicht mehr zur Verfügung. Ganz Clevere können das auch mit dem Afterburner-Overlay testen, wo plötzlich die Speicherbelegung um den zuvor gewählten Betrag gestiegen ist.
Aber du kannst es auch einfach über die Ressourcenanzeige des Windows Task-Managers betrachten und prüfen. Das Ergebnis ist das gleiche.
Wenn du mehr als 4 GB blockieren möchtest, starte einfach eine zweite Instanz mit der entsprechenden Speichergröße.
Und vergiss nicht den Suspend-Modus (siehe oben)!
Das Ergebnis ist eindeutig und kann direkt im Task-Manager überprüft werden. In diesem Fall habe ich zweimal 2 GB blockiert.
Mit dieser Methode kannst du sogar Grafikkarten mit geringerem Speicherausbau emulieren. Aber das hast du sicher schon in einem meiner Reviews gelesen. In diesem Sinne: Viel Spaß beim Experimentieren!