基于KVM/QEMU的I/O访问频率感知缓存方法

作者:{Doris}@ArkTeam

原文作者:Vera Rimmer, Davy Preuveneers, Marc Juarez, Tom Van Goethem and Wouter Joosen

原文题目:I/O access frequency-aware cache method on KVM/QEMU

原文来源:Cluster Computing, 2017, 20(8):1-13.

随着IT技术的快速发展,云计算被认为是下一代的计算基础设施。云计算的一个重要组成部分是虚拟机技术,它能够以更好的资源利用率降低数据中心成本。在云计算环境中,由于VDI具有提高资源利用率、保护和整合等优点,因而得到了广泛的应用。通过在同一主机上整合多个来宾虚拟机,VDI可以在虚拟机之间共享主机物理资源,从而提高资源利用率和密度。虽然在有限的服务器资源上整合虚拟机是VDI的优势,但这种资源整合确实会成为产生高I/O性能的障碍。

优化I/O虚拟化开销是一项具有挑战性的任务,因为它需要仔细检查guest虚拟机和执行这些虚拟机的主机之间的多个软件层。

图1说明了KVM/QEMU的I/O路径。如图1所示,管理程序通过使用模拟器来分配虚拟设备,如网络或存储。在写操作的情况下,在虚拟机上生成的应用程序数据通过来宾内核的文件系统和设备驱动层传输到管理程序,到达主机内核,存储在物理设备中。

图1 KVM/QEMU I/O 路径

在这种环境中,适当地放置缓存对于减少I/O流量非常重要。虚拟化的I/O缓存可以在VM层或管理程序中实现。尽管VM层中的缓存很容易实现和管理,但是它对客户操作系统的依赖性很强,使得将缓存组件移植到其他操作系统(如Linux到Window,反之亦然)变得很困难。

本文提出了一种在KVM/QEMU之上实现的管理程序级缓存,称为hypercache,它可以通过截取qemu中的I/O请求来减少I/O虚拟化路径。它还利用缓存块映射,通过考虑相关数据的访问频率,有效地管理缓存内存。

在研究I/O虚拟化开销之后。本文建议的方法的主要目标是尽量减少管理程序中的开销,以生成更好的I/O性能。因此本文为提出的目标开发了超高速缓存。如图2显示了超高速缓存的总体结构。

图2 超高速缓存的总体结构

首先,hypercache通过在来宾虚拟机和主机之间提供I/O执行路径的快捷方式来提高I/O吞吐量。为了减少I/O延迟,hypercache会截获qemu中的I/O请求,并使用内存中的元数据表检查必要数据的可用性。第二,hypercache利用数据块的I/O访问频率,确保对重要I/O请求的快速响应。此外,通过在QEMU中合并数据块,然后将它们传输到主机内核,hypercache可以减轻连接到主机的物理I/O设备上的磁盘争用。

图3a演示了元数据存储库结构。主表(tmaster)是存储库的顶部组件,它保留指向索引表(tindx)的指针以及指向缓冲区表(tbuf)的指针。缓冲表用于维护历史块缓冲区(HB)和写回块缓冲区(WB)。此外,它还指向两个块缓冲区的起始地址和当前空地址。在读操作的情况下,如果在hb中找不到高访问频率的块,那么它们将被超高速缓存捕获并存储在当前空地址指向的历史块缓冲区中。

图3 元数据存储库和执行过程

最后,本文的实验结果表明,与现有的QEMU相比,其方法将I/O带宽提高了4.7倍。

发表评论

电子邮件地址不会被公开。 必填项已用*标注