วิธีตรวจสอบขนาดหน่วยความจำวิดีโอ


61

มีวิธีตรวจสอบขนาดของหน่วยความจำวิดีโอหรือไม่? โดยเฉพาะมีอย่างใดอย่างหนึ่งที่ทำงานได้อย่างถูกต้องสำหรับทั้ง GPU แบบรวมและ PCI / AGP กราฟิกการ์ด?

GPU ในตัวจำนวนมากมีหน่วยความจำที่จัดสรรแบบไดนามิกดังนั้นโซลูชันหวังว่าจะส่งคืนหน่วยความจำวิดีโอสูงสุดที่มีอยู่หรือจำนวนเงินที่จัดสรรในปัจจุบัน สำหรับการ์ด NVidia หรือ ATI แบบสแตนด์อโลนมันจะคืนค่า RAM GPU ทางกายภาพทั้งหมดอย่างเห็นได้ชัด

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]

ดังนั้นเพราะคุณไม่เชื่อว่าเป็นรูปคุณไม่ยอมรับคำตอบที่แนะนำหรือไม่
RolandiXor

5
@Roland บางทีข้อความของฉันผิด ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับเอาต์พุต lspci แต่อย่างที่คุณเห็นในลิงค์ผลการทดสอบมันไม่ได้ให้ขนาดรวมของหน่วยความจำวิดีโอและด้วยเหตุนี้จึงไม่ตอบคำถาม
drgrog

คำตอบ:


28

นี่คือ o / p ของ dmesg ที่มี ATI 6370HD การ์ดจอแยก 1G "ตรวจพบ 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 = 2048Mเมื่อทุกอย่างพูดถึง256Mกราฟิกแบบบูรณาการ intel i5 ของฉัน (อาจเป็นหน่วยความจำที่ใช้ร่วมกันหรือบางสิ่งบางอย่าง) แก้ไข: เพียงอ่านaskubuntu.com/a/475405/178596
วิลฟ์

15

การตั้งค่า nvidia ใช้สำหรับการ์ดที่ใช้nvidiaไดรเวอร์ที่เป็นกรรมสิทธิ์ อาจไม่ถูกต้อง แต่ถูกต้องสำหรับการ์ดของฉันโดยเฉพาะ ฉันไม่รู้จักเครื่องมือ userspace อื่น ๆ ที่สอบถามไดรเวอร์วิดีโอโดยเฉพาะ

คุณสามารถลองได้sudo lshw -class displayแต่ฉันไม่สามารถรับประกันได้ว่ามันจะแม่นยำกว่า lspci นอกจากนี้ยังรายงานช่วงหน่วยความจำไม่ใช่จำนวนดังนั้นคุณต้องทำคณิตศาสตร์

ฉันพบว่าgrep -i memory /var/log/Xorg.0.logรายงาน VRAM บนการ์ดของระบบของฉันถูกต้อง มันใช้งานไม่ได้กับแล็ปท็อปของฉันที่ใช้ไดรเวอร์radeonพร้อมอุปกรณ์ Radeon Mobility ในตัว


ขอบคุณ แต่การตั้งค่า nvidia เป็นแบบเฉพาะการ์ด และใช่ฉันเชื่อว่าlshwรายงานทรัพยากรหน่วยความจำระบบเดียวกับlspcilshw เพียงรายงานพวกเขาเป็นช่วงที่อยู่แทนขนาด
drgrog

3
ฉันควรจะไปตรวจสอบ phoronix ก่อนลองตอบคำถามนี้ ในระบบของฉันการ์ดวิดีโอ G80 ขนาด 768MB ของฉันถูกรายงานว่าเป็น 256MB ใน lspci ตามที่คุณทราบ ผู้คนในฟอรัมพูดว่านี่เป็นรูรับแสงซึ่งมองเห็นได้ผ่านบัส PCI ซึ่งเหมาะสม การทำ 'dmesg | grep VGA' ทำให้เกิดปัญหาเดียวกันในระบบของฉันแม้ว่าฉันจะได้ยินมาว่ามันทำงานได้อย่างถูกต้องสำหรับผู้อื่น หน่วยความจำมีการรายงานอย่างถูกต้องใน /var/log/Xorg.0.log: 'NVIDIA (0): หน่วยความจำ: 786432 kBytes' จากโพสต์ฟอรัมนี้: phoronix.com/forums/… !
koanhead

1
ดูเหมือนว่าฉันจะต้องเขียนสคริปต์ของตัวเอง จนถึงตอนนี้grep kB /var/log/Xorg.0.logหรือgrep -i mem /var/log/Xorg.0.logให้ข้อมูลที่ถูกต้องและใช้งานได้มากที่สุดสำหรับการ์ด nvidia และ VirtualBox VMs ฉันไม่มีการ์ด ATI ใด ๆ ที่จะทำการทดสอบและยังไม่ได้ทดสอบการทำงานกับการ์ด intel หรือ VMware VM ของฉัน
drgrog

1
fglrx: grep kByteจะส่งผลดังนี้: การVideo RAM: 1048576 kByte, Type: GDDR5grepping สำหรับ kB จะแสดงรายการ VESA บางรายการด้วย
taneli

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 MB สำหรับการ์ดแสดงผลในตัวโดยเฉพาะ

อัปเดต : อย่างไรก็ตามโปรดระวังหากคุณใช้กราฟิกการ์ด Intel HD การ์ดใดการ์ดหนึ่ง หน่วยความจำมักจะใช้ร่วมกับ RAM หลักของระบบและเป็นแบบไดนามิกซึ่งหมายความว่ามันจะเพิ่มขึ้นและลดลงตามความต้องการ ในระบบของฉันฉันค้นพบในภายหลังว่ามันสามารถเติบโตได้ถึง 1,7 GB และค่านี้ดูเหมือนจะเป็นมาตรฐานหากคุณมีระบบที่มี RAM 4,0 GB (กรณีของฉัน) หากคุณใช้กราฟิกการ์ดเช่นนี้เอาต์พุตด้านบนจะไม่ช่วยอะไรมาก


2
คุณอาจจะสามารถค้นหาได้ว่าทำงานได้ดีแค่ไหนsudo dmesg | grep drmในคำตอบแรก - ฉันได้ 2048M ซึ่งฉันใช้สำหรับแอปภายใต้ Wine และใช้งานได้
วิลฟ์

1
สำหรับกราฟิกการ์ดที่แชร์กับหน่วยความจำหลักหน่วยความจำนี้ถูกใช้โดยสิ่งต่าง ๆ เช่นtopหรือfreeหรือมองไม่เห็นระบบปฏิบัติการ? เราจะรู้ได้อย่างไรว่าหน่วยความจำ IGP ที่แชร์นั้นใช้ RAM เท่าใด
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)
Adam Ryczkowski

1
คำสั่งแรกส่งคืนข้อผิดพลาดbash: / 1024: syntax error: operand expected (error token is "/ 1024")
Adam Ryczkowski

นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉันจากบรรทัดคำสั่ง!
Panayotis

คำสั่ง second ส่งคืนขนาดวิดีโอ ram ที่แน่นอน
Mudit Kapil

1

มีโปรแกรมที่เรียกว่าhardinfoซึ่งมีอยู่ใน Software Centerซึ่งจะแสดงรายการการ์ดวิดีโอแต่ละอัน (ภายใต้เมนูแบบเลื่อนลงอุปกรณ์ในหมวดหมู่อุปกรณ์ PCI) และรายละเอียดสำหรับการ์ดแต่ละใบรวมถึงหน่วยความจำและผู้ขาย / รุ่น


1
ขอบคุณนาธาน แต่ hardinfo เป็นเพียงส่วนหน้าของ gui สำหรับข้อมูลที่ได้จาก lshw และ lspci เป็นต้นฉันจำได้ว่าสิ่งนี้แนะนำมาก่อนแม้ว่าดูเหมือนว่าคำตอบจะถูกลบโดยผู้เขียน
drgrog

hardinfo เจ๋ง แต่ไม่บอกหน่วยความจำ GPU
Adam Ryczkowski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.