¿Cómo verificar el tamaño de la memoria de video?

61

¿Hay alguna forma de verificar el tamaño de la memoria de video? Específicamente, ¿hay alguno que funcione con precisión tanto para GPU integradas como para tarjetas gráficas PCI / AGP?

Muchas GPU integradas tienen memoria asignada dinámicamente, por lo que es de esperar que la solución devuelva la memoria de video máxima disponible o la cantidad asignada actualmente. Para las tarjetas NVidia o ATI independientes, obviamente devolvería la cantidad total de RAM de GPU física.

lspci -vgenera cifras de memoria, pero no creo que sea la memoria de video. Sospecho que la cifra informada es alguna asignación de memoria del sistema o tamaño de bloque o canal, pero no estoy seguro. Puede ver en estos resultados de prueba que lspci estaba equivocado en 5 de las 6 pruebas:

** ASUS EN210 PCIe - 1024 Mb *** 

01:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 210] (rev a2)
        Subsystem: ASUSTeK Computer Inc. Device 8354
        Memory at e3000000 (32-bit, non-prefetchable) [size=16M]
        Memory at d0000000 (64-bit, prefetchable) [size=256M]
        Memory at e0000000 (64-bit, prefetchable) [size=32M]

*** Galaxy 8400GS PCIe - 512 Mb *** 

01:00.0 VGA compatible controller: nVidia Corporation G98 [GeForce 8400 GS] (rev a1)
    Subsystem: nVidia Corporation Device 05cc
    Region 0: Memory at e4000000 (32-bit, non-prefetchable) [size=16M]
    Region 1: Memory at d0000000 (64-bit, prefetchable) [size=256M]
    Region 3: Memory at e2000000 (64-bit, non-prefetchable) [size=32M]

*** VirtualBox VM - 10 Mb (headless server) *** 

00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
        Memory at e0000000 (32-bit, prefetchable) [size=16M]

*** VirtualBox VM - 128 Mb *** 

00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter (prog-if 00 [VGA Controller])
        Memory at e0000000 (32-bit, prefetchable) [size=128M]

*** S3 Savage 4 AGP - unknown Mb (old lspci log), but I don't think they made these cards with 128Mb memory! *** 

00:01.0 VGA compatible controller: S3 Inc. Savage 4 (rev 06) (prog-if 00 [VGA controller])
    Subsystem: IBM Unknown device 01c5
    Region 0: Memory at feb80000 (32-bit, non-prefetchable) [size=512K]
    Region 1: Memory at f0000000 (32-bit, prefetchable) [size=128M]

*** NVIDIA Quadro FX 1800 integrated - 1024 Mb *** 

01:00.0 VGA compatible controller: nVidia Corporation GT215 [Quadro FX 1800M] (rev a2) (prog-if 00 [VGA controller])
    Subsystem: Dell Device 040c
    Memory at e2000000 (32-bit, non-prefetchable) [size=16M]
    Memory at d0000000 (64-bit, prefetchable) [size=256M]
    Memory at e0000000 (64-bit, prefetchable) [size=32M]
drgrog
fuente
Por lo tanto, ya que no cree que es la cifra, que no acepta respuestas que sugieren que?
RolandiXor
55
@Roland, tal vez mi redacción es incorrecta. No soy un experto con respecto a la salida de lspci, pero como puede ver en el enlace de resultados de la prueba, no proporciona el tamaño total de la memoria de video y, por lo tanto, no responde la pregunta.
drgrog
Posible duplicado de ¿Cómo encontrar cuánta RAM tiene mi computadora?
Waldir Leoncio

Respuestas:

28

Este es el o / p de dmesg con una tarjeta gráfica discreta ATI 6370HD 1G. "RAM VRAM detectada = 1024M, BAR = 256M", verifique esta línea.

sourajit@sourajit:~$ sudo dmesg | grep drm
[    6.126816] [drm] Initialized drm 1.1.0 20060810
[    6.541907] [drm] radeon defaulting to kernel modesetting.
[    6.541910] [drm] radeon kernel modesetting enabled.
[    6.542102] [drm] initializing kernel modesetting (CEDAR 0x1002:0x68E4 0x17AA:0x397A).
[    6.542142] [drm] register mmio base: 0xE0600000
[    6.542143] [drm] register mmio size: 131072
[    7.406572] [drm] Detected VRAM RAM=1024M, BAR=256M
[    7.406576] [drm] RAM width 64bits DDR
[    7.406654] [drm] radeon: 1024M of VRAM memory ready
[    7.406655] [drm] radeon: 512M of GTT memory ready.
Sourajit Basak
fuente
44
Este es el que terminó funcionando para mí, un pequeño ajuste solo para filtrar más dmesg:dmesg | grep VRAM
Ron E
2
confundido por Memory usable by graphics device = 2048Mcuando todo lo demás dice 256Men mis gráficos integrados Intel i5 (podría ser memoria compartida o algo así). EDITAR: solo lea askubuntu.com/a/475405/178596
Wilf
15

nvidia-settings hace esto para tarjetas que usan el nvidiacontrolador propietario . Puede ser inexacto, pero es correcto para mi tarjeta en particular. No conozco ninguna otra herramienta de espacio de usuario que consulte específicamente el controlador de video.

También puede intentarlo, sudo lshw -class displaypero no puedo garantizar que sea más preciso que lspci. También informa rangos de memoria, no cantidades, por lo que tendría que hacer algunos cálculos.

Me parece que grep -i memory /var/log/Xorg.0.loginforma correctamente el VRAM en la tarjeta de mi sistema. No , no funciona para mi portátil, utilizando el controlador radeonde dispositivo integrado Radeon Mobility.

koanhead
fuente
Gracias, pero nvidia-settings es específico de la tarjeta. Y sí, creo que lshwinforma los mismos recursos de memoria del sistema que lspci, solo lshw los informa como rangos de direcciones en lugar de tamaños.
drgrog 05 de
3
Debería haber pensado en revisar phoronix antes de intentar responder esto. En mi sistema, mi tarjeta de video G68 de 768MB se reporta como 256MB en lspci, como notará. La gente en el foro ha dicho que esta es realmente la apertura que es visible sobre el bus PCI, lo cual tiene sentido. Hacer un 'dmesg | grep VGA' da el mismo problema en mi sistema, aunque he oído que funciona correctamente para otros. La memoria se informa correctamente en /var/log/Xorg.0.log: 'NVIDIA (0): Memoria: 786432 kBytes'. De esta publicación del foro: phoronix.com/forums/… !
koanhead
1
Parece que tendré que escribir mi propio guión. Hasta ahora grep kB /var/log/Xorg.0.logo grep -i mem /var/log/Xorg.0.logdeme los datos más precisos y viables para tarjetas nvidia y máquinas virtuales VirtualBox. No tengo ninguna tarjeta ATI para probar, y no he podido probar mis tarjetas de inteligencia integradas o VMware VM.
drgrog
1
fglrx: grep kByteresultará en algo como esto: el Video RAM: 1048576 kByte, Type: GDDR5grepping por solo kB también mostrará algunos elementos VESA.
taneli
xserver-xorg-video-ati: grep "mem size"resultará en algo como esto: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000que es lo mejor que puedo sacar de él, donde el tamaño de la memoria está en hexadecimal despuéss:
taneli
13
LC_ALL=C lspci -v | grep -EA10 "3D|VGA" | grep 'prefetchable' 

Mis salidas de sistema

Memory at d0000000 (64-bit, non-prefetchable) [size=4M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]

Lo que significa que tiene 256 MB de memoria dedicada a la tarjeta de video integrada.

Actualización : sin embargo, tenga cuidado si usa una de las tarjetas de gráficos Intel HD. Su memoria generalmente se comparte con la RAM principal del sistema y es dinámica, lo que significa que aumenta y disminuye según la demanda. En mi sistema, más tarde descubrí que puede crecer hasta 1,7 GB, y este valor parece ser estándar si tiene un sistema con 4,0 GB de RAM (mi caso). Si usa una tarjeta gráfica como esta, la salida anterior no será de mucha ayuda.

thiagowfx
fuente
2
Es posible que pueda encontrar cuánto ejecutando sudo dmesg | grep drmcomo en la primera respuesta: obtuve 2048M, que utilicé para una aplicación en Wine y funcionó.
Wilf
1
Para las tarjetas gráficas que comparten con la memoria principal, es el uso de la memoria expuesta por cosas como topo free, o es invisible para el sistema operativo? ¿Cómo se puede saber cuánta RAM ocupa el IGP compartido?
CMCDragonkai
5

Puedes probar esto:

echo $"VRAM: "$(($(grep -P -o -i "(?<=memory:).*(?=kbytes)" /var/log/Xorg.0.log) / 1024))$" Mb"

o esto si el comando anterior falla:

echo $(dmesg | grep -o -P -i "(?<=vram:).*(?=M 0x)")$" Mb"

Nada nuevo: solo miré otras publicaciones y agregué la coincidencia de patrones para una mejor salida formateada.

Agnius Vasiliauskas
fuente
Ambos no funcionan para el portátil Asus G551JM Ubuntu 14.04 (gráficos duales, incluido GeForce GTX 860M)
Adam Ryczkowski
1
El primer comando devuelve un errorbash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski, el
¡Esta es la única solución que funcionó para mí, desde la línea de comandos!
Panayotis
segundo comando devuelve el tamaño exacto del video ram
Mudit Kapil
1

Hay un programa llamado hardinfo , disponible en el Centro de software , que enumerará cada tarjeta de video (en el menú desplegable Dispositivos, en la categoría Dispositivos PCI) y las especificaciones de cada tarjeta, incluida la memoria y el proveedor / modelo.

Nathan Dyer
fuente
1
Gracias Nathan, pero hardinfo es solo una interfaz gráfica de usuario para la información obtenida de lshw y lspci, etc. Recuerdo que esto se sugirió antes, aunque parece que la respuesta ha sido eliminada por el autor.
drgrog
hardinfo es genial, pero no le dice a la memoria de la GPU.
Adam Ryczkowski el