我的系统配备 8 GB RAM 和 2 GB VRAM。它运行带有内核的 Ubuntu 18.04 4.15.0-74-generic
x86_64
。
IIUC,这两类内存,除了BIOS只读内存之外,都映射到虚拟和物理地址空间。
是否有工具可以显示此映射是如何执行的?特别是,哪些范围的物理/虚拟地址位于系统 RAM 中,哪些范围位于 VRAM 中,哪些范围位于 BIOS 中。
我不知道是否lsmem
是正确的工具,因为它似乎不区分内存的类型。
编辑
关于lspci
:
$ lspci -v -s 01:00.0
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. GK107 [GeForce GTX 650]
Flags: bus master, fast devsel, latency 0, IRQ 29
Memory at ee000000 (32-bit, non-prefetchable) [size=16M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
Memory at e0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
内存总量似乎为16+256+32 = 304
MB,而这张卡应该有1024
MB。
答案1
您已经发现lsmem
:
$ lsmem
然后,lspci
将给出有关显卡内存和映射的信息。首先列出PCI总线:
$ lscpi
识别您的卡(左侧的数字)。假设它被列为 00:02.0。
$ lspci -v -s 00:02.0
对于完整的视频内存,不必映射,您可以执行以下操作:
$ glxinfo | egrep -i 'device|memory'