Wie überprüfe ich die Größe des Videospeichers?

61

Gibt es eine Möglichkeit, die Größe des Videospeichers zu überprüfen? Gibt es eine, die sowohl für integrierte GPUs als auch für PCI / AGP-Grafikkarten genau funktioniert?

Viele integrierte GPUs verfügen über dynamisch zugewiesenen Speicher, sodass die Lösung hoffentlich entweder den maximal verfügbaren Videospeicher oder die aktuell zugewiesene Menge zurückgibt. Bei eigenständigen NVidia- oder ATI-Karten wird offensichtlich die Gesamtmenge des physischen GPU-Arbeitsspeichers zurückgegeben.

lspci -vgibt Speicherzahlen aus, aber ich glaube nicht, dass es sich um den Videospeicher handelt. Ich vermute, dass es sich bei der angegebenen Zahl um eine bestimmte Systemspeicherzuordnung oder Block- oder Kanalgröße handelt, aber ich weiß es nicht genau. Sie können in diesen Testergebnissen sehen, dass lspci in 5 der 6 Tests falsch war:

** 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
quelle
Also, weil Sie nicht glauben , dass es die Zahl ist, akzeptieren Sie keine Antworten, die darauf hindeuten?
RolandiXor
5
@ Roland, vielleicht ist mein Wortlaut falsch. Ich bin kein Experte in Bezug auf die Ausgabe von lspci, aber wie Sie im Link mit den Testergebnissen sehen können, gibt er nicht die Gesamtgröße des Videospeichers an und beantwortet daher die Frage nicht.
Drgrog
Mögliche Kopie von Wie finde ich heraus, wie viel RAM mein Computer hat?
Waldir Leoncio

Antworten:

28

Dies ist das O / P von Dmesg mit einer diskreten 1G-Grafikkarte ATI 6370HD. "Erkannter VRAM RAM = 1024M, BAR = 256M", überprüfen Sie diese Zeile.

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
quelle
4
Dies ist derjenige, der für mich gearbeitet hat, leichte Optimierungen, nur um mehr aus dmesg herauszufiltern:dmesg | grep VRAM
Ron E
2
verwirrt, Memory usable by graphics device = 2048Mwenn alles andere 256Mauf meinem Intel i5 integrierte Grafik sagt (möglicherweise Shared Memory oder so etwas). BEARBEITEN
Wilf
15

nvidia-settings erledigt dies für Karten, die den proprietären nvidiaTreiber verwenden. Es kann ungenau sein, aber es ist für meine bestimmte Karte korrekt. Ich kenne kein anderes Userspace-Tool, das speziell den Grafiktreiber abfragt.

Sie können es auch versuchen, sudo lshw -class displayaber ich kann nicht garantieren, dass es genauer ist als lspci. Außerdem werden Speicherbereiche und nicht Beträge gemeldet, sodass Sie einige Berechnungen durchführen müssen.

Ich finde, dass grep -i memory /var/log/Xorg.0.logder VRAM auf der Karte meines Systems korrekt gemeldet wird. Bei meinem Laptop mit Treiber und integriertem Radeon Mobility-Gerät funktioniert dies nichtradeon .

koanhead
quelle
Danke, aber die nvidia-Einstellungen sind kartenspezifisch. Und ja, ich glaube, lshwmeldet die gleichen Systemspeicherressourcen wie lspci, nur lshw meldet sie als Adressbereiche anstelle von Größen.
Drgrog
3
Ich hätte darüber nachdenken sollen, Phoronix zu überprüfen, bevor ich versuche, dies zu beantworten. Auf meinem System wird meine 768 MB G80-Grafikkarte als 256 MB in lspci gemeldet, wie Sie bemerken. Die Leute im Forum haben gesagt, dass dies tatsächlich die Öffnung ist, die über den PCI-Bus sichtbar ist, was Sinn macht. Wenn ich ein 'dmesg | grep VGA' mache, tritt auf meinem System dasselbe Problem auf, obwohl ich gehört habe, dass es bei anderen richtig funktioniert. Der Speicher wird in /var/log/Xorg.0.log korrekt gemeldet: 'NVIDIA (0): Memory: 786432 kBytes'. Von diesem Forumsbeitrag: phoronix.com/forums/… !
Koanhead
1
Es scheint, als müsste ich mein eigenes Drehbuch schreiben. Soweit grep kB /var/log/Xorg.0.logoder grep -i mem /var/log/Xorg.0.loggeben Sie mir die genauesten und funktionsfähigsten Daten für NVIDIA-Karten und VirtualBox-VMs. Ich habe keine ATI-Karten zum Testen und bin auch nicht dazu gekommen, meine integrierten Intel-Karten oder VMware-VMs zu testen.
Drgrog
1
fglrx: grep kByteergibt Video RAM: 1048576 kByte, Type: GDDR5ungefähr Folgendes : Wenn Sie nur für kB grasen, werden auch einige VESA-Elemente angezeigt.
Taneli
xserver-xorg-video-ati: grep "mem size"wird ungefähr so aussehen: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000was ist das Beste, was ich daraus machen kann, wo die Speichergröße in hex nachher ists:
taneli
13
LC_ALL=C lspci -v | grep -EA10 "3D|VGA" | grep 'prefetchable' 

Mein System gibt aus

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

Das heißt, es verfügt über 256 MB Speicher für die integrierte Grafikkarte.

Update : Achten Sie jedoch darauf, dass Sie eine der Intel HD-Grafikkarten verwenden. Sein Speicher wird normalerweise mit dem Hauptspeicher des Systems geteilt und ist dynamisch, was bedeutet, dass er bei Bedarf erhöht und verringert wird. In meinem System stellte ich später fest, dass es bis zu 1,7 GB groß werden kann, und dieser Wert scheint Standard zu sein, wenn Sie ein System mit 4,0 GB RAM haben (mein Fall). Wenn Sie eine solche Grafikkarte verwenden, ist die obige Ausgabe keine große Hilfe.

thiagowfx
quelle
2
Sie können möglicherweise herausfinden, wie viel ausgeführt wird, sudo dmesg | grep drmwie in der ersten Antwort angegeben. Ich habe 2048 Millionen, die ich für eine App unter Wine verwendet habe, und es hat funktioniert.
Wilf
1
Wird dieser Speicher bei Grafikkarten, die mit dem Hauptspeicher gemeinsam genutzt werden, von Dingen wie topoder freefür das Betriebssystem unsichtbar genutzt? Wie erfährt man, wie viel RAM der Shared IGP belegt?
CMCDragonkai
5

Sie können dies versuchen:

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

oder dies, wenn der obige Befehl fehlschlägt:

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

Nichts Neues - ich habe mir nur andere Posts angesehen und eine Mustererkennung hinzugefügt, um eine besser formatierte Ausgabe zu erhalten.

Agnius Vasiliauskas
quelle
Beides funktioniert nicht für Ubuntu 14.04 Asus G551JM Notebook (Dual Graphics, inkl. GeForce GTX 860M)
Adam Ryczkowski
1
Der erste Befehl gibt einen Fehler zurückbash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski
Dies ist die einzige Lösung, die für mich von der Kommandozeile aus funktioniert hat!
Panayotis
Der zweite Befehl gibt die genaue Größe des Video-RAM zurück
Mudit Kapil
1

Es gibt ein Programm namens Hard , in dem Software - Center , die jede Grafikkarte auflisten werden (unter den Geräten Drop-down in der PCI - Geräte - Kategorie) und die Spezifikationen für jede Karte, einschließlich den Speicher und Verkäufer / Modells.

Nathan Dyer
quelle
1
Danke Nathan, aber hardinfo ist nur ein GUI-Frontend für die Informationen, die von lshw und lspci usw. erhalten wurden. Ich erinnere mich, dass dies bereits vorgeschlagen wurde, obwohl die Antwort anscheinend vom Autor entfernt wurde.
Drgrog
hardinfo ist cool, sagt aber nichts über den GPU-Speicher.
Adam Ryczkowski