Ich gebe es zu, in einer Zeit, wo alle nach immer mehr dediziertem Speicher auf der Grafikkarte schreien, ist das Anliegen dieses heutigen Tutorials für viele eher unverständlich. Allerdings sicher nur auf den ersten Blick. Denn das alles löst sehr elegant ein Problem, vor dem man zwar (zugegeben) sehr selten aber eben doch schon mal stehen könnte und für das es sogar im Bereich der schier endlosen Google-Suche auch keine auf Anhieb praktikable Lösung gibt. Und da heute Nachmittag noch ein heißer Dino auf uns wartet, habe ich den Artikel für heute früh noch einmal aus den Tiefen des Archivs geholt. Warten auf Schnappi Lake mit einer etwas anderen Morgenlektüre…
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 und es tut exakt, was wir möchten. Allerdings gibt es hier die Einschränkung, dass die Vorgabe des zu testenden Speichers kleiner als 4 GB sein muss. Hier kann man sich behelfen, indem man einfach zwei Instanzen (oder noch mehr) startet und sich deutlich mehr Speicher abknappst. Die Kommandozeilen-Parameter sind simpel und wer möchte, schreibt sich einfach eine Batch-Datei (oder mehrere mit verschiedenen Größenvorgaben). Wer mehr als einen Grafikadapter im Rechner hat (z.B. eine CPU mit iGP), wählt die gewünschte Grafikkarte.
Der Aufruf ist simpel und die optionale Batch-Datei ist es auch. Wenn man z.B. 2 GB allokieren möchte, dann startet man das ganz einfach als memtestCL 2048 – einfacher geht es fast nicht. Standardmäßig sind 50 Iterationen eingestellt, so dass genügend Zeit bleibt, um das Programm dann mit dem zweiten Tool zu stoppen. Hierfür benötigen wir dann den Process Explorer (Download) von Sysinternals. Den kann man dann einfach so starten. Wie die einzelnen Schritte nun ablaufen, zeige ich Euch gleich.
Praxisbeispiel: wir blockieren 4 GB mit memtestCL
Zunächst die Ausgangssituation: Bis auf etwas Fenster-Geraffel ist der Grafikspeicher 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 (z.B. in der Tabellenüberschrift auf “Process” klicken) 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 auch keinerlei Prozessorlast mehr. Der Speicher ist jedoch sicher blockiert und steht der Grafikkarte nicht mehr zur Verfügung. Ganz Clevere können das auch mit den Afterburner-Overlay testen, wo plötzlich die Speicherbelegung um den zuvor gewählten Betrag gestiegen ist.
Aber man kann es auch einfach über die Ressourcenanzeige des Windows Task-Managers betrachten und prüfen. Das Ergebnis ist das gleiche.
Wer möchte und / oder Speicher ab 4 GB allokieren möchte, der startet noch eine zweite Instanz mit der nun noch zusätzlich gewünschten, weiteren Speichergröße.
Und auch hier bitte nicht den Suspend-Mode vergessen (siehe oben)!
Das Ergebnis ist eindeutig und kann wieder direkt im Task-Manager überprüft werden. Ich hatte in diesem Fall einfach zweimal 2 GB blockiert.
Man kann damit sogar Grafikkarten mit geringerem Speicherausbau emulieren, aber das habt Ihr ja sicher schon in einem Review von mir gelesen. In diesem Sinne: viel Spaß beim Experimentieren!
13 Antworten
Kommentar
Lade neue Kommentare
Urgestein
Mitglied
Veteran
1
Mitglied
Veteran
Veteran
Urgestein
Urgestein
Mitglied
Mitglied
Veteran
Alle Kommentare lesen unter igor´sLAB Community →