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