7

我正在尝试了解 QEMU 内存管理(使用 i386 来宾,没有 KVM)。QEMU 监视器允许列出 CPU 寄存器信息 ( info registers)、USB 设备 ( info usb)、网络 ( info network) 等。

但是info meminfo mtree命令呢?缺乏文档,很难弄清楚这些命令的作用。

例如,我从一些 linux ISO 启动 QEMU,并给它 128MB 的 RAM。info mem给出输出:

(qemu) 信息内存
00000000c0000000-00000000c009b000 000000000009b000 -rw
00000000c009b000-00000000c009d000 0000000000002000 -r-
00000000c009d000-00000000c7ffe000 0000000007f61000 -rw
00000000c87fe000-00000000c87ff000 0000000000001000 -rw
...和更多...
00000000c94f6000-00000000c94f7000 0000000000001000-rw
00000000c94f8000-00000000c94fd000 0000000000005000-rw
00000000c9500000-00000000c98c0000 00000000003c0000-rw
00000000ff7f5000-00000000ff7f7000 0000000000002000-rw
00000000ffffa000-00000000ffffc000 0000000000002000 -rw

帮助声明可用于info mem“显示活动的虚拟内存映射”。前两列给出虚拟内存范围,第三列显示范围长度。但是这些映射到底是什么?如果是虚拟内存,那么它属于哪个进程?

info mtree命令类似的情况。

4

1 回答 1

8

info mtree

此命令显示进程的内存层次结构。在 QEmu 的提交日志中,以下条目创建了此功能的第一个版本。info mtree所做的是打印系统内存到不同设备的映射。还表示了这些设备的层次结构。

commit 314e298735903035ba2b7b0f3cf39981f4171546
Author: Blue Swirl <blauwirbel@gmail.com>
Date:   Sun Sep 11 20:22:05 2011 +0000

    memory: simple memory tree printer

    Add a monitor command 'info mtree' to show the memory hierarchy
    much like /proc/iomem in Linux.

    Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
    Signed-off-by: Avi Kivity <avi@redhat.com>

Qemu-devel 列表讨论了添加它的原始补丁的功能以及随着时间的推移对该功能所做的一些改进。

info mem

如您所述,此命令显示活动的虚拟内存映射。它不是针对特定进程,而是仅针对运行命令时 的当前页表。这个页面有更多关于输出格式的信息。

要获得进程级别的信息,您需要在您正在模拟的 Linux 操作系统中做一些事情,因为 Qemu 只知道MMU 级别的信息

于 2013-08-18T16:27:45.413 回答