答案1
最大内存是客户机启动时使用的内存 - 但如果当前记忆上限为较低值。
一些例子:
- 最大内存 = 当前内存 = 4G:客户机启动时附加了 4G 内存,并且可以使用所有内存(减去模拟平台本身映射/排除的一些 RAM)
- 最大内存 = 8G,当前内存 = 4G:客户机启动时附加了 8G 内存,但它发现 4G(max-cur)实际上由内核保留(通过 virt-balloon 驱动程序),因此最多只能使用 4G(cur)。
这种预订是为了避免热添加记忆,这比启动更困难更多的记忆和索回/标记为未使用记忆本身的某些部分。
qemu-system-x86_64
从任务管理器(或ps
或)观察进程时top
,您只会看到实际使用的内存由客户机分配(加上模拟器本身所需的一些内存):例如,启动一个基本的 Linux 内核 + 用户空间大约需要 256M,如果客户机内部没有运行任何进程,您将看到模拟器进程本身的内存利用率非常低(即使客户机分配了 4G 的当前/最大内存)。换句话说,Linux 内核分配是一种写时复制操作:它不是一次性完成的,而是基于内核/用户空间的实际需求。
警告:Windows 客户端将所有内存清零在启动时,有效地强制完成主机端内存分配(最多当前记忆) 在客户机启动时。