VRAM como se gestiona la VRAM y Vram compartida con RAM?

Antes tenia 12GB y el COD me ocupaba unos 11GB y unos 3GB en compartida ( ram normal) Si esto pasa y es bastante en plan mas de 1gb compartido, a veces hay un tiron pero los fps no bajan el resto de momentos.

Ahora con 16gb el COD me ocupa 14.4gb y vuelve a poner 2.2GB en compartida?


que troleada es esta???


Es verdad que juego en ultra o extremo, pero no se porque de 14 a 16gb no se me llenan NUnCA
Ten en cuenta que el sistema operativo también necesita VRAM y quizás esté reservándose un porcentaje de la misma.
Morpheus24o escribió:Ten en cuenta que el sistema operativo también necesita VRAM y quizás esté reservándose un porcentaje de la misma.



puede ser pero tengo todo cerrado solo abro el juego, y no veo normal que a los 14gb de 16 detenga la carga de vram y use RAM. El SO como mucho podria usar unos megas para el escritorio, pero 2GB? ahi reservados? puede ser cuanto mas tienes mas se reserva absurdo, en 12 gb reservaba mucho menos 1gb como mucho, ahora son 2GB los que deja siempre vacios y empieza a usar la ram ddr4

Esta claro que los juegos cuanta mas tienes mas van metiendo ahi, tengo que ponerlo en low el COD para que no use mas de 6GB, usa 700MB de ram incluso teniendo 6gb vram libres...
Aunque muchas veces se abusa de la palabra compartida en este contexto, es importante destacar que no es lo mismo hablar de memoria compartida cuando la usa una iGPU (que en ese caso sí que es RAM que pierde el sistema irremediablemente) o cuando se usa una gráfica dedicada.

En este segundo caso, no es una cantidad de memoria que se usa cuando la VRAM se llena. Es una parte de memoria que tiene unos pocos datos replicados tanto en la VRAM como en memoria principal, ya que la CPU también necesita acceder a algunos recursos de la gráfica (y viceversa) de forma puntual. Evidentemente esto tiene una penalización de rendimiento, porque la memoria principal es bastante más lenta que la VRAM, pero a veces no hay otro remedio.

Sobre ejemplos exactos o detalles técnicos, no te sé decir porque no soy en absoluto experto en este campo, y supongo que depende del motor gráfico y de cómo hayan implementado varias cosas en ese juego en particular. Pero seguramente esa cantidad no baje más de esos 2.2GB en CoD incluso con una GPU con 24GB o más. Y nunca es memoria que se "ahorra" en la gráfica, ya que la información se duplica, se "gasta" en ambos sitios.

Saludos
Desde hace años que el uso de RAM para los sistemas de 64 bits es de 4GBs como obligatorio, digo que será por algo que se coma esos dos.

También puede ser la optimización del juego, que no necesite tanto y se reserve la memoria para otro tipo de tareas.
Me dice windows 11 que mi GPU tiene 32GB, de los cuales dedicados pone 16GB y compartidos 16GB mas ( entiendo que es DDR4) esta ultima.

Pues nada , los juegos pueden usar igual 9GB vram, que de entrada ya te pone 700MB en compartida, para que? si quedan como 7GB vram sin asignar? Si uso juego que use unos 13-14GB ( de 16GB) , ahi automaticamente esos 0.7GB compartidos pasan a ser 1.2GB-2.5GB ( no se depende del mapa de COD a saber) Al salir al menu de buscar partida de los 14GB( asignados) ( no en uso) me bajan a 10GB de nuevo Y se libera la ram compartida de 2GB a 0.7GB . Al entrar al mapa de nuevo vuelve a 14GB, pero si cierro el juego , entonces baja la vram a 1.2GB y magicamente la ram compatida ahi se libera del todo ( de los 700MB a 100MB). Este es el comportamiento continuado que hace ese juego, y muchos mas.


entonces lo que esta ocurriendo es esto?

. Es una parte de memoria que tiene unos pocos datos replicados tanto en la VRAM como en memoria principal, ya que la CPU también necesita acceder a algunos recursos de la gráfica (y viceversa) de forma puntual. Evidentemente esto tiene una penalización de rendimiento, porque la memoria principal es bastante más lenta que la VRAM, pero a veces no hay otro remedio.


Quieres decir que de esos 14GB asignados ( en uso son 11GB) se copian 2 veces y pasan a la DDR4 ahi ? para que? si lo tienes en la memoria mas rapida posible ya retenido? No lo comprendo, porque meter duplicados ahi me he dado cuenta que "a veces" no es todo el tiempo da un tiron y se modifica esa memoria arriba o abajo ( no mucho) y eso rompe el frametime. Es molesto. Indicas que es porque la CPU necesita acceder a esos datos por eso los tiene en RAM por si acaso, algo no me encaja, pero 2 cuestiones: 1- No esta el REBAR activo para que la CPU vaya a pescar a la VRAM directamente? y 2- Porque cuando pongo texturas normales, no altas, entonces tambien hay 700MB en DDR4 duplicados ( en vez de 2GB que seria en alto) pero en ese caso no tengo penalizacion? ( es decir por el bus, lo que sea, cuando la cpu accede al bloque de 700MB tengo 0 penalizacion o remotamente minima, comparado con tener ahi 2.5GB ( texturas en alto) Me escama mucho. Entoces el meter cosas en DDR4 son dupicadas y no es que me haya quedado sin Vram a los 14gb no? es decir no esta desperdiciando 2GB de vram, sino que tiene suficiente con esa, pero al ser mas grandes, lleva tambien mas duplicadas texturas a la DDR4 y por eso pasa de 700MB a 2.2GB... es lo que estoy entendiendo


Esclarecedor cuanto menos eso de la duplicidad es un descubrimiento para mi, pensaba que REBAR se encargaba de eso , y poder olvidar a la RAM yendo a lo mas rapido , aunque ahora que lo pienso REBAR es para que la cpu acceda a la VRAM completamente sin ir por fragmentos, y supongo que el motor de juego no puede cargarlo todo en GDDR6x ( en PS5 lo hace , porque no hay otra). Entonces con 24GB de la 4090 en ultra , me temo que nuevamente meteria 2GB en DDR4, teniendo como 12GB libres de vram, absurdo! eso nos lleva a tirones , porque no cargarlo todo en vram si es que hay de sobra? se me escapa pero es lo que hay, es como se comporta.



Pollonidas escribió:Aunque muchas veces se abusa de la palabra compartida en este contexto, es importante destacar que no es lo mismo hablar de memoria compartida cuando la usa una iGPU (que en ese caso sí que es RAM que pierde el sistema irremediablemente) o cuando se usa una gráfica dedicada.

En este segundo caso, no es una cantidad de memoria que se usa cuando la VRAM se llena. Es una parte de memoria que tiene unos pocos datos replicados tanto en la VRAM como en memoria principal, ya que la CPU también necesita acceder a algunos recursos de la gráfica (y viceversa) de forma puntual. Evidentemente esto tiene una penalización de rendimiento, porque la memoria principal es bastante más lenta que la VRAM, pero a veces no hay otro remedio.

Sobre ejemplos exactos o detalles técnicos, no te sé decir porque no soy en absoluto experto en este campo, y supongo que depende del motor gráfico y de cómo hayan implementado varias cosas en ese juego en particular. Pero seguramente esa cantidad no baje más de esos 2.2GB en CoD incluso con una GPU con 24GB o más. Y nunca es memoria que se "ahorra" en la gráfica, ya que la información se duplica, se "gasta" en ambos sitios.

Saludos













@katatsumuri


el propio juego indica que hay un uso de vram de "otros procesos entiendo de windows11) y ram ddr4 hay de sobra para el sistema, es solo que el juego me mete ahi unos megas o gigas duplicando en ambas memorias, sin menor de las ideas de porque funciona asi, pero me parece mal diseño teniendo todo en vram y teniendola libre, porque insisto el leer DDR4 ingame produce caidas de FPS ( muy esporadicas) y menos cuando mayor es el tamaño de esos ficheros en DDR4.












gracias a los 2 por comentar
PSX22 escribió:Quieres decir que de esos 14GB asignados ( en uso son 11GB) se copian 2 veces y pasan a la DDR4 ahi ? para que? si lo tienes en la memoria mas rapida posible ya retenido? No lo comprendo, porque meter duplicados ahi me he dado cuenta que "a veces" no es todo el tiempo da un tiron y se modifica esa memoria arriba o abajo ( no mucho) y eso rompe el frametime. Es molesto. Indicas que es porque la CPU necesita acceder a esos datos por eso los tiene en RAM por si acaso, algo no me encaja, pero 2 cuestiones: 1- No esta el REBAR activo para que la CPU vaya a pescar a la VRAM directamente? y 2- Porque cuando pongo texturas normales, no altas, entonces tambien hay 700MB en DDR4 duplicados ( en vez de 2GB que seria en alto) pero en ese caso no tengo penalizacion? ( es decir por el bus, lo que sea, cuando la cpu accede al bloque de 700MB tengo 0 penalizacion o remotamente minima, comparado con tener ahi 2.5GB ( texturas en alto) Me escama mucho. Entoces el meter cosas en DDR4 son dupicadas y no es que me haya quedado sin Vram a los 14gb no? es decir no esta desperdiciando 2GB de vram, sino que tiene suficiente con esa, pero al ser mas grandes, lleva tambien mas duplicadas texturas a la DDR4 y por eso pasa de 700MB a 2.2GB... es lo que estoy entendiendo

Porque en algunos casos es necesario. No sé si esto es un buen ejemplo porque son solo unos pocos bytes y no 2GB, pero lo uso igualmente porque es algo que hay que mantener duplicado sí o sí.

Piensa por ejemplo en las coordenadas del jugador dentro del mapa, y la dirección en la que está mirando y apuntando. ¿De qué sirve quitar eso de la memoria principal para dejarlo solo en la gráfica, por muy rápida que sea la VRAM? Sería más lento al final, porque la CPU necesita acceder a esos valores y modificarlos constantemente, cuando mueves el ratón para apuntar, cuando pulsas las teclas para moverte, o cuando el retroceso del arma hace que la vista se mueva hacia arriba. En lugar de leerlo desde la gráfica a memoria principal y borrarlo cada vez, es más sencillo mantenerlo por duplicado y listo. Como solo es necesario sincronizar el contenido en los dos sitios cuando se escribe (cuando se lee no hace falta), sigue siendo una ventaja tenerlo en memoria más rápida, ya que la gráfica también necesita esos valores para hacer su trabajo (para saber qué objetos tiene que dibujar, etc.). Pero sin quitarlo de la lenta.

No creo que ni mucho menos el tirón sea motivado solamente por eso, porque las escalas en las que se ve un tirón son, en el peor de los casos, milisegundos, mientras que los tiempos de acceso a RAM son de nanosegundos (50-60 en ram muy rápida, no más de 100-120 en RAM lenta). Quiere decir que estamos 6 órdenes de magnitud por debajo.

Por dar un poco de contexto de cómo de grande es esta diferencia, entre un día (3600 x 24 segundos) y 1 segundo hay 5 órdenes de magnitud (redondeando 86K a 100K). Es decir, la diferencia entre los tiempos de acceso a la memoria "lenta" y el retraso que tiene que haber para que exista un tirón es de hecho menor que la proporción de la duración de 1 día y la duración de 1 segundo. Los tirones, especialmente si son pequeños, pueden tener mil causas, pero muy rara vez es la falta de VRAM ni el hecho de compartir datos, que es algo que hacen habitualmente todos los motores gráficos. Cuando falta VRAM "de verdad" en vez de un juego parece una presentación de PowerPoint, por muy potente que sea la GPU.

...otra cosa es cuando en lugar de unas pocas lecturas/escrituras pequeñas, se hacen miles. Cosa nada rara cada segundo que estás jugando. Pero en general no son cosas muy grandes, si se copian texturas en memoria principal son cosas relativamente pequeñas. 2-4GB hoy en día se podría decir que son cosas relativamente pequeñas. Pero vamos, que muchas veces un tirón de este estilo con hardware potente suele ser porque hay algún detalle no demasiado bien resuelto y no demasiado optimizado. Quizás con DDR5 o con overclock a tu RAM mejoraría, lo desconozco en este juego en concreto.

PSX22 escribió:Esclarecedor cuanto menos eso de la duplicidad es un descubrimiento para mi, pensaba que REBAR se encargaba de eso , y poder olvidar a la RAM yendo a lo mas rapido , aunque ahora que lo pienso REBAR es para que la cpu acceda a la VRAM completamente sin ir por fragmentos, y supongo que el motor de juego no puede cargarlo todo en GDDR6x ( en PS5 lo hace , porque no hay otra). Entonces con 24GB de la 4090 en ultra , me temo que nuevamente meteria 2GB en DDR4, teniendo como 12GB libres de vram, absurdo! eso nos lleva a tirones , porque no cargarlo todo en vram si es que hay de sobra? se me escapa pero es lo que hay, es como se comporta.

Realmente el REBAR lo único que hace es que, a la hora de mover "agua" entre dos piscinas, se pueda pueda usar un caldero grande en lugar de un vasito (que es lo que por defecto permite la especificación PCIe, porque cuando se diseñó no se pensaba en que a futuro habría que mover cantidades de datos tan grandes). Solo que cambiando "agua" por "datos", y las piscinas suelen ser la memoria principal y la VRAM. Pero realmente pueden ser datos generados por la CPU "al momento" que no estén en RAM, Casi cualquier dispositivo de entrada/salida en un ordenador se trata como si fueran direcciones de memoria, porque es lo más sencillo y viene de hace muchos años.

Y es como dices, con la 4090 en ultra seguramente esos mismos 2GB de datos duplicados se mantendrían porque el juego/motor gráfico está hecho así.

Saludos
@Pollonidas


Mucho que asimilar, pero me quedo con que hay datos que deben estar en DDR , pero a mayor calidad grafica mas datos hay en DDR y si son latencias no muy buenas y frecuencias no muy altas, puede que le falte ancho de banda a la ram, podria ser eso, cuando la calidad es normal ese bloque DDR es 700MB y no 2GB por lo que se podra leer a tiempo y no observo tiron. El tiron no es caida de fps, es una caida de frametime de menos de 200ms, no puedo medir si el tiron se da simultaneo a cuando esa ram compartida aumenta de tamaño no tengo 2 monitores.

Al menos saco en claro que falta de vram no es , pues los fps nunca caen de forma prolongada solo un instante y vuelven a maximos

Al final va ser que la ram es importante tambien para jugar a nivel de CAS , CL mhz apenas se de esto


Se me habia pasado decir, que el juego usa ram normal unos 8GB pero en lugar de usarla normal ahi prefiere moverla desde la vram a ram compartida en lugar de directo a ram ( que es el mismo sitio si) pero de reporta como vram compartida no como ram
7 respuestas