NAS

Was passiert wenn der graka ram voll ist?

N3Ro

Lieutenant
Registriert
Apr. 2005
Beiträge
1.010
also ich überlege schon die ganze zeit was passiert,wenn ein spiel 260mb graka ram braucht aber man nur 256 hat :p muss man mit starken performance einbrüchen rechnen oder wie?:rolleyes:
langsam bricht ja die 512mb zeit bei den grakas an..
oder ist es wie beim arbeitsspeicher? wenn man 2gb ram hat,hat man ja auch nur einen minimalen vorteil gegenüber den 1gb. also nur sehr leichte performance einbrüche.
 
also shared ram? :p
so ähnlich wie bei den billigeren grafiklösungen?
 
Ja, das könnte man so sagen...

Alles andere im PC verfährt auch so. Erst in den RAM und dann in die Auslagerungsdatei auf der Festplatte, wenn die Komponenten (CPU, Controller, Festplatte, etc.) selber nit genug eigenen Cache, RAM oder sonst was haben!
 
Sowas passiert übrigens nicht automatisch, sondern muss auch programmiert sein. Ansonsten stürzt die Anwendung einfach ab. Spiele usw. sind natürlich so programmiert. Wenn es soweit kommt, merkst du das aber i.d.R. daran dass du die Framerate einer Dia-Show hast. :D
 
im bios heißt diese option imo "agp aperture size"
da kannste einstellen, wieviel ram in deinem szenario der karte dann zur verfügung gestellt werden soll
 
joa.. 256 mb hab ich der graka zugewiesen.
ist auch normal so üblich oder? ;)
ahja.. im ati tray tool ist mir aufgefallen kann man sich genau wie die frames im spiel,den belegten graka ram speicher anzeigen lassen,nur dies klappt irgendwie nicht =/
gibt es alternativen?
 
Wenn mehr Speicher verwendet wird als da ist muss das net zu Frameeinbrüchen führen!
Siehe zb Die Geforce 6600GT mit 128MB. Oft wird bei heutigen Spielen etwas mehr verwendet.
Oder auch Die Geforce 6800GT (von asus die) mit 128MB erleidet keine großen Frameeinbrüche(kommt natürlich auf die Menge an die Ausgelagert wird)
 
Bei mir gibts keine "agp aperture size" :p

Wie wird das bei PCI Express-Grakas gehandhabt?
 
Zuletzt bearbeitet:
@Nv43
Nein, das ist so nicht richtig. Spiele werden eben so programmiert dass sie einfach den RAM der Graka nicht überschreiten. Das ist das Geheimnis. Wenn ausgelagert wird, kommts zwingend zu Frameeinbrüchen, allein aufgrund der Latenz. ;)
 
Mhh na ich weiß net. Wie zb schafft ne 128MB 68GT COD2 bei vollen details unter DX9? Meinst du da werden wirklich net die 128mb überschritten? mhh ich lass mich gerne eines Besseren beleheren, aber ich glaube das muss nicht unbedingt zu Frameeinbrüchen führen wenn der Vram überschritten wird. Zb wenn ne Textur ausgelagert wird die immo net gebracuth wird oder so
 
vielelicht spielst du ja bei 800*600? :p oder filterungen aus oder so..
ich selber hab bei cod2 auch ab und zu ruckler auf max einstellungen obwohl ich schon die filterungen etwas verringert habe..
die 6800gt sollte bestimmt weniger frames haben als ich noch..
was mich jetzt aber intressiert wie das bei pci-e grakas ist ;)
da gibt es ja kein agp aperture size :p
 
Ich habe keine 6800gt mit 128mb. Und ausserdem AA un AF is bei meinem Freund aus!(der hat die) Also Auflösunf ->1280x1024 Max details aber weder aa noch af
 
Green Mamba schrieb:
Sowas passiert übrigens nicht automatisch, sondern muss auch programmiert sein. Ansonsten stürzt die Anwendung einfach ab. Spiele usw. sind natürlich so programmiert. Wenn es soweit kommt, merkst du das aber i.d.R. daran dass du die Framerate einer Dia-Show hast. :D


Was natuerlich wieder voelliger Bloedsinn ist. Woher soll eine Applikation denn wissen, welche Daten sie auszulagern hat?
Das Auslagern geschieht komplett automatisch und wird vom Grafiktreiber gesteuert, die Applikation bekommt davon garnichts mit.


N3Ro schrieb:
joa.. 256 mb hab ich der graka zugewiesen.
ist auch normal so üblich oder? ;)

256MB ist ok, aber groessere Werte sind im Gegensatz zu zu kleinen Werten nicht schaedlich. Das AGP RAM wird dynamisch verwaltet und nur soviel davon belegt, wie gerade gebraucht wird. Kannst also auch die Aperture auf 512Mb oder 1GB setzen, komplett belegt werden die derzeit aber nicht werden.
Bei zu geringer Aperture Size wird die Graka wenn der Speicher ausgeht auf konventionelles Swapping zurueckgreifen, das ist dann aber wirklich langsam.

Nv43 schrieb:
Mhh na ich weiß net. Wie zb schafft ne 128MB 68GT COD2 bei vollen details unter DX9? Meinst du da werden wirklich net die 128mb überschritten? mhh ich lass mich gerne eines Besseren beleheren, aber ich glaube das muss nicht unbedingt zu Frameeinbrüchen führen wenn der Vram überschritten wird. Zb wenn ne Textur ausgelagert wird die immo net gebracuth wird oder so


Du hast recht, dass es nicht unbedingt zu Framerateeinbruechen kommen muss, das haengt aber nur davon ab, welcher Flaschenhals denn gerade die Framerate limitiert.
Es duerfte klar sein, dass z.B. in CPU-limitierten Szenarien, ein Texturieren aus dem AGP-RAM keine Frames kostet, aber wenn die Texturierleistung schon limitiert es natuerlich zu einem Framerateeinbruch kommt, wenn anstatt aus dem lokalen Grafikram aus dem AGP-RAM texturiert wird.
 
Zuletzt bearbeitet:
frameeinbrüche würd ich das nicht nennen
eher nachladeruckler
sehe ich bei quake 4
obwohl es da etwas anders ist
hab mal mit vidmemwatch den speicherverlauf angekuckt und nbemerkt das die 128mb meiner 6600gt sofort voll sind, aber nichts in den ram ausgelagert wird
deswegen habe ich manchmal 40fps aber es kommt zu 1sec. langen rucklern
kann das mal ein cb-redakteur nachprüfen? (falls die möglichkeit besteht)

@kisser
wie erklärt man da mein obiges problem, wenn der treiber auslagert?
bei quake4 wird trotz vollem vram nichts ausgelagert
bei allen anderen spielen schon
 
@kisser
Hast du also mal versucht eine 300MB 3D-Textur in einem OpenGL-Kontext in den Grafikram zu laden? Weißt du was dann passiert? ;)
Woher die Applikation weißt was in den Grafikram passt, und was nicht? Weiß die Applikation überhaupt auf welcher Grafikkarte sie läuft, welche Features diese unterstützt, und wie groß der GraKa-Ram ist? Nein, muss sie ja alles nicht wissen, wird ja alles vom Treiber geregelt... :freak:
Wenn du mal ein wenig in der Richtung programmiert hättest, wüsstest du ganz genau wie man regelt welche Textur im V-Ram liegt, und welche im Hauptspeicher.
Es kann unter Umständen aber dazu kommen dass der Treiber in bestimmten Situationen selbstständig beginnt auszulagern. Wenn das passiert, kann man aber von einer äußerst nachlässig programmierten Anwendung sprechen. Sowas wirst du bei Spielen wohl kaum erleben.
 
Zuletzt bearbeitet:
Ausser bei Quake 4 bei Max Dateils wirden die 128MB rams meiner Karte nicht überschritten. In Quake 4 merkt man es daran das er immer wieder nach ca. 1 Minute durch den etwas langsameren Arbeitspeicher Laden muss.

Hohe Dateils bei 1280x1024 4x AA Durchschnit 40Fps
Max Dateils bei 1280x1024 4xAA Durchschnitt 20Fps
 
naja jetzt weiß ich ja ungefähr was passiert :p
bei quake 4 sieht man soweit ich weiß zwischen hohen und max. deteils kaum einen unterschied. bei max deteils werden die texturen nur nicht mehr komprimiert oder? :rolleyes:
 
Green Mamba schrieb:
@kisser
Hast du also mal versucht eine 300MB 3D-Textur in einem OpenGL-Kontext in den Grafikram zu laden? Weißt du was dann passiert? ;)

Es wird die Testur wohl in den AGP-RAM ausgelagert werden, wenn sie nicht ins Grafikram passt.

Green Mamba schrieb:
Woher die Applikation weißt was in den Grafikram passt, und was nicht? Weiß die Applikation überhaupt auf welcher Grafikkarte sie läuft, welche Features diese unterstützt, und wie groß der GraKa-Ram ist?
Nein, muss sie ja alles nicht wissen, wird ja alles vom Treiber geregelt... :freak:

Richtig, das wird alles vom Treiber geregelt bzw. mittelbar ueber diesen vom Betriebssystem.
Ist im Prinzip dasselbe wie das vom OS veranlasste Auslagern auf die Festplatte, wenn der Hauptspeicher voll ist. Da braucht die Applikation auch nicht eingreifen bzw. die Applikation weiss ueberhaupt nicht, ob sie im Hauptspeicher oder von Festplatte laeuft.
Das einzige was die App. damit zu tun hat ist, dem OS zu sagen, ob ein Speicherbereich ueberhaupt auslagerbar ist oder nicht.
Und bei 3D Anwendungen ist das bzgl. des Grafik-Rams dasselbe, so ist zB. der Framebuffer niemals in das AGP-RAM auslagerbar, Textur- und Vertexdaten hingegen schon.
Aber es entscheidet der Treiber, wann er wieviele Daten in AGP-RAM auslagert, das tut nicht die Applikation.


N3Ro schrieb:
naja jetzt weiß ich ja ungefähr was passiert :p
bei quake 4 sieht man soweit ich weiß zwischen hohen und max. deteils kaum einen unterschied. bei max deteils werden die texturen nur nicht mehr komprimiert oder? :rolleyes:

Richtig, das ist der einzige Unterschied.


bensen schrieb:
@kisser
wie erklärt man da mein obiges problem, wenn der treiber auslagert?
bei quake4 wird trotz vollem vram nichts ausgelagert
bei allen anderen spielen schon


Ich weiss jetzt nicht, welche Problem du meinst, in diesem Thread hast du doch noch garnichts gepostet.
Hast du eine Nvidia Karte? Bei Nvidia bin ich mir nicht sicher, ob die unter OpenGL ueberhaupt AGP-RAM benutzen, der Vidmem-Watcher von nonatainment zeigt mir jedenfalls keinen genutzten AGP-RAM fuer OpenGL Applikationen an. Und in diesem Falle greift dann eben sofort der Swapping Mechanismus ein, es werden Daten aus dem Grafik-RAM in den Hauptspeicher (nicht AGP-Speicher!) ausgelagert und das dadurch frei werdende Grafik-RAM mit den neuen Texturdaten gefuellt. Das passiert fuer jede Textur, die nicht im Grafik-RAM liegt und aber gerade zum Texturieren benoetigt wird. Es wird also richtig langsam.
Deshalb hat man bei der Entwicklung des AGP die direkte Benutzung des Hauptspeichers durch die Grafkkarte implementiert.
 
Zuletzt bearbeitet:
Nein kisser, das ist definitiv falsch. Sowas regelt der Treiber nicht. Du kannst nicht die Auslagerungsdatei mit dem Grafikram vergleichen, das sind 2 verschiedene Baustellen. ;)
Es wird die Testur wohl in den AGP-RAM ausgelagert werden, wenn sie nicht ins Grafikram passt.
Falsch, die Anwendung stürzt ab, sollte im Grafikram nicht genügend Platz sein. Daher muss man sowas als Programmierer vorher checken. Aber das weißt du ja sicher als Direct3D und OpenGL Profi. :daumen:
 
Sapphire Forum
Zurück
Oben