基于Linux KVM服务器虚拟处理器性能研究.docVIP

基于Linux KVM服务器虚拟处理器性能研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux KVM服务器虚拟处理器性能研究

基于Linux KVM服务器虚拟处理器性能研究   摘要:基于Linux KVM的服务器处理器性能研究,主要研究在基于Liunx环境下服务器虚拟处理器的性能。首先介绍虚拟处理器结构体,在此基础上给出虚拟处理器的运行。然后介绍具体的绑定设计。在方案的实现部分,包括数据结构实现,进程绑定的实现,在进程绑定实现部分,包括VMCS 的绑定实现和KVM 进程与异步 I/O 事件绑定。最后给出方案的执行效果。   关键词:处理器性能研究;服务器性能;Linux KVM;虚拟机   1 概述   随着信息技术的不断发展,对信息系统强大功能需求的不断提高,虚拟机技术越来越受到广大科研学者、专家的关注,并且成为学术界与工业界研究的热点与难点课题。近几年伴随着集群、多核系统、甚至云计算的广泛应用部署,使得虚拟机技术在服务器应用上的优势日益显现,不仅降低了成本,而且有效地提升了服务器的各项性能指标。目前,虚拟机技术已经成为是提高服务器性能的重要研究手段,并且该课题已成为研究热点方向。在服务器处理器性能研究部分,主要讨论服务器虚拟处理器的结构及其运行机制、虚拟机具体绑定过程、具体的设计实现等。   2 虚拟处理器的结构及运行   2.1 虚拟处理器结构体   硬件虚拟化采用虚拟处理器(VCPU,Virtual CPU),在实现结构体,VCPU 一般分为两个部分:VMCS中存储硬件更新和使用信息;VMCS 没有保存,由VMM更新和使用的内容。   2.2 虚拟处理器的运行   通过VMM的调度来实现VCPU的运行。VCPU在初始化后,便进入等待状态,调度程序按照一定的策略选择调度VCPU运行,实际过程把选择的VCPU切换到物理硬件CPU上执行,即VCPU与物理CPU之间进行上下文切换。   VCPU上下文切换由以下三步组成:   (1)VMM 保存自己的上下文;   (2)VMM把保存在VCPU上由软件处理的上下文加载到物理处理器上。   (3)VMM执行VMLAUNCH/VMRESUME指令,从而引发VM-Entry,物理CPU自动将VCPU上下文的VMCS部分加载至处理器。   3 虚拟机绑定设计   实现Guest OS在虚拟的单核平台上独立运行,需从KVM线程、异步IO事件处理、VMCS、QEMU应用程序着手。若这四方面的处理和操作能够在指定核上完成,则虚拟单核平台也就能得以实现。研究表明,VMX的扩展指令 VMPTRLD可实现VMCS与物理处理器绑定;处理器的硬件和性能机制可解决其余三个问题。只要对能够VMCS进行控制,并完成KVM进程硬件和性能的正确设置,便可以将Guest OS进程绑定在指定核上,使其在运行期间不发生任何迁移。   根据对KVM机制、原理及相关技术的研究分析,可通过优化、修改QEMU源代码,实现指定处理器与特定KVM虚拟机进程核心绑定的目标。在创建服务器的时候实现对服务器的绑定,使服务器只能够在指定核上面运行,且不发生迁移。   4 方案的实现   根据设计,需对KVM、QEMU源代码进行相关修改,以便完成-cpuid的参数解析、命令选项,以及绑定操作。   4.1 数据结构   源代码的修改涉及如下选项变量和数据结构:   (1)枚举变量选项   选项变量主要指QEMU命令的全部选项及相关选项的属性,如选项参数、帮助、名称等。枚举变量的成员有:   enum {   #define DEF(option, opt_arg, opt_enum, opt_help) opt_enum,   #define DEFHEADING(text)   #include QEMU-options.h   #undef DEF   #undef DEFHEADING   #undef GEN_DOCS   };   (2)结构体变量选项   该变量主要用于保存枚举变量选项中定义选项,包括选项是否有参数、选项参数的索引,以及选项名称。QEMU Option结构体的如下:   typedef struct QEMUOption {   const char *name; //选项名称   int flags; /选项是否有参数   int index; //选项参数索引   } QEMU Option;   static const QEMUOption QEMU_options[] = {   { h, 0, QEMU_OPTION_h },   #define DEF(option, opt_arg, opt_enum, opt_help) \   { option, opt_arg, opt_enum },   #define DEFHEADING(

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档