面向数据中心的能源效率和服务器虚拟化

2018-05-28 08:15何花杨段生
电子技术与软件工程 2018年8期
关键词:管理程序内存虚拟化

文/何花 杨段生

图1:实验设置

随着云计算的加速技术,数据中心在云计算中扮演了一个中枢角色,并且消耗了大量的电能。如何解决电力消费已经成为未来数据中心面临的主要挑战之一。最近,服务器整合被吹捧为提高数据中心能源效率的有效途径。在这种方法中,运行在多个服务器上的应用程序可以通过虚拟化合并到一个服务器中。因此,数据中心的空闲服务器可以被关闭以减少服务器虚拟化的能源使用。并且已经证明,通过虚拟化优化数据中心操作,可以节省数据中心20%的能耗。然而,虚拟化还会导致潜在的危险效应,比如可能的能源开销,或者可能减少最大吞吐量。这些有害的影响,如果不是很好理解的话,可能会抵消服务器虚拟化带来的好处。因此,对数据中心服务器能量使用的清晰理解和精确建模将为数据中心的操作优化提供基本依据。

在本文中,研究了服务器虚拟化对数据中心能源使用的影响,目的是为优化数据中心操作提供见解。采用了一种经验方法来度量不同虚拟化配置下的服务器所消耗的能量,包括一个基准案例和两个替代的管理程序(即Xen和KVM,其中物理服务器被虚拟化为多个虚拟机(VMs)。在获得了CPU使用率、任务执行时间、电力和能源消耗的统计数据后,在本地计算出密集型任务和网络密集流量下,对应于云计算和数据中心的两个重要资源、计算和网络。

1 服务器虚拟化模型

1.1 虚拟化模型概述

虚拟机监控程序,也指虚拟机管理器(VMM),它是允许多个操作系统(OSs)同时在一台服务器上运行的虚拟化技术之一。现有的管理程序基于它们与硬件平台的关系,可以分为两种类型。具体来说,Xen是一个type-1管理程序,它直接与底层硬件接口,并使用一个特权域0来管理其他内核修改的客户机。KVM被设计为一个type-2管理程序,其中虚拟化接口与实际物理硬件的作用相同。

1.2 虚拟I/O机制

Xen公开了一个超调用机制(也称为半虚拟化接口),所有用户操作系统都必须被修改以执行特权操作(例如,更新页表)。此外,还建议事件通知机制提供从实际设备中断到VMs的虚拟中断。相反,KVM通常使用完全虚拟化。在KVM之上的客户OSs不需要改变,它们看起来是正常的Linux进程。当用户OSs发出I/O指令时,系统管理程序中的进程上下文切换可以允许I/O信号通过。

Xen和KVM的虚拟化I/O机制的差异直接影响了虚拟服务器的能源消耗。Xen允许客户在不调用主机OS的内核的情况下进行系统调用,而KVM则需要额外的内核操作来支持I/O行为。额外的操作可能会转化为额外的CPU周期和内存访问,这将进一步导致额外的能源使用。

1.3 虚拟CPU模型

Xen中的默认CPU调度器是基于信用的调度器。这个调度程序运行在主机上的一个独立的会计线程上,为每个虚拟CPU(VCPU)分配一定的信用。当一个VCPU运行时,它会消耗它的信用。一旦VCPU耗尽了信用,它只在其他更节约的VCPU完成执行时运行。

KVM使用常规的Linux CPU和内存调度器。默认情况下,KVM使用完全公平的调度器(CFS)来将每个客户视为正常的线程。在KVM上运行的每个任务都有一个优先级,这决定了CPU周期和内存分配的大小。

尽管有不同的机制,但这两个CPU调度程序的目标是平衡多核上的全局负载,以达到更好的分配,这将得到我们的验证。

2 实验设备

2.1 物理设置

图1展示了我们实验的物理设置,该实验由三个相同的服务器组成。正在测试的机器是浪潮3060服务器,每个服务器包含一个四核Intel 2.13 GHz英特尔至强处理器,2GB内存,500gb硬盘和1千兆以太网卡。所有这些都连接到友讯gds-1024t 1000 Base-T开关试验网。Kill-A-Watt功率表,标准精度为0.2%,用于测量每个服务器的能源使用情况。使用Linux内核2.6.18的CentOS 5.6-final-x86 64被用作主机和客户系统的操作系统平台。Xen 3.0.3和KVM 83分别安装在服务器B和C上。3个客户虚拟机配置4个VCPUs、512mb RAM和50gb映像。我们保留了所有的软件参数。

我们的实验由另一台计算机控制,它也与内部网相连,以获得基准时间、能源和电能消耗。每个服务器负责收集其平均CPU使用量。

图2:局部任务基准的相对能量开销

图3:网络基准测试的相对能量开销

图4:完成时间曲线

图5:能耗曲线

2.2 测试设计

我们从收集所有服务器空闲时的背景能耗开始。在此之后,一组本地和网络的连接被启动,以强调所有的三个服务器。详细的测试用例说明如下:

(1)本地计算基准:Linux中的bc命令用于计算常量π到精确的水平(小数点后10万位数)。我们同时运行多个实例来生成计算密集型负载。5个案例的数据数量从3个到7个,测试了2个或3个活动域。在物理机器上,所有实例都是在相同的操作系统上执行的,而在虚拟服务器上,并发实例分布在所有活动域上。

(2)Http请求基准:通过Http请求模拟网络密集型的流量基准。

在服务器端,测试的所有服务器上配置了三个Apache服务器。在物理上,三个HTTP服务器在三个TCP端口上执行连接隔离。对于虚拟机,三个实例在所有活跃的客户域上均匀分布,用于2或3个活动域。使用相同的TCP端口进行公平的比较。在HTTP服务器上存储的内容是从商业web站点检索的1000个唯一文件,平均文件大小为10.8 KB。

在客户端,我们使用AB(Apache Bench)工具模拟真实的Web流量。配置了三个客户端来生成特定速率的http GET请求,每个请求都将使用一个Apache服务器实例。每个客户机向每个文件发送5000个请求。在这个测试概要文件中,传输的数据的总体大小可以达到大约150 GB。

我们的实验产生了各种请求率,将能量使用作为工作负载的函数。具体来说,有2500、5000、10000、15000个请求/秒被用来模拟低、中等、高和峰值的Web流量负载,这是由真正的商业Web服务器的工作负载提出的

3 实验分析

3.1 局部计算基准

(1)虚拟服务器比物理服务器消耗更少的能量。具体来说,当执行5个实例时(实例中比CPU核心的数量多一个),基于Xen的服务器的能量开销为负,如图2所示。

图2可以理解为在多核服务器中并发进程和CPU核心之间的相互作用。在这种情况下,基于Xen的服务器,运行2个或3个VMs,消耗的时间比物理服务器少10%,消耗的能量也少了11%。对于基于KVM的服务器,在大多数情况下,CPU调度器的优点被额外的系统管理程序所抵消,除了在配置了两个活跃的VMs之外,导致节省了比物理服务器的2%的能量。这一发现表明,如果运行过程和cpu核心之间没有绑定,本地操作系统就不能真正利用多核架构;相比之下,基于Xen或KVM的虚拟化系统可以将计算资源划分为更小的部分,从而在活跃的VMs之间实现更好的资源分配,以节省能源。

(2)基于KVM的服务器比Xen-base服务器消耗更多的能量。例如,在处理7个并行任务时,2个KVM虚拟机消耗的能量超过2个Xen VMs的5.4%,而3个KVM VMs和3个Xen VMs之间的差距达到了23%。这是因为KVM管理程序比Xen管理程序消耗更多的CPU周期,占用更高的内存占用空间。额外的需求转化为更高的能源消耗。

(3)活动VMs的数量影响了基于KVM的服务器的能源使用情况。特别是在配置3个活跃的VMs时,基于KVM的服务器消耗的能量比在同一台服务器上配置的两个活跃的VMs消耗的能量要多。这可以归因于频繁的锁持有者抢占(LHP)机制。当主机调度VCPU线程时,基于KVM的服务器上的客户机VCPU可能被抢占。如果抢占的VCPU在关键部分运行,那么锁将从客户VMs的角度持有一定时间。在更活跃的VMs中,LHP的概率更高。一旦LHP发生,CPU资源就会被简单地浪费在锁定期间,而这反过来又会增加任务完成时间。因此,以KVM为基础的服务器和3个活跃的VMs的平均功耗最低,但任务完成时间最长。

图6:虚拟化能量开销

3.2 HTTP请求的基准

在图3中绘制了HTTP基准的结果。

(1)网络密集型流量的虚拟化开销比计算密集型流量要大得多。对于基于Xen的服务器,计算密集型流量的能量开销小于5%,而网络密集型流量的开销可能上升到70%。同样的情况也发生在基于KVM的服务器上。这一发现的原因至少有两方面。首先,对于网络流量,虚拟化服务器的CPU使用率要远远高于本地服务器;对于本地计算任务,所有服务器的CPU使用情况几乎是相同的。这一差异表明,在KVM的Xen或TUN/TAP中,VFR/VIF的预算为CPU周期。其次,根据锁持有优先权(LHP)的概率,虚拟服务器的I/O密集型工作负载的概率为39%。高频率的LHP转化为高能源成本。

(2)虚拟服务器的能量开销与活跃的VMs的数量相关。对于3个活动的KVM VMs,能量开销大约是两个活跃的VMs的1.5倍;类似地,3个活跃的Xen VMs消耗了2个活跃的VMs的几乎两倍的开销。此外,基于KVM的服务器的差距也越来越大。例如,在15000 请求次/秒的情况下,KVM的活动VMs和2个活动VMs之间的开销差距超过80%;而Xen的约为20%。

(3)基于KVM的服务器的网络吞吐量最大达到10000个请求次/秒和15000个请求次/秒。图4和图5使这个发现非常清楚。

当请求率为15000个请求次/秒时,基于kvm的服务器需要更长的时间来完成任务,因此消耗了更多的能量,相比之下,10000次的请求次/秒就需要消耗更多的能量。作为一种比较,物理机和基于Xen的服务器的任务完成时间和能源成本随着请求率的增加到15000个请求次/秒而单调减少。由于KVM的额外内存占用。在Apache服务器中,每个服务请求都需要特定的内存。可以同时服务的请求的最大数量与可用资源的数量成比例。对于KVM来说,额外的内存占用会缩小请求服务可用内存的数量。

(4)与服务器空闲时所消耗的功率相比,服务器在不同负载条件下消耗的边际功率是有限的。具体地说,服务器在不同的网络请求级别下消耗的额外能量最多为37.3%,而本地计算基准的额外功耗为57.6%。此外,边际功耗与所观察到的CPU使用率高度相关。因此,我们的实验验证了服务器以前的功耗模型,在此模型中,服务器的功耗几乎可以看作是CPU使用的一个affline函数,而空闲功耗为y轴截距。y轴截距要尽可能小,才能达到能量比例的结构。

(5)虚拟化服务器的能量开销非常大。如图6所示。

由一个多项式拟合线是弯曲的基于不同配置的功耗,权力差距基线和虚拟化服务器Xen和KVM增加随着吞吐量的增加,在基于KVM的服务器的最大吞吐量。当没有网络流量时,Xen和基线之间的差距约为1%(0.8W),而基于kvm的服务器和基线服务器之间的差距约为10%(6.9W)。当吞吐量增加到10000个请求次/秒时,Xen的差距为15.2%(10.8W),KVM的差距为11.2%(7.9W)。

4 结论

本文对服务器虚拟化对能源效率的影响进行了实证研究。通过密集的测量,我们获得了来自本地服务器的能源使用的统计数据,以及Xen和KVM的虚拟化服务器,以及基于我们的动机的一些发现。最后,我们揭示了虚拟服务器之间的基本平衡,这将决定如何设计和部署服务器整合来控制数据中心的能源使用。

参考文献

[1]罗亮,吴文峻,张飞.面向云计算数据中心的能耗建模方法[J].软件学报,2014,25(07):1371-1387.

[2]王德文,刘杨.一种电力云数据中心的任务调度策略[J].电力系统自动化,2014,38(08):61-66+97.

[3]刘德欣,闫永明,郭军等.云环境下基于多目标决策的待整合服务器选择方法研究[J].小型微型计算机系统,2016,37(04):699-704.

[4]李佟,葛敬国,鄂跃鹏等.基于标签的POF网络虚拟化技术研究[J].计算机应用研究,2017(03):1-10.

[5]孙超.服务器虚拟化技术的应用[J].电子技术与软件工程,2017(10):31.

[6]史椸,冯雨声,齐勇等.多用户服务器程序自恢复系统[J].软件学报,2015,26(08):1907-1924.

[7]吴迪,薛政,潘嵘.基于XEN云平台的网络安全实验教学[J].实验室研究与探索,2013,32(07):62-66.

[8]范伟,孔斌,张珠君等.KVM虚拟化动态迁移技术的安全防护模型[J].软件学报,2016,27(06):1402-1416.

[9]黄秋兰,李莎,程耀东等.高能物理计算环境中KVM虚拟机的性能优化与应用[J].计算机科学,2015,42(01):67-70.

[10]汤儒,李秦伟.Openstack云环境中KVM虚拟机性能分析[J].微型机与应用,2013,32(23):94-96+100.

[11]曾少宁,汪华斌,袁秀莲等.应用虚拟化技术的计算机虚拟实验平台[J].科技通报,2013,29(02):203-205.

[12]魏小锋,郭玉东,林键.基于MNT随机化容器文件系统安全性加强技术[J].计算机工程与应用,2017(04):1-6.

[13]王艳,陈卫卫.基于Nginx替代Apache在高并发WEB负载均衡系统中的应用[J].电子测试,2015(06):88-92.

猜你喜欢
管理程序内存虚拟化
军事保密管理程序法治化及其对军民协同创新发展的促进研究
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
“春夏秋冬”的内存
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
虚拟化技术在计算机技术创造中的应用
关于EPC总承包项目设计管理程序文件的研究
存储虚拟化还有优势吗?
FMC移动性管理程序
基于内存的地理信息访问技术