QEMU监控命令'info mem'和'info mtree'做什么?

时间:2013-02-27 08:47:18

标签: memory-management virtual-machine qemu

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

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

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

(qemu) info mem
00000000c0000000-00000000c009b000 000000000009b000 -rw
00000000c009b000-00000000c009d000 0000000000002000 -r-
00000000c009d000-00000000c7ffe000 0000000007f61000 -rw
00000000c87fe000-00000000c87ff000 0000000000001000 -rw
...and more...
00000000c94f6000-00000000c94f7000 0000000000001000 -rw
00000000c94f8000-00000000c94fd000 0000000000005000 -rw
00000000c9500000-00000000c98c0000 00000000003c0000 -rw
00000000ff7f5000-00000000ff7f7000 0000000000002000 -rw
00000000ffffa000-00000000ffffc000 0000000000002000 -rw

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

info mtree命令的类似情况。

1 个答案:

答案 0 :(得分:6)

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 list讨论了添加它的原始补丁的功能以及随着时间推移对该功能进行的一些improvements

info mem

如您所述,此命令显示活动的虚拟内存映射。它不适用于特定进程,而是运行命令时的当前页表。 This page提供了有关输出格式的更多信息。

要获取进程级别信息,您需要在Linux操作系统内部执行某些操作,因为Qemu只知道MMU-level information