• zz QEMU 与 Bochs


        QEMU 和bochs严格意义上说不是虚拟机,是“模拟机”,他们把guest os执行的指令由软件来解析执行(软CPU),而xen一类的虚拟机是把指令交给CPU(真正的CPU)来执行。模拟比虚拟慢,但更灵活,在单cpu的机 器上可以模拟多CPU的环境,这是xen做不到的。

     

    05年的时候我就试用过bochs,觉得还不错。但这次用它来装rhel as4 超级慢,配置网络也费了半天劲。于是改用QEMU,发觉确实比bochs好:

     

    1. 速度比bochs快

    2. 不用配置文件,命令行很方便

    3. 配置网络更方便

    4. 自带vncserver,远程访问方便

    5. 更妙的是,QEMU可以直接使用bochs生成的虚拟硬盘文件,平滑迁移

    6. 最近还听说kvm和QEMU配合威力巨大,不过资源有限,没来得及尝试

     

    只用一行就启动了一个64位、4CPU的模拟机器,还启动了vnc和ne2000的模拟网卡:

    qemu-system-x86_64 -smp 4 -m 1G -hda rhel4_x86.img -vnc localhost:0 -net nic,model=ne2k_pci -net user

     

    Xen是通过修改内核代码实现的,所以很多在xen上测试通过的驱动换到真实机器上却不能工作了。

    对于驱动开发,还是QEMU搭个虚拟机比较好。

     

    === 2010.3.25 ===

    QEMU从0.12系列开始就不再支持kqemu,我估计自己做了优化,因为我看0.12的速度还行。

    装了KVM以后,QEMU不再只是单进程单CPU,而是可以用上多个CPU,速度当然更快,但是配了KVM后也有副作用:不再是模拟,而是虚拟,虚拟机的问题会影响到主机。

    我在KVM+QEMU的虚拟机上跑了个错误的驱动,最后不仅这台虚拟机,连主机都挂了。

     

    === 2010.4.20 ===

    发现QEMU有个缺陷:我装完了虚拟系统,想加一块虚拟硬盘,于是qemu-img create了一个5G的文件,然后 -hdb 设为第二块硬盘,但是进入虚拟系统以后,不管我怎么fdisk,它就是认为这块新硬盘只有1G (我的虚拟系统是rhel5,不应该是OS的问题)。


    omycle said:

    Xen里面的设备模型还是用QEMU的。对于QEMU,如果是X86的话,最好安装QEMU的加速器Kqemu,这样会接近native速度。

    DongHao Author Profile Page said:

    QEMU从0.12系列开始就不再支持kqemu了,我估计已经做了优化。

    omycle said:

    噢,真的吗?
    可是,kqemu是针对x86的啊,而QEMU则可以支持很多平台。所以,如果QEMU自身做优化,也优化不到哪里。
    KQEMU的局限性是,客户机和宿主机都需要是X86平台。优化的主要原理是,当模拟的客户机与宿主的都是X86的时候,指令在翻译的时候,有很多可以直接在宿主机上运行,而不再经过二进制翻译。
    KQEMU应该还是存在的。
    对于ARM,MIPS,sparc等。单单QEMU是不可能做到接近native速度的。

    DongHao Author Profile Page said:

    你说的应该是对的。
    0.12版的QEMU可能内置了kqemu的功能,我在x86的服务器上模拟x86平台跑得很快。当然,如果模拟别的平台就未必了,这个我没试。

    在linux上用kvm带的改动过的QEMU跑得就更快了,还能用上多个CPU。

  • 相关阅读:
    达叔系列——神经网络编程基础
    win10安装pytorch——前面有坑,快跳进去鸭
    Python基础(六)——面向对象编程
    Python基础(五)——闭包与lambda的结合
    Python基础(四)——迭代器/对象,生成器
    Mysql优化(出自官方文档)
    Mysql优化(出自官方文档)
    Scala语言笔记
    Scala语言笔记
    Scala语言笔记
  • 原文地址:https://www.cnblogs.com/Akagi201/p/2495481.html
Copyright © 2020-2023  润新知