memory-management - QEMU 监控命令 'info mem' 和 'info mtree' 有什么作用?

标签 memory-management virtual-machine qemu

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

但是info mem呢?和 info 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类似的情况命令。

最佳答案

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 .

关于memory-management - QEMU 监控命令 'info mem' 和 'info mtree' 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107651/

相关文章:

objective-c - 如果在 Objective-c 中作为参数传递,引用是否仍然很弱?

memory-management - 了解 WoW64 下如何管理内存

amazon-web-services - AWS Lambda 函数卡住时会发生什么情况

azure - Microsoft Azure VM IaaS 还是 PaaS?

c - 内存布局黑客

memory-management - GPU 访问系统 RAM

virtual-machine - 如何在没有镜像的情况下编译 Pharo VM?

x86-64 - QEMU/KVM 缺少 CPU 功能标志(kvm 不通过?)

sockets - 如何路由QEMU内部的TCP端口/套接字?

模拟器上的 Android 4.3