提升QEMU的性能


Windows下编译带Kqemu加速模块的QEMU

2011-03-09 21:16前提:

官方的版本不带有kqemu加速模块(Kqemu使用的不是GPL协议,要分发必须得到作者授权),

导致安装ISO时时间漫长,据称使用kqemu能够使QEMU运行效率提升5倍,

所以萌生了自己编译kqemu的念头。


加速模块官方说明:

This module enables QEMU to run most ofthe target application code directly

on the host processor to achieve nearnative performance.

此模块能够使QEMU基于物理机处理器运行绝大部分目标应用程序代码以获得接近本地运行的效率。

这也正好说明了QEMU是真正的CPU模拟器,这个真正的CPU模拟器模拟了一个不同于物理主机的、并不存在的CPU

我猜想加速模块可以屏蔽QEMU模拟CPU的功能,使之仅作为虚拟机(virtualizer)使用,而不是emulator


编译准备:

下载如下软件包

MSYS-1.0.10.exe

msysDTK-1.0.1.exe

MinGW-3.1.0-1.exe

SDL-1.2.9.tar.gz

zlib-1.2.2.tar.gz

directx-devel.tar.gz

kqemu二进制安装包

也可以使用Cygwin

CygwinMinGW是用来将Linux下的软件移植到Win下使用的编译器,Cygwin更加强大,

包括对LinuxAPI的支持还有一套提供Linux界面的工具;

MinGW:Minimalist GNU forWindows顾名思义是Windows的小型GNU系统)

本文以MinGW为例(Cygwin使用方法类似,都是在unixshell下敲入相同命令)


编译步骤:

1:安装MSYS-1.0.10.exec:\msys,安装完毕后,会弹出系统提示框,这里输入n跳过;

2:安装msysDTK-1.0.1.exeMSYS-1.0.10.exe的安装目录c:\msys

3:在c:\msys下建立名为mingw的子目录,将MinGW-3.1.0-1.exe安装到c:\msys\mingw

4:将SDL-1.2.9.tar.gzSDL的中文介绍见http://www.libsdl.org/intro.cn/toc.html)、

zlib-1.2.2.tar.gz解压到C:\msys\home\usrname\,(usrname为你的用户名),

解压directx-devel.tar.gzC:\msys\mingw

5:运行msys.bat,进入shell

进入刚才解压的SDL源码目录

代码:cdsdl-1.2.9(一定要编译,否则QEMU没有图象输出)

依次输入:

代码:./configure--prefix=/mingwmake make install6:按照上面的编译过程再编译zlib

代码:cdzlib-1.2.2 ./configure --prefix=/mingwmake makeinstall这步用来编译zlib,并安装zlib头文件到正确路径


7:从CVS下载QEMU的源码

进入home目录也就是到C:\msys\home\usrname\目录

代码:cd/home/usrname输入

代码:exportCVS_RSH="ssh"

代码:cvs-z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/qemu coqemu回答yes建立SSH连接并且下载




8:下载完成后,将kqemu二进制安装包解压到qemu源码目录,这样编译qemu后才能支持kqemu加速模块,称之为qemubuilt-in with kqemu

shell进入qemu目录

输入

代码:

./configure --target-list=i386-softmmu--static--enable-adlibtarget-list=i386-softmmu表示只生成32exe可执行文件,如果要生成x64qemuexe可执行文件可以把参数--target-list=i386-softmmu去掉

接下来会看到屏幕输出如下内容


如图:可以看到QEMU能够支持kqemu

接下来可以编译QEMU

shell提示符下输入

代码:

make,这里有可能会提示找不到texi2htmlpod2man命令,texi2htmlpod2man是用来编译生成帮助文档的,可以建立两个空白文件取名为texi2htmlpod2man。帮助文档可以在官方网站找到。

再次

代码:

make,完成之后qemu-img.exe/home/usrname/qemu目录,qemu.exe/home/usrname/qemu/i386-softmmu目录,这样编译生成的文件体积太大了(包括sdl.dll),运行strip命令来减小它们的体积

代码:

strip i386-softmmu/qemu stripqemu-img.exe9:最后将

代码:

home/usrname/qemu/i386-softmmu/qemu.exehome/usrname/qemu/qemu-img.exe home/usrname/qemu/pc-bios/bios.binhome/usrname/qemu/pc-bios/ppc_rom.binhome/usrname/qemu/pc-bios/vgabios.binhome/usrname/qemu/pc-bios/vgabios-cirrus.binhome/usrname/qemu/kqemu/kqemu.infhome/usrname/qemu/kqemu/kqemu.syshome/usrname/SDL-1.2.9/src/.libs/sdl.dll拷贝出来

这样编译生成的qemu就是支持kqemu的了

要使QEMU使用kqemu加速模块,必须在运行qemu前,首先要安装kqemu驱动,鼠标右击kqemu.inf安装之,在命令行输入

代码:

net start kqemu启动kqemu服务

启动qemu后在控制台(CTRL+ALT+2)下输入infokqemu能够查看QEMUkqemu的支持情况


小提示:

如果编译出错,不需要重新下载源码只需

代码:

make distclean即可清除编译生成的文件。

注:本文参考了qemu官方论坛comike的文章


"多谢关注realboard,请访问慧至科技官方网站www.hugacy.com" 感谢大家关注realboard,再三感谢,尤其是众多发email过来询问的网友。 鉴于有网友怀疑realboad速度比qemu慢,事实胜于雄辩,提供测试方法如下: 测试方法: 分别运行两个batch程序,用秒表或PC时钟计时(大概1分钟左右结束) 计时方法: 程序启动开始计时; 出现UI画面结束计时. 测试代码(rt-thread 0.4.0 relese): 如果对测试代码有疑问,请联系rt-thread咨询 bsp/mini2440/sdcard.c rt_uint8_t sd_init(void) { //-- SD controller & card initialize int i; sd_delay(1000000); //此处增加一行对ARM仿真性能进行压力测试 /* Important notice for MMC test condition */ /* Cmd & Data lines must be enabled by pull up resister */ SDIPRE = PCLK/(INICLK)-1; SDICON = (0<<4) | 1; // Type A, clk enable SDIFSTA = SDIFSTA | (1<<16); SDIBSIZE = 0x200; /* 512byte per one block */ SDIDTIMER=0x7fffff; /* timeout count */ /* Wait 74SDCLK for MMC card */ for(i=0; i<0x1000; i++); sd_cmd0(); 参考配置: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 2.69GHz, 3.46GB of RAM 参考结果: qemu为47秒, realboard为28秒 realboard之所有没有达到23秒以内,是因为Timer处理和外设IO还有专门优化。 早期曾经对realboard核心指令集模拟器做过多媒体解码测试,综合性能qemu的2倍。 详情请参考我的CSDN blog realboard -- 继续挑战ARM高性能软件仿真极限 <** 任何个人或团体学习者,教育培训机构,自由项目开发组织,在非商业赢利前提下,均可以无偿体验和使用realboard,商业使用请联系作者获得授权, email : lxzhg@hotmail.com **> 测试包中所含其它资源为自由软件开发组织所有,请参考各自许可协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值