ton*_*nyo 6 memory-management qemu virtual-machine
我正在尝试了解QEMU内存管理(使用i386 guest,没有KVM).QEMU监视器允许列出CPU寄存器info(info registers),USB设备(info usb),网络(info network)等.
但那命令info mem和info 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命令类似的情况.
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>
Run Code Online (Sandbox Code Playgroud)
在Qemu中-devel的名单有该添加它,以及一些原来块的特征的讨论改进,随着时间的功能作出.
info mem如您所述,此命令显示活动的虚拟内存映射.它不适用于特定进程,而是运行命令时的当前页表. 此页面提供了有关输出格式的更多信息.
要获取进程级别信息,您需要在您正在模拟的Linux OS中执行某些操作,因为Qemu只知道MMU级别的信息.