Como verificar o tamanho da memória de vídeo?

61

Existe uma maneira de verificar o tamanho da memória de vídeo? Especificamente, existe alguém que funcione com precisão tanto para GPUs integradas quanto para placas de vídeo PCI / AGP?

Muitas GPUs integradas possuem memória alocada dinamicamente, portanto, esperamos que a solução retorne a memória de vídeo máxima disponível ou a quantidade alocada no momento. Para placas NVidia ou ATI independentes, ele obviamente retornaria a quantidade total de RAM física da GPU.

lspci -vproduz números de memória, mas não acredito que seja a memória de vídeo. Suspeito que a figura relatada seja alguma alocação de memória do sistema ou tamanho de bloco ou canal, mas não tenho certeza. Você pode ver nesses resultados de teste que lspci estava errado em 5 dos 6 testes:

** 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
fonte
Então, porque você não acredita que seja esse o valor, não aceita respostas que o sugerem?
RolandiXor
5
@Roland, talvez minha redação esteja errada. Eu não sou especialista em saída lspci, mas como você pode ver no link dos resultados do teste, ele não fornece o tamanho total da memória de vídeo e, portanto, não responde à pergunta.
drgrog
Possível duplicata de Como encontrar quanta RAM meu computador possui?
Waldir Leoncio

Respostas:

28

Este é o padrão do dmesg com uma placa de vídeo 1G discreta ATI 6370HD. "VRAM RAM detectada = 1024M, BAR = 256M", verifique esta linha.

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
fonte
4
Este é o que acabou trabalhando para mim, pequenos ajustes apenas para filtrar mais dmesg:dmesg | grep VRAM
Ron E
2
confuso Memory usable by graphics device = 2048Mquando tudo o mais diz 256Mnos meus gráficos integrados intel i5 (pode ser memória compartilhada ou algo assim). Edição: basta ler askubuntu.com/a/475405/178596
Wilf
15

A nvidia-settings faz isso para placas usando o nvidiadriver proprietário . Pode ser impreciso, mas está correto para o meu cartão em particular. Não conheço nenhuma outra ferramenta de espaço de usuário que consulte especificamente o driver de vídeo.

Você também pode tentar, sudo lshw -class displaymas não posso garantir que seja mais preciso que o lspci. Além disso, ele informa intervalos de memória, não quantidades, então você teria que fazer algumas contas.

Acho que grep -i memory /var/log/Xorg.0.loginforma corretamente a VRAM na placa do meu sistema. Ele não funciona no meu laptop usando o driver radeoncom o dispositivo Radeon Mobility integrado.

koanhead
fonte
Obrigado, mas a nvidia-settings é específica da placa. E sim, acredito que lshwreporta os mesmos recursos de memória do sistema lspci, apenas o lshw os reporta como intervalos de endereços em vez de tamanhos.
drgrog
3
Eu deveria ter pensado em verificar o phoronix antes de tentar responder a isso. No meu sistema, minha placa de vídeo de 768 MB G80 é relatada como 256 MB em lspci, como você observa. O pessoal do fórum disse que essa é realmente a abertura visível no barramento PCI, o que faz sentido. Fazer um 'dmesg | grep VGA' dá o mesmo problema no meu sistema, embora eu tenha ouvido falar que funciona corretamente para outras pessoas. A memória é relatada corretamente em /var/log/Xorg.0.log: 'NVIDIA (0): Memória: 786432 kBytes'. Nesta publicação do fórum: phoronix.com/forums/… !
koanhead 6/06/11
1
Parece que vou ter que escrever meu próprio script. Até o momento grep kB /var/log/Xorg.0.logou grep -i mem /var/log/Xorg.0.logforneça os dados mais precisos e viáveis ​​para placas nvidia e VMs do VirtualBox. Não tenho placas ATI para testar e não testei minhas placas intel integradas ou VMs VMware.
drgrog
1
fglrx: grep kByteresultará em algo como isto Video RAM: 1048576 kByte, Type: GDDR5:, grepping por apenas kB também mostrará alguns itens VESA.
Taneli
xserver-xorg-video-ati: grep "mem size"vai resultar em algo parecido com isto: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000qual é o melhor que eu poderia sair dela, onde o tamanho de memória é em hexadecimal depoiss:
Taneli
13
LC_ALL=C lspci -v | grep -EA10 "3D|VGA" | grep 'prefetchable' 

Meu sistema gera

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

O que significa que ele possui 256 MB de memória dedicada à placa de vídeo integrada.

Atualização : no entanto, tenha cuidado se você usar uma das placas gráficas Intel HD. Sua memória é geralmente compartilhada com a RAM principal do sistema e é dinâmica, o que significa que aumenta e diminui sob demanda. Mais tarde, no meu sistema, descobri que ele pode crescer até 1,7 GB, e esse valor parece ser padrão se você tiver um sistema com 4,0 GB de RAM (meu caso). Se você usar uma placa gráfica como essa, a saída acima não será de grande ajuda.

thiagowfx
fonte
2
Você pode descobrir quanto executando, sudo dmesg | grep drmcomo na primeira resposta - eu tenho 2048M, que usei para um aplicativo no Wine e funcionou.
Wilf
1
Para placas gráficas que compartilham com a memória principal, é esse uso de memória exposta por coisas como topou freeou é invisível para o sistema operacional? Como descobrir a quantidade de RAM ocupada pelo IGP compartilhado?
precisa saber é o seguinte
5

Você pode tentar isso:

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

ou isto se o comando acima falhar:

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

Nada de novo - basta olhar para outras postagens e adicionar correspondência de padrões para obter uma saída melhor formatada.

Agnius Vasiliauskas
fonte
Ambos não funciona para Ubuntu 14.04 Asus G551JM notebook (gráficos duplos, incl GeForce GTX 860m.)
Adam Ryczkowski
1
O primeiro comando retorna errobash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski 3/11
Esta é a única solução que funcionou para mim, na linha de comando!
Panayotis
segundo comando retorna o tamanho exato da ram de vídeo
Mudit Kapil 05/10
1

Existe um programa chamado hardinfo , disponível no Centro de Software , que lista cada placa de vídeo (no menu suspenso Dispositivos, na categoria Dispositivos PCI) e as especificações de cada placa, incluindo a memória e o fornecedor / modelo.

Nathan Dyer
fonte
1
Obrigado Nathan, mas o hardinfo é apenas uma interface gráfica para as informações obtidas do lshw e lspci etc. Lembro que isso foi sugerido antes, embora pareça que a resposta foi removida pelo autor.
drgrog
hardinfo é legal, mas não informa a memória da GPU.
Adam Ryczkowski