论文部分内容阅读
互联网自诞生之日起,就以惊人的速度改变世界,云计算、大数据产业应运发展,这背后离不开数据中心的支持,数据中心在当今社会发挥非常重要的核心作用,已融入我们的生活。数据中心作为一个大量程序共同运行的载体,已经从理想变为现实。大型数据中心资源平均利用率仅在10%到50%之间,为了提高数据中心资源利用率,通常采用的方法是负载聚合(workload consolidation),是指在单个服务器节点上共同运行多个程序,超过60%的数据中心运营商会采用负载聚合。此外,数据中心程序内容具有多样性,按照性能指标可以分为以IPC(Instruction Per Cycle)为度量方法的批量程序、以响应时间为度量方法的延迟关键程序(Latency Critical Program),而对于高优先级、延迟敏感程序超出服务质量要求的性能下降是不能被接受的。为了保证延迟敏感程序的性能,同时实现负载聚合,当前很多研究是将延迟敏感程序与批量程序在一个服务器节点上共同运行,当前工作提出很多资源配置、程序调度策略,实现延迟敏感程序性能与系统资源利用率二者之间的权衡。然而,数据中心很多应用程序正处在由批量程序向延迟敏感程序的转型期,并且数据中心的程序架构正重新设计,整体且功能强大的服务正更新为上百个松散耦合的微服务,每个微服务具有微秒级延迟限制。因此,将一个延迟敏感程序与批量程序共同运行的方法有很多不足,比如:与当前数据中心程序类型的比例不符,严重限制了在数据中心运行程序的类型,阻碍程序灵活性调度。而目前针对支持多个延迟敏感程序聚合执行的研究刚刚开始。研究发现,近似计算以其精度损失为代价来获取程序性能提升的特性,可以解决延迟敏感程序的延迟问题。由于数据中心很多延迟敏感程序比如机器学习、人脸识别、图像处理属于可以近似计算的程序,这类程序对输出质量有高容忍性,当程序输出精度降低时,输出质量的差异是用户在视觉和听觉上不可察觉的,符合近似计算的特性。因此,可将延迟敏感程序细分为可近似延迟敏感程序和不可近似延迟敏感程序。数据中心运营商可以与用户协商程序输出的精度范围,获得程序源代码,利用近似计算的特性,减少程序中某些循环迭代或者指令的执行,维持程序原有的执行时间。所以,本文提出一种利用近似计算保证多个延迟敏感程序性能的方法,旨在通过近似计算将多个延迟敏感程序在同一服务器节点上共同运行,提高系统资源利用率的同时,保证多个延迟敏感程序的性能,实现系统资源利用率、多个延迟敏感程序性能、灵活性程序调度三者之间的权衡,该方法主要有以下工作:第一,设计基于LLVM编译器的近似计算方法。利用LLVM编译器,通过修改优化器中转换循环的自然循环规范化(loop-simplify)实现近似计算软件级循环穿孔,设置控制近似程度的穿孔率,穿孔率由N表示,N为大于1的整数,并设置三种质量管理办法。通过实验证明,近似计算软件级循环穿孔可以减少程序执行时间,程序性能变化率与穿孔率有直接关系,该近似计算方法也可以维持程序原有的执行时间。第二,提出一种利用近似计算保证多个延迟敏感程序性能的方法,该方法基于近似计算技术的研究。该方法将多个延迟敏感程序在同一服务器节点上共同运行,即可近似和不可近似延迟敏感程序共同运行;利用Cgroups资源管理机制限制可近似延迟敏感程序使用的资源,使不可近似延迟敏感程序在充足的资源环境内执行,保证其性能;可近似延迟敏感程序在限制的资源内运行,设置动态调整机制,通过近似计算方法来维持程序原有的执行时间。实验表明:可以通过在同一服务器节点上共同运行可近似和不可近似延迟敏感程序的方法来提高系统资源利用率,同时保证多个延迟敏感程序性能,有效解决将一个延迟敏感程序与批量程序共同运行的弊端。通过以上工作,本文以保证多个延迟敏感程序性能和提高系统资源利用率为研究目标,通过LLVM编译器实现可近似程序自动循环穿孔,减少程序执行时间;通过将多个延迟敏感程序在同一服务器节点上共同运行,利用近似计算技术保证多个延迟敏感程序性能,并提高系统资源利用率。最终,实现延迟敏感程序性能保证、系统资源利用率提高、程序灵活性调度三者之间的权衡。