Come controllare la dimensione della memoria video?


61

C'è un modo per controllare le dimensioni della memoria video? In particolare, ce n'è uno che funziona in modo accurato sia per le GPU integrate sia per le schede grafiche PCI / AGP?

Molte GPU integrate hanno allocato dinamicamente la memoria, quindi si spera che la soluzione restituisca la massima memoria video disponibile o la quantità attualmente allocata. Per le schede NVidia o ATI autonome restituirebbe ovviamente la quantità totale di RAM GPU fisica.

lspci -vproduce cifre di memoria, ma non credo che sia la memoria video. Sospetto che la cifra riportata sia un'allocazione della memoria di sistema o una dimensione di blocco o canale, ma non lo so per certo. Puoi vedere in questi risultati che lspci ha sbagliato in 5 dei 6 test:

** 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]

Quindi, perché tu non credi che è la figura, non si accetta risposte che suggeriscono esso?
RolandiXor

5
@Roland, forse la mia formulazione è sbagliata. Non sono un esperto dell'output di lspci, ma come puoi vedere nel link dei risultati del test, non fornisce la dimensione totale della memoria video e quindi non risponde alla domanda.
drgrog,

Risposte:


28

Questo è l'o / p di dmesg con una scheda grafica 1G discreta ATI 6370HD. "Rilevato VRAM RAM = 1024M, BAR = 256M", controlla questa linea.

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.

4
Questo è quello che ha finito per funzionare per me, lieve modifica solo per filtrare più di dmesg:dmesg | grep VRAM
Ron E

2
confuso da Memory usable by graphics device = 2048Mquando tutto il resto dice 256Msulla mia grafica integrata Intel i5 (potrebbe essere memoria condivisa o qualcosa del genere). EDIT: basta leggere askubuntu.com/a/475405/178596
Wilf

15

nvidia-settings lo fa per le carte che usano il nvidiadriver proprietario . Potrebbe non essere preciso, ma è corretto per la mia carta specifica. Non conosco nessun altro strumento per lo spazio utente che interroga specificamente il driver video.

Puoi anche provare, sudo lshw -class displayma non posso garantire che sarà più preciso di lspci. Inoltre riporta intervalli di memoria, non importi, quindi dovresti fare un po 'di matematica.

Trovo che grep -i memory /var/log/Xorg.0.logriporta correttamente la VRAM sulla scheda del mio sistema. Esso non funziona per il mio computer portatile utilizzando il driver radeondi dispositivo integrato Radeon Mobility.


Grazie, ma le impostazioni di nvidia sono specifiche della scheda. E sì, credo che lshwriporti le stesse risorse di memoria di sistema di lspci, solo lshw le riporta come intervalli di indirizzi anziché dimensioni.
drgrog,

3
Avrei dovuto pensare di controllare Phoronix prima di provare a rispondere. Sul mio sistema la mia scheda video G80 da 768 MB è riportata come 256 MB in lspci, come si nota. Le persone nel forum hanno detto che questa è in realtà l'apertura che è visibile sul bus PCI, il che ha senso. Fare un 'dmesg | grep VGA' dà lo stesso problema sul mio sistema, anche se ho sentito che funziona correttamente per gli altri. La memoria è riportata correttamente in /var/log/Xorg.0.log: 'NVIDIA (0): memoria: 786432 kBytes'. Da questo post del forum: phoronix.com/forums/… !
koanhead,

1
Sembra che dovrò scrivere la mia sceneggiatura. Finora grep kB /var/log/Xorg.0.logo grep -i mem /var/log/Xorg.0.logdammi i dati più precisi e praticabili per le schede nvidia e le macchine virtuali VirtualBox. Non ho alcuna scheda ATI da testare e non ho provato le mie schede Intel integrate o VM VMware.
drgrog,

1
fglrx: grep kByteprovocherà qualcosa del genere Video RAM: 1048576 kByte, Type: GDDR5:, il grepping per solo kB mostrerà anche alcuni oggetti VESA.
taneli,

xserver-xorg-video-ati: grep "mem size"risulterà in qualcosa del genere: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000qual è il migliore che potrei uscirne, dove la dimensione della memoria è in esadecimale dopos:
taneli,

13
LC_ALL=C lspci -v | grep -EA10 "3D|VGA" | grep 'prefetchable' 

Il mio sistema emette

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

Ciò significa che ha 256 MB di memoria dedicata alla scheda video integrata.

Aggiornamento : attenzione, tuttavia, se si utilizza una delle schede grafiche Intel HD. La sua memoria è generalmente condivisa con la RAM principale del sistema ed è dinamica, il che significa che aumenta e diminuisce su richiesta. Nel mio sistema, in seguito ho scoperto che può crescere fino a 1,7 GB e questo valore sembra essere standard se si dispone di un sistema con 4,0 GB di RAM (il mio caso). Se si utilizza una scheda grafica come questa, l'output di cui sopra non sarà di grande aiuto.


2
Potresti essere in grado di trovare quanto eseguendo sudo dmesg | grep drmcome nella prima risposta: ho ottenuto 2048M, che ho usato per un'app in Wine e ha funzionato.
Wilf,

1
Per le schede grafiche che condividono con la memoria principale, questo uso di memoria è esposto da cose come topo freeo è invisibile al sistema operativo? Come si fa a scoprire quanta RAM viene assorbita dall'IGP condiviso?
CMCDragonkai,

5

Puoi provare questo:

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

o questo se il comando sopra fallisce:

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

Niente di nuovo: ho appena guardato altri post e aggiunto la corrispondenza dei pattern per un output formattato meglio.


Entrambi non funzionano per il notebook Ubuntu 14.04 Asus G551JM (doppia grafica, incl. GeForce GTX 860M)
Adam Ryczkowski,

1
Il primo comando restituisce errorebash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski il

Questa è l'unica soluzione che ha funzionato per me, dalla riga di comando!
Panayotis,

il secondo comando restituisce la dimensione esatta della ram video
Mudit Kapil,

1

Esiste un programma chiamato hardinfo , disponibile nel Software Center , che elencherà ogni scheda video (sotto il menu a discesa Dispositivi, nella categoria Dispositivi PCI) e le specifiche per ogni scheda, inclusi la memoria e il fornitore / modello.


1
Grazie Nathan, ma hardinfo è solo una interfaccia grafica per le informazioni ottenute da lshw, lspci ecc. Ricordo che questo è stato suggerito prima, anche se sembra che la risposta sia stata rimossa dall'autore.
drgrog,

hardinfo è interessante, ma non dice memoria GPU.
Adam Ryczkowski,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.