基于生成式对抗网络的高性能IO trace的精准生成研究文献综述
2020-04-15 15:32:03
1.1研究目的及意义
在超级计算机迅速发展的今天,计算能力得到大幅度的提升,然而受限于投资和复杂度,IO性能则相对发展缓慢[8]。因此,IO性能已经成为众多高性能运算系统和依赖于并行文件系统的大数据分析的应用程序的性能瓶颈,提升应用程序的IO性能已经势在必行。目前,主要是通过分析IO Trace来查找IO性能效率低下的根本原因,但是由于多个IO层和多种IO模式,并行系统比较难获取到可扩展的、可分析的IO Trace[2]。
作为当前发展最迅速的深度学习生成模型,生成式对抗网络已经成功应用于图像生成、自然语言处理等领域[11]。生成式对抗网络给机器学习引入了对抗的概念,由辨别器和生成器两种神经网络组成,两者在训练过程中相互博弈,不断调整参数,增强自己的辨别能力和生成能力[1,11]。它最大的优势在于不仅可以训练任何一种神经网络充当生成器和辨别器,而且只要是可微分函数都可以用于构建辨别器和生成器,并且从实际结果来看,它可以产生更好的生成样本。但是目前,离散数据的生成对于它来说还是很困难的。
本课题提出利用生成式对抗网络框架来精准生成IO Trace。最终希望找到生成式对抗网络有效生成IO Trace等离散数据的解决方案,通过学习较小规模的IO Trace,利用机器生成大规模、可重现的IO Trace。
1.2国内外的研究现状分析
目前,在IO性能分析领域,获取IO Trace的方法主要分为依赖于源代码获取和不依赖于源代码获取两种类型,其中依赖于源代码的IO Trace获取方法主要有两种[2]:
动态获取IO Trace,例如ScalaIOTrace[9]。它需要与原始的应用程序一起运行,收集详细的IO访问信息。但是这种技术的系统开销是非常大的,特别是对于大规模生产的高性能计算系统。
静态获取IO Trace,在程序编译时收集Trace信息,可以在不实际执行程序的情况下执行,但是它需要访问程序源,这可能对某些应用程序不可用。并且可能无法捕获实时运算系统的IO Trace[2]。
不依赖于源代码获取的方法主要有Frank[7]等在2017年的IEEE会议上提出的ScalaIOExtrap[2,7]工具,它可以在不需要源代码的情况下,获得大型系统中运行的应用程序的无损IO Trace。它首先通过ScalaIOTrace收集一组系统在相对较少节点中的可扩展的无损IO Trace,然后分析Trace文件集,包括列数、数据变化范围等,针对不同文件的不同格式,运用特定的方法推算出多节点、大规模系统的IO Trace,并通过IO重现验证IOTrace的准确性。
本课题提出的方案与ScalaIOExtrap的思想相似,同样不依赖于源代码,可以避免系统开销过大以及需要访问程序源等缺点,但是本方案是通过机器生成,比推算代码生成方法的适用性、兼容性、容错率以及生成效率会有所提升。