DragonTear
Legende
Hallo Community,
immer wieder taucht hier im Forum die Frage auf, wieviel Grafikkarten Speicher brauchen Games wirklich?
Insbesondere die Ankündigung der 3080 mit "nur" 10Gb hat dies verschärft obwohl NV behauptet Games würden auch 6Gb reichen.
Oft hört man das Argument "GPU-Z / MSI Afterburner zeigt dass mein VRam bereits voll ist. Also brauche ich in Zukunft mehr VRam!".
Das wird dann oft damit entkräftet dass der Speicher der GPU (wie teilweise auch der normale RAM) als Cache dient. D.h. die Software schaufelt da alles rein und es wird praktisch nur überschrieben, aber nicht wirklich gelöscht.
Stimmt diese These, dann kann man mit der VRam-Auslastung alleine, nicht die Frage beantworten wieviel davon ein Game wirklich braucht um nicht limitiert zu werden.
Ich habe mir dazu Gedanken gemacht und mittels Unity, den VRamHog entwickelt:
Diese Software tut genau was der Name schon sagt: Sie erlaubt eine gewählte Menge VRam schlicht zu blockieren.
Dazu werden Texturen aloziert und auf winzigen Rechtecken gerendert (der schwarze Balken unten). Dadurch kann der GPU Treiber nicht die Daten wegoptimieren oder auslagern und zugleich entsteht praktisch keine GPU-Last, da nur eine Handvoll Pixel mit diesen Texturen gerendert werden müssen.
Indem man das Programm während des Spielens laufen lässt, sollte man somit simulieren können, was wäre wenn die eigene GPU weniger Speicher hätte?
Entsprechend ließe sich der tatsächliche Bedarf an VRam bestimmen.
Download: Actung, Archiv zuerst entpacken, nicht aus dem Archiv heraus starten!
Bedienung:
VRam Menge mit den Buttons auswählen, dann auf "APPLY" klicken.
"DISABLE" setzt den Speicher zuverlässig frei, aber der zuletzt eingestellte VRam Wert bleibt sichtbar und kann mittels "APPLY" wieder aloziert werden.
Nicht wundern dass das Unity Intro erneut erscheint bei Disable und Apply. Das Programm startet sich selbst neu, denn nur durch Löschen der Texturen, bliebe Teile des VRam sonst besetzt (wohl eine Unity Eigenheit).
EDIT: Die neue Version hat jetzt noch einen "Filled" Toggle welcher bewirkt dass echte, zufallsgenerierte (damit unkomprimierbare) Texturen geladen werden. Das ist natürlich etwas langsamer.
Source (Unity3D Projekt): https://www.dropbox.com/s/toi77pzbnsct8me/VRamHog_v2 Source.zip?dl=0
Standalone build als 64bit Version generieren, sonst gibt es Abstürze bei über 4Gb.
Leider habe ich nicht wirklich die Vorraussetzungen um selbst großartig Tests damit durchzuführen. Meine GPU ist von Vorgestern (RX 480 8GB) und ich spiele nur noch selten.
Das anspruchsvollste Spiel wäre wohl Subnautica und in Vram-lastiger Auflösung sind die FPS unabhängig von der VRam-Auslastung zu niedrig um viel schlusszufolgern. Geschweige denn Mini-Ruckler wahrzunehmen die vom Nachladen von Texturen herrühren könnten.
Vieleicht findet sich aber der ein oder andere Benching Fan hier der was damit anstellen kann
War jedenfalls ein interessantes Abend-Projekt.
Würde mich über Feedback freuen!
P.s. interessant wäre zu sehen ob die selbe Menge beanspruchter VRam, in manch aktuellen GPUs zu deutlich weniger realer Auslastung führen. Es wurde ja eine Kompressionstechnik eingeführt, soweit ich mitbekommen habe.
EDIT: Soweit ich in Erfahrung bringen konnte müssen Texturen schon beim Laden komprimiert sein. Das macht der GPU-Treiber nicht selbst. Sicherheitshalber hat die neue Version aber den "filled" toggle welcher Zufallsdaten einfüllt.
immer wieder taucht hier im Forum die Frage auf, wieviel Grafikkarten Speicher brauchen Games wirklich?
Insbesondere die Ankündigung der 3080 mit "nur" 10Gb hat dies verschärft obwohl NV behauptet Games würden auch 6Gb reichen.
Oft hört man das Argument "GPU-Z / MSI Afterburner zeigt dass mein VRam bereits voll ist. Also brauche ich in Zukunft mehr VRam!".
Das wird dann oft damit entkräftet dass der Speicher der GPU (wie teilweise auch der normale RAM) als Cache dient. D.h. die Software schaufelt da alles rein und es wird praktisch nur überschrieben, aber nicht wirklich gelöscht.
Stimmt diese These, dann kann man mit der VRam-Auslastung alleine, nicht die Frage beantworten wieviel davon ein Game wirklich braucht um nicht limitiert zu werden.
Ich habe mir dazu Gedanken gemacht und mittels Unity, den VRamHog entwickelt:
Diese Software tut genau was der Name schon sagt: Sie erlaubt eine gewählte Menge VRam schlicht zu blockieren.
Dazu werden Texturen aloziert und auf winzigen Rechtecken gerendert (der schwarze Balken unten). Dadurch kann der GPU Treiber nicht die Daten wegoptimieren oder auslagern und zugleich entsteht praktisch keine GPU-Last, da nur eine Handvoll Pixel mit diesen Texturen gerendert werden müssen.
Indem man das Programm während des Spielens laufen lässt, sollte man somit simulieren können, was wäre wenn die eigene GPU weniger Speicher hätte?
Entsprechend ließe sich der tatsächliche Bedarf an VRam bestimmen.
Download: Actung, Archiv zuerst entpacken, nicht aus dem Archiv heraus starten!
Bedienung:
VRam Menge mit den Buttons auswählen, dann auf "APPLY" klicken.
"DISABLE" setzt den Speicher zuverlässig frei, aber der zuletzt eingestellte VRam Wert bleibt sichtbar und kann mittels "APPLY" wieder aloziert werden.
Nicht wundern dass das Unity Intro erneut erscheint bei Disable und Apply. Das Programm startet sich selbst neu, denn nur durch Löschen der Texturen, bliebe Teile des VRam sonst besetzt (wohl eine Unity Eigenheit).
EDIT: Die neue Version hat jetzt noch einen "Filled" Toggle welcher bewirkt dass echte, zufallsgenerierte (damit unkomprimierbare) Texturen geladen werden. Das ist natürlich etwas langsamer.
Source (Unity3D Projekt): https://www.dropbox.com/s/toi77pzbnsct8me/VRamHog_v2 Source.zip?dl=0
Standalone build als 64bit Version generieren, sonst gibt es Abstürze bei über 4Gb.
Leider habe ich nicht wirklich die Vorraussetzungen um selbst großartig Tests damit durchzuführen. Meine GPU ist von Vorgestern (RX 480 8GB) und ich spiele nur noch selten.
Das anspruchsvollste Spiel wäre wohl Subnautica und in Vram-lastiger Auflösung sind die FPS unabhängig von der VRam-Auslastung zu niedrig um viel schlusszufolgern. Geschweige denn Mini-Ruckler wahrzunehmen die vom Nachladen von Texturen herrühren könnten.
Vieleicht findet sich aber der ein oder andere Benching Fan hier der was damit anstellen kann
War jedenfalls ein interessantes Abend-Projekt.
Würde mich über Feedback freuen!
EDIT: Soweit ich in Erfahrung bringen konnte müssen Texturen schon beim Laden komprimiert sein. Das macht der GPU-Treiber nicht selbst. Sicherheitshalber hat die neue Version aber den "filled" toggle welcher Zufallsdaten einfüllt.
Zuletzt bearbeitet: