Comment vérifier la taille de la mémoire vidéo?

61

Existe-t-il un moyen de vérifier la taille de la mémoire vidéo? En particulier, existe-t-il un système qui fonctionne avec précision pour les cartes graphiques intégrées ainsi que pour les cartes graphiques PCI / AGP?

De nombreux processeurs graphiques intégrés ont une mémoire allouée dynamiquement. Par conséquent, la solution renverrait, espérons-le, la mémoire vidéo maximale disponible ou la quantité actuellement allouée. Pour les cartes NVidia ou ATI autonomes, le nombre total de RAM physique du GPU serait évidemment renvoyé.

lspci -vsort les chiffres de la mémoire, mais je ne crois pas que ce soit la mémoire vidéo. Je soupçonne que le chiffre indiqué correspond à une allocation de mémoire système ou à une taille de bloc ou de canal, mais je ne le sais pas avec certitude. Vous pouvez voir dans ces résultats de test que lspci était erroné dans 5 des 6 tests:

** 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
la source
Donc, parce que vous ne croyez pas que c'est le chiffre, vous n'acceptez pas les réponses qui le suggèrent?
RolandiXor
5
@Roland, peut-être que ma formulation est fausse. Je ne suis pas un expert en ce qui concerne la sortie lspci, mais comme vous pouvez le constater dans le lien des résultats du test, il ne donne pas la taille totale de la mémoire vidéo et ne répond donc pas à la question.
Drgrog

Réponses:

28

C'est le o / p de dmesg avec une carte graphique 1G ATI 6370HD discrète. "RAM VRAM détectée = 1024 M, BAR = 256 M", recherchez cette ligne.

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
la source
4
Ceci est celui qui a fini par travailler pour moi, légère modification juste pour filtrer plus de dmesg:dmesg | grep VRAM
Ron E
2
confus par Memory usable by graphics device = 2048Mquand tout le reste dit 256Msur mon graphique intégré Intel i5 (peut être de la mémoire partagée ou quelque chose). EDIT: il suffit de lire askubuntu.com/a/475405/178596
Wilf
15

C'est ce que fait nvidia-settings pour les cartes utilisant le nvidiapilote propriétaire . C'est peut-être inexact, mais c'est correct pour ma carte en particulier. Je ne connais aucun autre outil utilisateur qui interroge spécifiquement le pilote vidéo.

Vous pouvez également essayer sudo lshw -class displaymais je ne peux pas garantir que ce sera plus précis que lspci. En outre, il indique les plages de mémoire, pas les montants, de sorte que vous devrez faire quelques calculs.

Je trouve que grep -i memory /var/log/Xorg.0.lograpporte correctement la VRAM sur la carte de mon système. Cela ne fonctionne pas pour mon ordinateur portable utilisant un pilote radeonavec un appareil intégré Radeon Mobility.

Koanhead
la source
Merci, mais nvidia-settings est spécifique à la carte. Et oui, je pense lshwque les mêmes ressources de mémoire système sont lspcirapportées, seul lshw les signale sous forme de plages d'adresses au lieu de tailles.
Drgrog
3
J'aurais dû penser à vérifier phoronix avant d'essayer de répondre à cette question. Sur mon système, ma carte vidéo G80 de 768 Mo est signalée comme 256 Mo dans lspci, comme vous le constatez. Les gens du forum ont dit qu'il s'agissait en fait de l'ouverture visible sur le bus PCI, ce qui est logique. Faire un 'dmesg | grep VGA' pose le même problème sur mon système, même si j'ai entendu dire que cela fonctionnait correctement pour les autres. La mémoire est rapportée correctement dans /var/log/Xorg.0.log: 'NVIDIA (0): Mémoire: 786432 Ko'. De ce post de forum: phoronix.com/forums/… !
koanhead
1
Il semble que je devrais écrire mon propre script. Jusqu'ici grep kB /var/log/Xorg.0.logou grep -i mem /var/log/Xorg.0.logdonnez-moi les données les plus précises et les plus exploitables pour les cartes nvidia et les machines virtuelles VirtualBox. Je n'ai pas de carte ATI à tester et je n'ai pas encore testé mes cartes Intel intégrées ou les machines virtuelles VMware.
Drgrog
1
fglrx: grep kBytedonnera quelque chose comme ceci Video RAM: 1048576 kByte, Type: GDDR5:, grepping pour seulement kB montrera aussi quelques éléments VESA.
Taneli
xserver-xorg-video-ati: grep "mem size"résultera en quelque chose comme ceci: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000quel est le meilleur que je puisse en tirer, où la taille de la mémoire est dans l'hex aprèss:
taneli
13
LC_ALL=C lspci -v | grep -EA10 "3D|VGA" | grep 'prefetchable' 

Mes sorties système

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

Ce qui signifie qu'il dispose de 256 Mo de mémoire dédiée à la carte vidéo intégrée.

Mise à jour : faites cependant attention si vous utilisez l'une des cartes Intel HD Graphics. Sa mémoire est généralement partagée avec la mémoire vive principale du système et elle est dynamique, ce qui signifie qu’elle augmente et diminue à la demande. Dans mon système, j'ai découvert par la suite qu'il pouvait atteindre 1,7 Go. Cette valeur semble être standard si vous disposez d'un système avec 4,0 Go de RAM (mon cas). Si vous utilisez une telle carte graphique, la sortie ci-dessus ne vous sera pas d'une grande aide.

thiagowfx
la source
2
Vous pourrez peut-être trouver combien en exécutant sudo dmesg | grep drmcomme dans la première réponse - j'ai 2048M, que j'ai utilisé pour une application sous Wine et cela a fonctionné.
Wilf
1
Pour les cartes graphiques qui partagent avec la mémoire principale, est cette utilisation de la mémoire exposée par des choses comme topou freeou est - il invisible pour le système d' exploitation? Comment savoir combien de RAM est occupée par l'IGP partagé?
CMCDragonkai
5

Vous pouvez essayer ceci:

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

ou ceci si la commande ci-dessus échoue:

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

Rien de nouveau - il suffit de regarder d'autres publications et d'ajouter une correspondance de modèle pour une meilleure sortie formatée

Agnius Vasiliauskas
la source
Les deux ne fonctionnent pas pour Ubuntu 14.04 Ordinateur portable Asus G551JM (double graphique, y compris GeForce GTX 860M)
Adam Ryczkowski
1
La première commande renvoie une erreurbash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski
C'est la seule solution qui a fonctionné pour moi, depuis la ligne de commande!
Panayotis
seconde commande retourne la taille exacte du bélier vidéo
Mudit Kapil
1

Il existe un programme appelé hardinfo , disponible dans le Centre logiciel , qui répertorie chaque carte vidéo (dans la liste déroulante Périphériques, dans la catégorie Périphériques PCI) et les spécifications de chaque carte, y compris la mémoire et le fournisseur / modèle.

Nathan Dyer
la source
1
Merci Nathan, mais hardinfo n’est qu’une interface graphique pour les informations obtenues de lshw et lspci, etc. Je me souviens que cela avait déjà été suggéré, bien que la réponse semble avoir été supprimée par l’auteur.
drgrog
Hardinfo est cool, mais ne dit pas la mémoire GPU.
Adam Ryczkowski