论文部分内容阅读
随着超级计算机规模的快速发展,高性能计算和模拟已经成为解决人类面临的若干重大技术挑战的重要手段。超级计算机由计算、通信和存储三大分系统组成,由于存储系统是基于机电磁合为一体的磁盘构成,控制过程复杂,存取数据的延迟大、速度不快,使得存储系统与计算系统之间的性能差距越来越大,存储系统已经成为影响超级计算机性能快速提升的瓶颈。因此,亟待研究存储系统的I/O性能优化技术。
在超级计算机存储系统关键实现技术中,基于应用程序I/O特性,优化I/O缓存和预取,以及I/O调度等技术依然是重要的研究内容,它们面临着难以获取复杂的I/O特性、I/O缓存效率差、多个并发应用的I/O干扰等难题。针对上述问题,本文主要研究I/O特性获取、基于I/O特性感知的分布式Cache和I/O调度技术。本文的主要研究工作和创新点如下:
(1)提出了应用程序I/O特性的获取、存储和检索方法
目前,获取高性能计算应用程序I/O特性的主要方法是使用某些工具来分析操作系统I/O统计量和应用程序的I/O迹线(trace)。现有分析工具存在使用范围受限、分析能力不足和使用灵活性较差的问题。本文提出了基于FUSE文件系统(Filesystem in User Space)的应用程序I/O特性获取框架FTracer。FTracer本质上是一个文件系统,因此能够获取各类应用的I/O特性。FTracer可提供进程级、文件级和应用级的I/O分析功能,能够获取各个视角下的I/O特性。另外,FTracer能够在运行时实时配置分析例程、分析视角等,灵活性较高。本文使用FTracer分析了典型I/O密集型应用的I/O特性,其中,首次分析了典型的数据密集型应用Gather和WRF程序的I/O行为。应用I/O特性主要用于为I/O性能优化技术提供决策支持。Cache和预取等I/O优化技术需要快速的获取需要的I/O特性数据,以保证及时决策和低开销。另外,不同层面的I/O特性数据的表示方法多样。如何有效存储和及时检索I/O特性数据意义重大。本文提出基于Key-Value存储的I/O特性数据库,既能够表示多种类型的I/O特性,又能保证低访问延时。
(2)提出了基于I/O特性感知的分布式Cache结构
分布式Cache技术通过将多个节点上的空闲内存组织起来,向应用程序提供一个大容量、高带宽的Cache存储空间。文件的数据块通常被缓存在最近访问该数据块节点的Cache中。当一个文件被多个节点共享访问时,该文件的数据块会被分散到各个节点的Cache中。每个节点上的Cache基于确定的算法(如LRU)和本Cache中数据存储的历史信息对缓存在Cache中的文件数据进行替换操作,它不考虑文件全局被访问的信息,这就导致Cache命中率大大降低。此外,为了维护数据一致性,同一个数据块会在多个节点的Cache间频繁抖动,大幅降低了Cache的性能。
本文提出了I/O特性可感知的分布式Cache结构SFDC,它以文件为单位进行数据分布,将一个文件的所有数据缓存在同一个节点上。各个节点的Cache根据文件的全局I/O特性,计算文件数据的价值,并且基于数据价值进行缓存和预取,尽早地将无价值数据转存到底层并行文件系统,同时预取高价值的数据。SFDC基于范围进行写操作合并,将地址不连续的小I/O整合成大I/O,以适应底层并行文件系统。此外,SFDC还提供了可指定I/O特性的编程接口,向用户提供不透明的使用方式。
(3)提出了基于I/O特性感知的I/O调度方法
超级计算机上并发运行的多个应用程序独占式的使用计算节点,但是共享的使用存储系统。因此,在存储系统中,一个存储服务器要同时服务多个应用程序的I/O请求。并且,一个应用程序的I/O操作通常同时覆盖多个存储服务器,而I/O操作的同步要求使得其完成时间取决于被最晚服务的I/O请求。由于存储服务器的I/O调度算法不区分应用,导致一个应用程序的I/O请求在不同服务器上的完成顺序不同。因此,各个应用程序的I/O时间会因为在存储服务器上的相互竞争而增长。这种应用之间的I/O干扰(I/O interference)还会破坏单个应用的空间局部性,进一步降低I/O系统的整体性能。
本文提出了基于I/O特性可感知的I/O调度框架DWFC,该框架综合考虑多个应用程序总体的I/O性能,降低在存储服务器上的I/O干扰带来的性能下降。DWFC通过探测存储服务器的实时负载来识别I/O干扰。在I/O干扰发生时,DWFC基于请求的时间紧迫性进行I/O调度,优先选择紧迫性高的I/O请求,以保证应用程序的I/O性能。在发送I/O请求时,DWFC根据存储服务器的I/O负载来确定I/O的请求的数据量。实验结果表明,当两个应用并发运行时,DWFC能够在不降低任何应用程序I/O性能的前提下,提高两个应用的整体I/O性能。
在超级计算机存储系统关键实现技术中,基于应用程序I/O特性,优化I/O缓存和预取,以及I/O调度等技术依然是重要的研究内容,它们面临着难以获取复杂的I/O特性、I/O缓存效率差、多个并发应用的I/O干扰等难题。针对上述问题,本文主要研究I/O特性获取、基于I/O特性感知的分布式Cache和I/O调度技术。本文的主要研究工作和创新点如下:
(1)提出了应用程序I/O特性的获取、存储和检索方法
目前,获取高性能计算应用程序I/O特性的主要方法是使用某些工具来分析操作系统I/O统计量和应用程序的I/O迹线(trace)。现有分析工具存在使用范围受限、分析能力不足和使用灵活性较差的问题。本文提出了基于FUSE文件系统(Filesystem in User Space)的应用程序I/O特性获取框架FTracer。FTracer本质上是一个文件系统,因此能够获取各类应用的I/O特性。FTracer可提供进程级、文件级和应用级的I/O分析功能,能够获取各个视角下的I/O特性。另外,FTracer能够在运行时实时配置分析例程、分析视角等,灵活性较高。本文使用FTracer分析了典型I/O密集型应用的I/O特性,其中,首次分析了典型的数据密集型应用Gather和WRF程序的I/O行为。应用I/O特性主要用于为I/O性能优化技术提供决策支持。Cache和预取等I/O优化技术需要快速的获取需要的I/O特性数据,以保证及时决策和低开销。另外,不同层面的I/O特性数据的表示方法多样。如何有效存储和及时检索I/O特性数据意义重大。本文提出基于Key-Value存储的I/O特性数据库,既能够表示多种类型的I/O特性,又能保证低访问延时。
(2)提出了基于I/O特性感知的分布式Cache结构
分布式Cache技术通过将多个节点上的空闲内存组织起来,向应用程序提供一个大容量、高带宽的Cache存储空间。文件的数据块通常被缓存在最近访问该数据块节点的Cache中。当一个文件被多个节点共享访问时,该文件的数据块会被分散到各个节点的Cache中。每个节点上的Cache基于确定的算法(如LRU)和本Cache中数据存储的历史信息对缓存在Cache中的文件数据进行替换操作,它不考虑文件全局被访问的信息,这就导致Cache命中率大大降低。此外,为了维护数据一致性,同一个数据块会在多个节点的Cache间频繁抖动,大幅降低了Cache的性能。
本文提出了I/O特性可感知的分布式Cache结构SFDC,它以文件为单位进行数据分布,将一个文件的所有数据缓存在同一个节点上。各个节点的Cache根据文件的全局I/O特性,计算文件数据的价值,并且基于数据价值进行缓存和预取,尽早地将无价值数据转存到底层并行文件系统,同时预取高价值的数据。SFDC基于范围进行写操作合并,将地址不连续的小I/O整合成大I/O,以适应底层并行文件系统。此外,SFDC还提供了可指定I/O特性的编程接口,向用户提供不透明的使用方式。
(3)提出了基于I/O特性感知的I/O调度方法
超级计算机上并发运行的多个应用程序独占式的使用计算节点,但是共享的使用存储系统。因此,在存储系统中,一个存储服务器要同时服务多个应用程序的I/O请求。并且,一个应用程序的I/O操作通常同时覆盖多个存储服务器,而I/O操作的同步要求使得其完成时间取决于被最晚服务的I/O请求。由于存储服务器的I/O调度算法不区分应用,导致一个应用程序的I/O请求在不同服务器上的完成顺序不同。因此,各个应用程序的I/O时间会因为在存储服务器上的相互竞争而增长。这种应用之间的I/O干扰(I/O interference)还会破坏单个应用的空间局部性,进一步降低I/O系统的整体性能。
本文提出了基于I/O特性可感知的I/O调度框架DWFC,该框架综合考虑多个应用程序总体的I/O性能,降低在存储服务器上的I/O干扰带来的性能下降。DWFC通过探测存储服务器的实时负载来识别I/O干扰。在I/O干扰发生时,DWFC基于请求的时间紧迫性进行I/O调度,优先选择紧迫性高的I/O请求,以保证应用程序的I/O性能。在发送I/O请求时,DWFC根据存储服务器的I/O负载来确定I/O的请求的数据量。实验结果表明,当两个应用并发运行时,DWFC能够在不降低任何应用程序I/O性能的前提下,提高两个应用的整体I/O性能。