文摘
虚拟机技术成为云环境中的重要组成部分,VDI收到来自IT市场的爆炸性的关注由于其简单的软件管理的优势,更大的数据保护,并降低费用。然而,I / O开销达到高的关键障碍VDI的系统性能。虚拟化环境中减少了I / O开销不是一项容易的任务,因为它需要仔细观察多个软件层guest-to-hypervisor hypervisor-to-host。在本文中,我们提出了多层缓存实现,叫做MultiCache,它结合了guest-level I / O优化虚拟机监控程序级别的I / O优化。guest-level优化的主要目的是减轻后端之间的I / O延迟,来宾VM共享存储,利用历史日志在VM I / O活动。另一方面,虚拟机监控程序级别I / O优化实现最小化延迟造成的“主机通过I / O路径”和“只是物理I / O设备在虚拟机”在同一主机服务器。我们执行的性能测量MultiCache使用邮戳基准来验证其有效性。
1。介绍
最近,VDI(虚拟桌面基础结构)正成为一个基于云计算环境的重要方面由于其优点如用户定制,易于维护软件,location-transparent访问(1- - - - - -3]。VDI的多放映场影剧院vm中主机的硬件资源,从而提高服务器资源利用率和密度。同时,VDI能够隔离虚拟机在同一主机平台,可提供性能隔离和安全应用程序执行的客人。这是通过使用管理程序执行,负责协调VM操作和管理主机服务器的物理资源。
虽然VDI提供了许多好处,如提高资源利用率和私人数据保护,存在问题,可以恶化系统性能,包括I / O虚拟化开销(4,5]。在vm I / O请求发出之前完成VDI,他们应该经过多个软件层,如从后端层、共享存储主机服务器(6,7],来宾操作系统之间的层,虚拟机监控程序,最终主机操作系统。
图1显示了I / O虚拟化的道路使用KVM虚拟机监控程序和QEMU仿真器。应用程序的I / O请求首先由客户内核传递到虚拟之前,模拟设备中执行用户空间。执行几个模块包括后的图像格式,这些请求进入到宿主内核通过调用posix文件系统接口。虚拟磁盘通常是一个常规文件透视图的主机文件系统。I / O请求所需的文件可以存储在本地磁盘连接到共享存储连接的主机或网络。
如图1,因为I / O虚拟化路径与多个软件层组织,优化I / O成本是非常困难的,这需要仔细观察各种虚拟化方面。在这篇文章中,我们感兴趣的是减轻这样的开销通过实施适当的缓存机制在客人和KVM使用QEMU仿真器(8- - - - - -10]。
由于软件堆栈厚厚的VDI,实现虚拟化缓存方法需要考虑与每个I / O请求经过几层。例如,只考虑缓存的来宾VM可能不足以达到理想的I / O性能,因为发生在hypervisor的延迟,如nonroot模式和根之间的上下文切换模式,可以大幅恶化应用程序执行。操作系统的依赖也很难港口在vm guest-level缓存方法,特别是在情况vm执行不同的来宾操作系统。
在本文中,我们提出了虚拟缓存机制最重要的KVM,叫做MultiCache(多级缓存实现虚拟化),将VM的guest-level组件与QEMU虚拟机监控程序级别的组件。MultiCache guest-level组成部分的主要目标是减少I / O开销发生后端之间的文件传输,共享存储和客人。同样,在客人级别缓存可以给更好的机会来保留特定于应用程序的数据。这是因为当客人只需要考虑在其上运行的应用程序,管理程序应该控制所需的所有数据在同一个主机上虚拟机,从而导致所需的数据的缓存错过由于有限的缓存大小或交换活动。最后,通过紧密耦合的轻量级的资源监控模块,组件可以在客人管理有效的缓存大小。
的虚拟机监控程序级别组件MultiCache试图减少I / O延迟QEMU提供所需的数据,而不是访问主机的物理设备。虚拟机监控程序级别组件的另一贡献是提供快速响应能力通过减少应用程序进程阻塞I / O完成时间。管理程序主要使用hypercall运输过程控制从来宾操作系统管理程序本身。因为这样的转变需要模式nonroot模式和根模式之间切换的时候,客人的申请过程应该保持封锁,滞后背后的I / O性能。虚拟机监控程序级别组件试图优化这样的开销在QEMU提供必要的数据。
本文组织如下。节2节中,我们将讨论相关研究,3,我们描述MultiCache的总体结构。节4,我们目前的性能度量,在部分5最后,我们总结。
2。相关的研究
减少I / O虚拟化的成本是关键的问题,加快虚拟机的I / O带宽。已经有一些研究针对I / O虚拟化开销。首先,大多数VDI计划使用后端和共享存储持久数据水库,比如DAS(主机直接连接存储),NAS(网络附加存储),或SAN(存储区域网络)6,11]。这个存储用于存储只读vm映像模板或共享库和文件。随着虚拟机的广泛使用云计算,管理最优成本转移之间的图像内容和文件存储和主机是成为了重要的研究方面。例如,唐[6)提出了种VM(虚拟磁盘快)组成的图像格式和QEMU的块设备驱动程序。种使支持即时VM创建和迁移在主机通过使用即写即拷,copy-on-read和自适应抓取。
随着技术的SSD(固态硬盘)是快速增长,已经有几次试图提高I / O带宽采用SSD在虚拟化环境12- - - - - -15]。例如,在vCacheShare [12),而不是按比例分配共享存储上的闪存缓存空间,vCacheShare使用信息从vm I / O访问和跟踪处理数据提取重用模式为了计算合适的闪存缓存大小。汞(13客户机-服务器,基于连续写入闪存缓存方法在管理程序。拜恩et al。13)认为,把flash缓存的网络存储服务器或虚拟机可能不是有利于加快I / O性能由于网络延迟或虚拟机迁移16,17]。同时,利用flash与回写缓存策略可能不满足高I / O的需求,因为每一个写仍应通过网络跃点写入到共享存储的数据一致性和可用性。
S-CAVE [14)是一种虚拟机监控程序级别flash vm中缓存分配缓存空间。类似于vCacheShare, S-CAVE虚拟机在运行时监控I / O活动,使用它来确定他们的缓存空间的需求。Arteaga et al。15)提出了一个flash在客户端缓存存储系统(VM主机)。他们用dm-cache [18]块级缓存接口的方法也认为回写式政策是有益的在云环境中。哈,Kielmann19试图减少网络开销是发生在VM启动时,通过将VM缓存计算节点或在存储记忆。他们发现,当云环境支持主图像在多个虚拟机之间共享,缓存计算节点上的虚拟机镜像会有效地减少网络交通量。也,云环境,许多计算节点同时使用多个VM,将VM缓存图像存储内存可以帮助减少磁盘排队延迟。
除了共享存储和主机之间,I / O延迟发生在hypervisor也应该解决实现理想的系统带宽在虚拟化环境中。这样的开销是VM出口之一。vm的I / O请求发出异步由主机通过hypervisor和诸如QEMU仿真器。因为VM运行在nonroot模式和hypervisor上运行根模式,服务I / O请求原因退出虚拟机第一次去hypervisor,它发生上下文切换开销。另外,虚拟机监控程序的回复vm影响I / O性能。自发布这些I / O请求的应用程序仍然阻塞在VM,这种切换开销最终会降低应用程序的执行。
在这个问题上有一些研究。例如,SR-IOV [20.,21)实施获得的好处直接I / O在物理设备,通过定义扩展作为PCIe规范。SR-IOV, VDD运行在客人与VF执行共享资源的直接数据移动或将请求转发给dom 0 PF司机管理和协调VFs的直接访问共享资源。Yassour et al。22)提出了一个设备作业,虚拟机可以直接访问物理I / O资源,没有经过主机仿真软件。
然而,直接设备作业不能工作等虚拟资源的虚拟磁盘,失去了力量的虚拟化的灵活性。为了克服这种缺点,哈尔'El et al。23)提出了一种新的paravirtual I / O,试图克服弱点的现有paravirtual I / O计划(4,24,25]。他们的I / O方案试图缓解I / O开销,提供专用I / O核心由单个I / O控制线程。代替混合I / O和客人在相同的核心工作负载,使用一个专用的I / O不仅可以给客人更多的周期,而且可以提高整个系统的效率,减少上下文切换成本。
I / O虚拟化开销的另一个问题是,I / O请求应该经历一个厚的I / O栈来完成。使用QEMU KVM的,客人写数据的典型方式是,在通过的文件系统和设备驱动程序层客户内核,所需的数据写应该转移到虚拟机监控程序的模拟设备驱动程序。同时,数据进入主机内核,有类似的软件结构客户内核(假设客人和主机运行相同的操作系统),达到物理I / O设备连接到主机。适当地将缓存是一种减少这样的交通量在虚拟化环境中(26,27]。
品柱(27)使用本地磁盘作为一个持久缓存。夏玛等人坚持认为,大部分的请求vm是冗余的,可以由本地磁盘。为了证明他们的观点,他们第一次跟踪生产VDI工作量,发现下面缓存单个vm是有效提高I / O性能。品柱是结合XenServer [28),把它变成域0。也。古普塔et al。29日]研究了页面共享和内存压缩保存虚拟机的内存消耗。他们的差分机方法搜索相同的页面使用哈希函数。如果页面有相同的值,那么它回收页面和更新虚拟内存指出共享复制。检测页面分享他们的方法进一步通过消除子页共享使用页面修补和改进核心内的内存压缩。
Ongaro et al。30.]研究了Xen调度策略对I / O带宽的影响与多个应用程序显示不同的性能特征。他们发现Xen的信用调度器并不低的反应延迟情况几个域并发执行I / O,即使提高状态。的原因之一是,事件通道司机总是扫描等待向量从一开始,而不是恢复从那里离开了。同时,他们发现其中优先级反转的可能性提供最高优先级数据包被抢占推迟。陆和沈31日]追踪页面比vm小姐,通过使用虚拟机监控程序级别独家缓存。他们抓住从VM内存页驱逐到hypervisor独家缓存,同时避免包含相同的数据在VM和独家缓存。琼斯等人。32)提出了一种推断促进和驱逐虚拟内存缓冲区缓存的页面。为了正确推断出页面缓存的活动,他们观察到一些敏感事件导致控制转移到VMM,如页面错误,页表更新,和磁盘I / o。
然而,优化在客人或hypervisor可能不足以产生理想的性能,因为虚拟化I / O路径涉及到几个软件层包括客人,客人的共享存储主机。在本文中,我们试图通过实现目标两层guest-level组件和虚拟机监控程序级别组件。
3所示。MultiCache
3.1。系统结构
MultiCache实施利用I / O优化目标多层次的I / O虚拟化堆栈。图2代表MultiCache的总体结构。在图中,可以看出MultiCache分为三个部分:guest-level组件,虚拟机监控程序级别组件,组件和资源监控。guest-level组件的主要目的是减少I / O延迟共享存储和客人之间,通过利用应用程序I / O执行死刑的历史信息。此外,通过留住客人的特定于应用程序的数据,它可以减少I / O访问到物理设备连接到主机。最后,它试图确定有效的缓存大小之间的关系,同时考虑虚拟机和主机资源实时用法。
guest-level组件在VM和包括三个工作表,包括哈希表、历史表和I / O映射,来检测应用程序的I / O活动,并保留相关的元数据表示执行历史记录。这些日志是用来预测下一个I / O行为预加载的优惠文件共享存储,也用于维护最近在VM引用文件。
在QEMU虚拟机监控程序级别组件实现。这个组件的主要目的是减少I / O延迟发生在虚拟程序过渡,通过使用QEMU的I / O访问频率测量。同时,通过拦截I / O请求他们去主机内核之前,组件vm中尝试减少I / O争用。第一个组件的属性是模块接口与QEMU I / O调用交互而交换相关的I / O的元数据,如部门数据请求。组件的主模块接收到的元数据I / O接口和决定了成功与否,而与元数据存储库,其中包含的历史日志程序的I / O执行,如I / O访问频率。组件的设备驱动程序负责管理缓存内存管理程序。
第三个组件MultiCache的实时资源监控组件。监控模块在虚拟机监控程序独立于来宾操作系统工作,收集资源使用来自所有虚拟机和主机服务器的信息。这两个组件所使用的监控信息的MultiCache有效执行I / O的优化方案。有与监控组件相关联的两个表:VM资源表来存储虚拟机资源使用和主机资源表主机资源使用。
3.2。MultiCache的两个组件之间的差别
有四个区别MultiCache guest-level组件和虚拟机监控程序级别的组件。首先,guest-level组件的主要目的是降低I / O开销共享存储和客人之间的虚拟机,通过预取和保留文件,可能会在不久的将来使用。另一方面,虚拟机监控程序级别组件之间的I / O开销最小化客户虚拟机和主机,通过减少I / O在QEMU软件栈。
第二,两个组件MultiCache使用不同的I / O单元:guest-level组件和部门的文件在虚拟机监控程序级别组件。虽然guest-level组件使用文件I / O优化,一直处于分裂状态的虚拟机监控程序级别组件使用部门文件客户内核之前到达QEMU I / O调用。
第三,降低I / O开销,guest-level组件利用使用计数表明文件引用多少次后进入的客人。通过缓存的文件有很高的使用数量,组件试图减少之间的网络和I / O开销共享存储和来宾VM。同时,这些信息被用来减少I / O访问的主机。虚拟机监控程序级别组件利用I / O访问频率这意味着行业已经从主机访问的次数。而不是转发部门经常被用于主机,虚拟机监控程序级别组件在内存中缓存这些行业减少应用程序进程阻塞时间和主机的I / O争用。
最后,虽然guest-level来宾VM组件保留缓存内存,虚拟机监控程序级别组件保留缓存内存管理程序,这是独立于来宾操作系统的管理。表1说明了简要描述两个MultiCache组件之间的差异。
3.3。MultiCache Guest-Level组件
MultiCache guest-level组件的实现优化网络和I / O开销导致文件传输之间的共享存储和来宾VM。此外,通过监测和I / O历史信息,积累MultiCache使我们能够提供更好的I / O响应性和数据的可靠性。
保持历史信息,MultiCache使用两种类型的表:哈希表和历史表。哈希表是由散列键和用于定位相关的历史表包含相应的文件元数据。有历史表组织解决散列碰撞。历史上的一个重要文件元数据表是使用计数。每次访问文件的读和写操作,相关的使用数量是增加了一个说明文件访问频率。同时,MultiCache使用两个I / O映射来确定预取的文件数量从共享存储来取代它。
图3显示的结构MultiCache guest-level组件。首先,文件索引节点,计算散列键访问哈希表。相关的哈希表条目包含当前历史表地址和参赛号码,可以检索到所需的文件元数据。如果新文件用于I / O,然后下一个空的地方在当前历史表存储元数据提供。
为了保持适当的缓存内存大小的客人,只有文件各有不少于使用计数USAGE_THRESHOLD存储在缓存和文件元数据插入到读或写地图,基于文件的读或写操作。分别保持读写地图提供了两个好处。首先,它使兑现多个文件显示频繁读执行为了支持快速读取响应性更好的机会。第二,它有助于提高数据可靠性和可用性通过冲洗肮脏的文件替换的阶段。此外,I / O映射使维护文件客人根据他们的频率和最近减少I / O访问主机。
在图3,部分(缓存窗口大小)读和写的地图,分别说明的文件应该保存在缓存内存;部分和候选人将取代在缓存的内存压力。MultiCache能增强阅读响应缓存多个文件的最新的I / O访问读取操作。这样一个过程包括替换文件映射部分。同样,MultiCache可以替代多个脏文件映射到部分对数据可靠性和可用性。让guest-level缓存内存大小和让MEM_THRESHOLD是内存的使用限制在哪些文件的指定部分和必须刷新保持适当的缓存内存容量。最后,让,,,是文件的元数据映射到部分,,,,分别。在每个时代,MultiCache检查通过与资源监控器是否满足以下条件:
算法1显示MultiCache guest-level组件所涉及的步骤。让和是读和写的最近的位置地图,分别。同时,让的文件,让阅读是写的文件。
|
||||||||||||||||||||||||||||||||||||||||||||||||
在步骤和,MultiCache计算散列键和从两个表访问自己的文件元数据。两个文件的使用数量也增加了。在步骤来,如果使用次数大于或等于阈值,然后的元数据和分别插入到读写地图,MultiCache存储相关数据。特别是,如果最后的访问写,然后从写元数据迁移映射到读地图,而消除其历史写的地图。相同的程序申请保存其元数据来编写映射。步骤来描述过程保持适当的缓存大小的考虑条件(1)。如果条件不满足,文件映射到部分和刷新了消除内存压力。
3.4。MultiCache虚拟机监控程序级别组件
虚拟机监控程序级别组件实施造成的I / O开销最小化客户虚拟机和主机之间的软件堆栈。完成I / O请求之前,有几个模式nonroot模式和根模式之间的转换发生,这会产生应用程序执行被屏蔽。此外,由于这些请求需要访问数据从物理设备连接到主机,虚拟机监控程序的优化需要一种方法减少I / O争用的设备在服务时间。
MultiCache虚拟机监控程序级别组件使用多个表,称为元数据存储库,维护管理程序I / o相关的元数据。图4显示的是元数据存储库中的表。地址表存储读取和写入的地址包含哈希键和索引表的开始和当前地址读取和写入元数据表。类似于guest-level组件的历史表,读取元数据表和写元数据表是组织目标的碰撞问题。读和写元数据表包含访问信息部门从QEMU I / O调用;高速缓冲存储器表维护下一块和段地址缓存内存管理程序。
虚拟机监控程序级别组件使用I / O访问频率的部门来确定这些行业应该保留在缓存内存。I / O访问频率显示多少次相关领域被用于I / O请求。有两个原因利用I / O访问频率。首先,因为缓存内存中维护MultiCache限制大小的,需要一个标准来过滤行业之前存储在缓存中记忆。在MultiCache,只有这些领域已经访问不低于一个阈值(FREQ_THRESHOLD)存储在缓存内存。
第二,除了优化模式过渡和I / O争用上述MultiCache给予优先处理I / O请求的机会,根据VM的不同的重要性。换句话说,I / O请求在高优先级来宾VM可以执行第一,尽管他们访问频率。在MultiCache, VM的优先级是由数量的cpu和内存容量的VM配置:更多的cpu数量和更大的内存大小分配,高优先级的客人。
让是一组行业组成的I / O请求的一个客人。考虑这样一个主机,目前的虚拟机数量执行。另外,每个VM ()配置了数量的cpu和内存容量。
定义1。一个行业发布从VM ()被定义为四个部分:,,,:(1) I / O访问的频率。(2) 的重量是令人满意的,在那里VM的重量()。(3) 是映射函数,表示缓存命中()或小姐()。(4) 高速缓冲存储器的位置,在哪里如果存储。
算法2代表了阅读的步骤在虚拟机监控程序级别MultiCache组件。
|
||||||||||||||||||||||||||||||
假设是一个部门组成的读请求的客人。MultiCache计算散列键访问读取索引表包含相应的读取元数据表的地址。从表中检索相关的元数据后,I / O访问频率乘以VM重量获得的重量。的情况下的重量小于FREQ_THRESHOLD,MultiCache传递主机内核来访问它的物理I / O设备。否则,从步骤步,MultiCache检查内存存储在缓存中。如果不是这样,存储在内存使用块和段数从高速缓冲存储器中检索表。的情况下在缓存中找到内存,它返回到客人不主机内核。更新后的写操作,相关的元数据写入索引表和写入元数据表,该行业正映射到缓存表。如果表中相关的元数据是可用的,那么该行业已经在缓存中映射内存覆盖更新。
缓存内存划分块,由虚拟机监控程序级别处理组件是由一个的页面数量。的行业在写高速缓存内存的情况下,存储在块被传输到主机内核,块充满后有效的部门或当当前检查点(目前每30秒)的一部分。让高速缓冲存储器的大小;让是th块;,让的大小。同时,让是th段的大小,,是一样的一个部门。块有效性和段有效性取决于块地图和地图,分别。
定义2。的分配状况在块地图之一的段映射定义如下:对于任何一个块位:,。对于任何一个段位:,。如果,那么部分包含一个有效的部门,应该转移到主机。否则,= 0。同时,= 1意味着所有的片段组成的包含有效的行业。算法3显示了步骤写程序的缓存内存。
|
||||||||||||||||||||||||||
3.5。MultiCache资源监控器
资源监控计算客户虚拟机的资源状态和主机服务器虚拟机监控程序级别,因为它应该监控客户操作系统的独立使用信息。也,是组织与轻量级的模块,这样就很少在vm影响I / O带宽。在应用程序执行期间,班长定期通知guest-level资源使用信息和虚拟机监控程序级别组件来帮助他们保持有效的缓存容量的I / O改进。
资源监控由三个模块组成:资源集合模块、资源计算模块,并使用容器。资源集合模块工作的服务器,同时沟通proc文件系统和libvirt收集资源状态信息,如CPU、内存、磁盘I / O和网络状态。资源计算模块计算资源使用和,最后,使用容器存储计算MultiCache信息提供这两个组件。
图5代表的函数被称为资源监控器。首先激活监控,资源集合初始化的函数被称为资源计算和使用容器,通过发行。同时,它与/proc和libvirt在每一个时期λ通过调用和积累的资源状态信息存储使用容器。资源检索状态信息计算模块,通过调用calcHostInfo和通过应用公式,计算资源使用中描述表2。最后,结果存储在容器使用。
4所示。绩效评估
4.1。实验平台
我们执行所有实验在主机服务器上装有AMD外汇8350 8核处理器,24 GB的内存,1 TB的希捷梭鱼ST1000DM003磁盘。此外,其他服务器有相同的硬件规格主机服务器被配置为共享存储节点。两台服务器和1 Gbit的网络连接。3.13.0-24通用的操作系统是Ubuntu 14.04版本的内核。我们安装了虚拟机的主机服务器通过使用KVM虚拟机监控程序。每个VM配置了双芯的处理器,8 GB的内存,并使用virtIO 50 GB的虚拟磁盘。每个虚拟机的操作系统与2.6.32-431 CentOS 6.5版本的内核。我们用邮戳为评价基准。
4.2。MultiCache Guest-Level组件评估
我们首先评估了MultiCache guest-level组成部分。为了分析的准确的I / O性能模式guest-level组件,我们使用原来的KVM / QEMU版本不与MultiCache集成虚拟机监控程序级别组件。同时,我们修改邮戳主机服务器和共享存储之间的连接节点。结果,当文件生成从邮戳,已经进入客人的文件存储节点读取从MultiCache (缓存)和其他文件不居住在MultiCache读取存储通过NFS (不缓存)。
图6显示I / O带宽不同文件大小从4 KB到1 MB。设在代表的比例不缓存来缓存。例如,90:10意味着90%的文件需要在交易交换与共享存储节点。交易的数量是20000,读,写是50的比例:50。在图中,当文件被访问的比例从MultiCache变得很高,更好的实现I / O带宽。此外,与大文件MultiCache效果更明显。与20:例如,80年,80%的文件从MultiCache访问,大约53%的I / O带宽改进是观察1 MB的文件相比,4 KB的文件。原因在于,随着越来越多的大文件访问MultiCache传输数据的网络开销VM变得很小,导致带宽加速。
在评估中,我们观察到的效果与读取操作MultiCache尤其明显,如图7。为了看到MultiCache的影响和I / O操作,我们不同的读和写百分比而增加交易的数量。在图7,80:20意味着80%的事务读取操作和20%的交易是写道。同样,我们使用1 MB的文件大小。图7展品的更好的I / O吞吐量生成大量的交易,尤其是较大比例的读取操作。这是因为写操作不可避免地造成网络和I / O开销共享存储器存储数据和这样的负担可能降低吞吐量。
然而,I / O延迟之间的共享存储和VM并不是唯一一个应该解决达到理想的性能。如前所述,从客人的I / O路径的主机也应该关注,因为有很多地方造成性能放缓,如物理设备的I / O争用和模式之间的过渡客人和管理程序。我们将观察MultiCache的虚拟机监控程序级别组件可以实现更好的带宽克服这样的延迟。
4.3。虚拟机监控程序级别组件的I / O带宽
我们测量了I / O性能的虚拟机监控程序级别组件。在这个实验中,没有共享存储和客人之间的文件传输。换句话说,所有文件I / O的邮戳基准上运行产生的客人。文件大小不同4 KB和1 MB。
首先,我们观察到hypervisor缓存内存图的影响8,而改变缓存内存大小从250 MB到4 GB。温暖的缓存,我们执行修改后的邮戳5秒,每个测试用例的平均值。图8显示获得的缓存命中率而改变缓存内存大小。图中显示,随着缓存内存大小变大,所以命中率。例如,增加从250 MB到4 GB内存大小显示了命中率提高6.9倍。
然而,有一个微妙的差异值得观察图中。而命中率提高126%从500 MB到1 GB, 1 GB 2 GB的命中率增加34%。2 GB的内存缓存扩展到4 GB甚至产生较小比例的命中率提高。我们猜想这是因为当地改变随着时间的推移。同时,元数据存储在元数据存储库替换新的由于空间限制。
图9显示了I / O带宽而获得不同的高速缓存内存大小从250 MB到4 GB。我们可以注意到图9描绘了类似的性能模式的图8:更大的缓存内存大小、更好的I / O带宽。同时,增加缓存500 MB到1 GB的内存大小显示大约43%的带宽加速缓存从1 GB内存扩展到2 GB产生只有12%的性能提升。
在图9相比,我们的I / O性能MultiCache原来的KVM / QEMU。与小的缓存内存大小250 MB等MultiCache的I / O带宽小于原来的版本,因为缓存错过发生的空间限制。然而,性能差异变得大MultiCache增加的内存大小。缓存和2 GB的内存大小,MultiCache产生大约37%的I / O带宽相比,改进原来的版本。我们目前使用缓存2 GB的内存大小。主机是24 GB的RAM大小;因此我们使用只有约8%的总大小的缓存内存。
图10显示了阅读的结果而改变从64 KB的块大小4 MB内存缓存中。图中可以看出,改变块大小没有影响I / O带宽的读操作,因为没有写发生主机。
图11显示了写带宽MultiCache虽然比较原始的KVM / QEMU。原始版本支持三种模式:写违约,直写式和回写式。对于在MultiCache使用1 MB的块大小,它生成带宽约33%和27%高于默认的模式和回写式模式的原始版本,分别。有两个原因来解释这种I / O带宽的改善。回写式的原始版本的模式,它缓冲的数据I / O在主机内核发行的I / O请求客人应该通过客户内核和QEMU之前到达主机。第二,而不是冲到物理设备的数据,虚拟机监控程序级别组件拦截在QEMU和收集缓存内存大的I / O单元。这种方法有助于加速I / O带宽,因为,在图11,我们可以注意到,随着块大小的增加,写性能也变得大了。然而,根据结果4 MB的块大小,增加超过1 MB大小可能不会产生显著的性能加速由于写延迟在宿主体内。
5。结论
我们提出了一种多层缓存机制,称为MultiCache,优化I / O虚拟化开销。第一层MultiCache guest-level组件,其主要目标是优化后端之间的I / O开销,共享存储和客人。同时,缓存应用程序特定的数据在客人可以有助于加速性能加速。为了实现这一目标,guest-level组件使用的历史日志文件使用元数据来预加载优惠文件从共享存储和维护在客人最近引用文件。MultiCache的第二层是最小化之间的I / O延迟客人和主机,利用I / O访问频率在QEMU。同时,通过拦截在QEMU I / O请求传输到主机内核之前,组件可以减少I / O争用连接到主机的物理设备。在组件中,我们积累了I / O访问元数据存储库中的应用程序执行的信息,用它来保持数据高I / O访问缓存内存频率。MultiCache的组件都是集成了实时资源监控模块收集的资源使用信息vm管理程序和主机。邮戳的性能测量表明,我们的方法是有益的在实现虚拟化环境中的高I / O性能。作为一个未来的工作,我们将评估MultiCache有更多的实际应用证明其有效性提高I / O性能。
相互竞争的利益
作者宣称没有利益冲突。
确认
这项工作是由韩国国家研究基金会(NRF)授予由韩国政府资助(MSIP) (NRF - 2014 r1a2a2a01002614)。