热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

KVM虚拟机性能及原理解析

即将推出的linux2.6.20内核包含一个全新的虚拟技术:KVM,全称为基于内核的虚拟机.它很友好,稳定和高性能,虽然还没有正式发布.本文从理论和实践介绍KVM的原理,并给出一些简单的评测报告.原理简介当前存在几种不同的虚拟技术.一种是准虚拟化技术(Par

将推出的linux 2.6.20内核包含一个全新的虚拟技术: KVM, 全称为基于内核的虚拟机. 它很友好, 稳定和高性能, 虽然还没有正式发布. 本文从理论和实践介绍KVM的原理, 并给出一些简单的评测报告.

原理简介
当前存在几种不同的虚拟技术. 一种是准虚拟化技术(Paravirtualization), 客户操作系统需做一些修改. 另一种是全虚拟化技术(Full Virtualization), 客户操作系统无需任何修改. 我们知道全虚拟化技术是以降低性能来提高兼容性, 因为在虚拟化环境中如果没有客户操作系统的协助, 系统将很难达到较好的性能. 另一方面, 近来新处理器的开发缩短了这方面的差距. 最新的Intel VT(虚拟技术, Virtualization Technology)和AMD SVM(安全虚拟机, Secure Virtual Machine)从硬件上支持了虚拟技术, 试图取代准虚拟化技术. KVM在标准的Linux内核中增加了虚拟技术, 从而我们可以通过(或将)优化的内核来使用虚拟技术.

在KVM模型中, 每一个虚拟机都是一个由Linux调度程序管理的标准进程. 一个普通的Linux进程有两种运行模式: 内核和用户. KVM增加了第三种模式: 客户模式(有自己的内核和用户模式.)

KVM由两个部分组成:

一个是管理虚拟硬件的设备驱动, 该驱动使用字符串设备/dev/kvm做为管理接口.
 

另一个是模拟PC硬件的用户空间组件, 这是一个稍做修改的qemu进程.

QEMU是一个著名的处理器模拟程序, 由法国人Fabrice Bellard开发.
 

KVM实践: 使用Windows XP做为客户机

KVM仍在开发当中, 我决定来做一些实验. 我使用了2.6.20-rc2内核和现成的Debian软件包: kvm和qemu. 重新编译内核和安装软件包后, 一切准备就绪.

安装客户机的操作系统非常简单:

qemu-img create hda.img -f qcow 6G
 

kvm -no-acpi -m 256 -cdrom winxpsp2.iso -hda hda.img -boot d

第一步是创建一个虚拟盘(主机系统上的一个普通文件). 我选择了QEMU写时拷贝格式, 文件将随着内容的增多而增大, 这样不至于浪费磁盘空间, 虚拟盘最大为6GB. 虚拟盘准备好后, 开始系统安装. 实际上, 我已经预先做了一项工作(非必须的), 从Windows XP系统安装光盘拷贝所有数据到磁盘上, 简单一个命令 cp /dev/cdrom image.iso). 我使用了-no-acpi参数, 因为QEMU只是实验性的支持ACPI, 在Windows XP系统安装过程中Windows Installer(安装程序)会存在一些问题.

我想没有比这还更简单的安装. 很快就完成了windows的安装. 有人也许会问我, 什么选择windows呢? 好的, 现在我没有理由来选择在linux系统上运行linux虚拟机. 而且, 我也很想做一些Windows虚拟机的测试. 现在你不用安装双启动模式了, 你随时都可以简单启动widnows虚拟机. 然后比如在windows虚拟机中打开IE7来查看本文..
 

一些基准测试

好的, Windows XP的安装速度很快, 接下来我有更多的时间进行一些基准测试. 提示, 测试工作是部分性的, 非标准测试. 目的是从实验来理解KVM的一些特性. 另外我提供了几个有意思的实例, 做起来也很容易. 一旦完成Windows系统的安装, Windows客户机甚至可以在未经修改的QEMU上运行. 而且我重新编译和安装了kqemu, kqemu是一个由qemu原作者开发的QEMU加速模块(QEMU accelerator module), 可惜它是一个闭源软件. 最后, 我选择了两个测试软件: PCMark2002和Super PI(版本 1.1e). 注意测试硬件的处理器是Intel E6600.

我认为kqemu和KVM比单独的QEMU模拟器的性能要强很多. 而且可以看到kqemu只比kvm好一点点. 但是我想kvm的性能会不断改进的, 毕竟比起其它虚拟技术, kvm还很年轻.

运行Super PI的结果是: KVM速度最快, 相当于原始(单机运行)速度(在实际硬件上运行, 无任何虚拟机软件)的84%. 而QEMU的速度是最慢的, 上面图表没有显示实际数据, 我把所有的结果列出来(数值越低越快, 每秒处理100万条指令): QEMU: 492.5 sec, kqemu: 28.5 sec, KVM: 25.5 sec, native: 21.5 sec.


结论


KVM仍在开发当中, 它向我们展示了其真实的潜力. 我想接下来我们会看到更多好的有关kvm的新闻. 届时当kvm集成到Linux官方内核当中, 它将变成一个日用品. 而且kvm不仅会应用到数据中心和服务器系统加固上, 而且也会应用到Linux桌面上. 非常感谢QEMU和KVM开发人员所做的工作.

 

推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • ffmpeg【百度百科】
    FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 最新技术_Tungsten Fabric架构和最新技术进展丨TF成立大会演讲实录
    本文整理自瞻博网络杰出工程师SukhdevKapur在“TF中文社区成立暨第一次全员大会”上的演讲,增加了对于TF功能的描述,pdf点击下载。https://tung ... [详细]
author-avatar
潇洒舞者_899
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有