Как проверить размер видеопамяти?

61

Есть ли способ проверить размер видеопамяти? В частности, есть ли такой, который точно работает как для встроенных графических процессоров, так и для видеокарт PCI / AGP?

Многие встроенные графические процессоры имеют динамически распределенную память, поэтому мы надеемся, что решение вернет либо максимально доступную видеопамять, либо выделенное в настоящее время количество. Для автономных карт NVidia или ATI он, очевидно, вернул бы общий объем физической памяти графического процессора.

lspci -vвыводит цифры памяти, но я не верю, что это видеопамять. Я подозреваю, что указанная цифра является некоторым распределением системной памяти или размером блока или канала, но я точно не знаю. Вы можете видеть в этих результатах теста, что lspci был неправильным в 5 из 6 тестов:

** 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
источник
Так что, поскольку вы не верите, что это цифра, вы не принимаете ответы, которые предлагают это?
RolandiXor
5
@ Роланд, возможно, моя формулировка неверна. Я не эксперт по выводу lspci, но, как видно из ссылки на результаты теста, она не дает общий размер видеопамяти и, следовательно, не отвечает на вопрос.
drgrog
Возможный дубликат Как узнать, сколько ОЗУ имеет мой компьютер?
Вальдир Леонсио

Ответы:

28

Это операционная система dmesg с дискретной видеокартой ATI 6370HD 1G. «Обнаружено RAM 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 = 2048Mкогда все остальное говорит 256Mо моей интегрированной графике Intel i5 (может быть общая память или что-то). РЕДАКТИРОВАТЬ: просто прочитайте askubuntu.com/a/475405/178596
Уилф
15

nvidia-settings делает это для карт, использующих собственный nvidiaдрайвер. Это может быть неточным, но это правильно для моей конкретной карты. Я не знаю ни одного другого инструмента пользовательского пространства, который специально запрашивает видеодрайвер.

Вы также можете попробовать, sudo lshw -class displayно я не могу гарантировать, что это будет точнее, чем lspci. Кроме того, он сообщает диапазоны памяти, а не количество, так что вам придется немного посчитать.

Я считаю, что grep -i memory /var/log/Xorg.0.logправильно сообщает VRAM на карте моей системы. Он не работает для моего ноутбука, использующего драйвер radeonсо встроенным устройством Radeon Mobility.

koanhead
источник
Спасибо, но nvidia-settings зависит от карты. И да, я считаю, что lshwсообщает о тех же ресурсах системной памяти lspci, что и только lshw сообщает о них как об адресных диапазонах, а не о размерах.
drgrog
3
Я должен был подумать проверить phoronix, прежде чем пытаться ответить на это. В моей системе, как вы заметили, моя видеокарта G80 емкостью 768 МБ имеет размер 256 МБ. Люди на форуме говорят, что на самом деле это диафрагма, которая видна через шину PCI, что имеет смысл. Выполнение dmesg | grep VGA приводит к той же проблеме в моей системе, хотя я слышал, что она работает правильно для других. Память сообщается правильно в /var/log/Xorg.0.log: «NVIDIA (0): Память: 786432 кБайт». Из этого сообщения на форуме: phoronix.com/forums/… !
koanhead
1
Кажется, мне придется написать собственный сценарий. Пока что grep kB /var/log/Xorg.0.logили grep -i mem /var/log/Xorg.0.logдайте мне самые точные и работоспособные данные для карт NVIDIA и виртуальных машин VirtualBox. У меня нет карт ATI для тестирования, и я не удосужился протестировать свои интегрированные карты Intel или VMware VM.
drgrog
1
fglrx: grep kByteприведет к чему-то вроде этого: при Video RAM: 1048576 kByte, Type: GDDR5подсчете только килобайта также будут показаны некоторые элементы VESA.
танели
xserver-xorg-video-ati: grep "mem size"приведет к чему-то вроде этого: RADEON(0): mem size init: gart size :1fdff000 vram size: s:40000000 visible:f6f6000это лучшее, что я мог из этого извлечь, где объем памяти в шестнадцатеричном виде послеs:
taneli
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 МБ памяти, выделенной для встроенной видеокарты.

Обновление : однако, будьте осторожны, если вы используете одну из графических карт Intel HD. Его память обычно используется совместно с основной оперативной памятью системы, и она является динамической, что означает, что она увеличивается и уменьшается по требованию. Позже в моей системе я обнаружил, что он может увеличиться до 1,7 ГБ, и это значение кажется стандартным, если у вас есть система с 4,0 ГБ ОЗУ (в моем случае). Если вы используете такую ​​видеокарту, вышеприведенный вывод не очень поможет.

thiagowfx
источник
2
Вы могли бы узнать, сколько, запустив, sudo dmesg | grep drmкак в первом ответе - я получил 2048M, который я использовал для приложения под Wine, и он работал.
Уилф
1
Для графических карт, которые разделяют с основной памятью, это использование памяти подвергается вещам как topили, freeили это невидимо для ОС? Как узнать, сколько оперативной памяти занято общим IGP?
CMCDragonkai
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")
Адам Рычковски
Это единственное решение, которое сработало для меня из командной строки!
Панайотис
Вторая команда возвращает точный размер видео-барана
Мудит Капил
1

В Центре программного обеспечения имеется программа hardinfo , в которой перечисляются все видеокарты (в раскрывающемся списке «Устройства» в категории «Устройства PCI») и спецификации для каждой платы, включая память и производителя / модель.

Натан Дайер
источник
1
Спасибо Натану, но hardinfo - это просто интерфейс для информации, полученной из lshw, lspci и т. Д. Я помню, что это предлагалось ранее, хотя, кажется, ответ был удален автором.
drgrog
Hardinfo это круто, но не говорит памяти GPU.
Адам Рычковски