如何查看视频内存大小?


61

有没有办法检查视频存储器的大小?具体来说,有没有一种可以同时适用于集成GPU和PCI / AGP图形卡?

许多集成GPU已动态分配了内存,因此该解决方案有望返回最大可用视频内存或当前分配的内存量。对于独立的NVidia或ATI卡,它显然会返回物理GPU RAM的总量。

lspci -v确实会输出内存数字,但我不认为这是视频内存。我怀疑报告的数字是某些系统内存分配,块或通道大小,但我不确定。您可以在以下测试结果中看到,在6个测试中的5个测试中,lspci是错误的:

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

因此,因为相信这是数字,所以您不接受暗示它的答案吗?
RolandiXor

5
@罗兰,也许我的措辞是错误的。对于lspci输出,我不是专家,但是正如您在测试结果链接中所看到的那样,它不提供视频内存的总大小,因此无法回答问题。
drgrog 2011年

Answers:


28

这是ATI 6370HD离散1G图形卡的dmesg的输出。“检测到的VRAM RAM = 1024M,BAR = 256M”,检查该行。

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
这是最终为我工作的那个,稍作调整只是为了过滤掉更多的dmesg:dmesg | grep VRAM
Ron E

2
Memory usable by graphics device = 2048M256M我的Intel i5集成显卡上的其他所有内容(可能是共享内存或其他东西)上的内容感到困惑时。编辑:只需阅读askubuntu.com/a/475405/178596
Wilf

15

nvidia-settings使用专有nvidia驱动程序对卡执行此操作。可能不正确,但对我的特定卡是正确的。我不知道其他任何专门查询视频驱动程序的用户空间工具。

您也可以尝试,sudo lshw -class display但我不能保证它会比lspci更准确。它还会报告内存范围,而不是数量,因此您必须做一些数学运算。

我发现grep -i memory /var/log/Xorg.0.log正确报告了系统卡上的VRAM。它并没有使用驱动程序我的笔记本电脑工作,radeon集成了Radeon移动设备。


谢谢,但是nvidia设置是特定于卡的。是的,我相信lshw报告的系统内存资源与相同lspci,只有lshw将它们报告为地址范围而不是大小。
drgrog 2011年

3
在尝试回答这个问题之前,我应该考虑去检查phoronix。您注意到,在我的系统上,我的768MB G80视频卡以lspci报告为256MB。论坛中的人们说,这实际上是PCI总线上可见的光圈,这是有道理的。进行“ dmesg | grep VGA”会在我的系统上出现相同的问题,尽管我听说它对其他人也可以正常工作。在/var/log/Xorg.0.log中正确报告了内存:“ NVIDIA(0):内存:786432 KB”。在此论坛帖子中:phoronix.com/forums/…
koanhead 2011年

1
似乎我将不得不编写自己的脚本。到目前为止,grep kB /var/log/Xorg.0.log还是grep -i mem /var/log/Xorg.0.log给我有关nvidia卡和VirtualBox VM的最准确,最可行的数据。我没有要测试的ATI卡,也没有测试集成的英特尔卡或VMware VM。
drgrog 2011年

1
fglrx:grep kByte会导致类似以下内容:Video RAM: 1048576 kByte, Type: GDDR5,仅对kB进行grepping也会显示一些VESA项目。
taneli 2011年

xserver-xorg-video-ati:grep "mem size"会导致如下所示:RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000这是我能得到的最好的结果,之后的内存大小为十六进制s:
taneli 2011年

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

我的系统输出

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

这意味着它具有256 MB专用于集成视频卡的内存。

更新:但是,请注意,如果您使用英特尔高清显卡之一。它的内存通常与系统的主RAM共享,并且它是动态的,这意味着它可以按需增加和减少。在我的系统中,我后来发现它可以增长到1.7 GB,如果您的系统具有4.0 GB的RAM,则该值似乎是标准的(我的情况)。如果您使用这样的图形卡,上面的输出将无济于事。


2
通过运行sudo dmesg | grep drm第一个答案,您也许可以找到多少-我得到了2048M,我在Wine下用过一个应用程序,它起作用了。
Wilf

1
对于与主内存共享的图形卡,该内存使用是否被诸如top或之类的东西暴露出来,或者free对于操作系统而言是不可见的?如何找出共享IGP占用了多少RAM?
CMCDragonkai '16

5

您可以尝试以下方法:

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

如果以上命令失败,则返回:

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

没什么新鲜的-只看了其他帖子并添加了模式匹配以获取更好的格式输出。


两者都不适用于Ubuntu 14.04 Asus G551JM笔记本电脑(双显卡,包括GeForce GTX
860M

1
第一条命令返回错误bash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski '16

这是从命令行对我唯一有效的解决方案!
Panayotis

第二个命令返回视频ram的确切大小
Mudit Kapil,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.