我正在尝试了解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命令类似的情况.
我开发了一个 Python/Django 应用程序,它从一个虚拟环境(由 创建virtualenv)运行。
当创建虚拟环境,全球版本的pip默认情况下复制到新创建的环境中,这可能是非常过时的(例如,版本1.5.4从python-pip包在Ubuntu 14.04)。
为了避免手动pip升级,将pip版本固定在requirements.txt文件中听起来是个好主意,例如添加以下行:
pip==8.1.2
通过更改需求文件中的行,指定pip版本还允许pip在所有托管应用程序环境(本地、开发、生产)中升级。
这听起来是个好习惯吗?这种方法有什么问题吗?