为什么从存储库下载和从源代码编译时 qemu 性能不同?
Why does qemu performance differ when downloaded from repository and compiled from source?
我正在对 QEMU (qemu-system-i386) 在完全仿真模式(使用 TCG)下的性能进行一些测试,并避免使用 KVM。我已经安装了 debian 存储库中可用的版本(QEMU 模拟器版本 1.1.2 (Debian 1.1.2+dfsg-6a+deb7u6)),并下载并编译了 Qemu 2.3.0、Qemu 1.0.0、Qemu 1.1 的源代码。 2,以及 Debian 1.1.2+dfsg-6a+deb7u6 的源代码。
在所有情况下,我都按以下方式配置项目:
./configure --enable-sdl --target-list=i386-softmmu --disable-kvm --enable-tcg-interpreter
从存储库安装的版本比任何手动编译的版本都快得多。我总是为硬盘使用相同的图像)。我确保永远不会启用或加载 kvm:
* 查询 qemu (info kvm)
* 寻找已加载的驱动程序 (lsmod | grep kvm) 和 (ls /dev/kvm)。
在任何情况下都没有加载 Kvm。
我也试过将配置文件中的-O2改为-O3,并去掉二进制文件中的符号(应该没什么区别)。
我一定是遗漏了什么(debian 软件包的默认配置、编译选项...但我不知道是什么)。
造成这种性能差异的原因可能是什么? (有什么想法,经验吗?)
非常感谢!
这里的问题是您要配置的“--enable-tcg-interpreter”参数。这会为主机 CPU 禁用通常的基于 JIT 的 TCG 后端,以支持缓慢的解释后端。你永远不需要解释器,除非 QEMU 根本不支持你的主机 CPU;正如您所发现的,它明显比默认的 JIT 慢。
我正在对 QEMU (qemu-system-i386) 在完全仿真模式(使用 TCG)下的性能进行一些测试,并避免使用 KVM。我已经安装了 debian 存储库中可用的版本(QEMU 模拟器版本 1.1.2 (Debian 1.1.2+dfsg-6a+deb7u6)),并下载并编译了 Qemu 2.3.0、Qemu 1.0.0、Qemu 1.1 的源代码。 2,以及 Debian 1.1.2+dfsg-6a+deb7u6 的源代码。
在所有情况下,我都按以下方式配置项目: ./configure --enable-sdl --target-list=i386-softmmu --disable-kvm --enable-tcg-interpreter
从存储库安装的版本比任何手动编译的版本都快得多。我总是为硬盘使用相同的图像)。我确保永远不会启用或加载 kvm: * 查询 qemu (info kvm) * 寻找已加载的驱动程序 (lsmod | grep kvm) 和 (ls /dev/kvm)。
在任何情况下都没有加载 Kvm。
我也试过将配置文件中的-O2改为-O3,并去掉二进制文件中的符号(应该没什么区别)。
我一定是遗漏了什么(debian 软件包的默认配置、编译选项...但我不知道是什么)。
造成这种性能差异的原因可能是什么? (有什么想法,经验吗?)
非常感谢!
这里的问题是您要配置的“--enable-tcg-interpreter”参数。这会为主机 CPU 禁用通常的基于 JIT 的 TCG 后端,以支持缓慢的解释后端。你永远不需要解释器,除非 QEMU 根本不支持你的主机 CPU;正如您所发现的,它明显比默认的 JIT 慢。