论文部分内容阅读
随着虚拟化软硬件技术的发展与成熟,虚拟化技术已经被广泛地应用于云计算等基础服务设施领域。虚拟化技术的目的是为了实现物理资源的动态扩展以及按需分配,这需要虚拟化环境能在虚拟机数目增加时,仍然保持性能稳定,因此可扩展性成为衡量虚拟化技术好坏的重要标准。存储设备是重要的物理资源之一,作为新兴的存储设备的固态硬盘SSD具有很好的并行处理能力,然而已有的IO虚拟化技术多面向与传统的机械磁盘,因此如何在虚拟化环境中发挥SSD并行处理的特点,获得较好的可扩展性,成为一个亟待解决的问题。在本文中,我们首先对虚拟化环境中SSD可扩展性的性能瓶颈进行了测量。我们发现了两个性能瓶颈,一是读取请求的可扩展性问题,二是随机读写请求的性能问题。通过对SSD硬件特性的研究,我们分析得出SSD中读写请求各自的性能模型,并用这个模型分析了产生这两个问题的主要原因:一是在虚拟机中,为了便于机械磁盘驱动进行全局优化,请求不分类型按照统一的方式发送;二是在主机中,使用针对机械磁盘而设计的电梯调度方法对请求队列进行调度。由此我们设计了针对虚拟化环境中SSD可扩展性优化的方案。优化方案按虚拟机与主机分为前端和后端两部分。在前端中,由于SSD读取与写入请求性能的影响因素不同,我们设计了virtio_blk_mq驱动,对读取和写入请求区分对待,提高读取请求的优先级的同时降低了写入请求发生写入放大事件的几率。在后端中,由于SSD没有寻道的开销,因此我们去除了调度方法中电梯调度的部分,根据SSD本身并行处理的特点,设计了按照平均访问扇区数作为优先级的SCFQ调度方法。最后我们在实验平台实现了整体优化方法,并进行了评估实验,实验验证了优化方法的有效性,并反应了优化方案中各部分的实际效果。