mrdrivingduck / paper-outline

🔍 To record the papers I have read.
24 stars 0 forks source link

AutoFDO: Automatic Feedback-Directed Optimization for Warehouse-Scale Applications #25

Open mrdrivingduck opened 1 year ago

mrdrivingduck commented 1 year ago

45290.pdf

用于简化 FDO (Feedback Driven Optimization) 使用的工具。

mrdrivingduck commented 1 year ago

Introduction

FDO:使用代码的运行时行为来指引编译优化。性能提升数量级:10%~15%。在数据中心中,这个级别的性能提升能够省下数以千计的 CPU。然而,FDO 因为过程繁琐而很难投入实际使用。传统 FDO 的流程包含:

  1. 在编译程序时插入采集代码
  2. 使用具有代表性的负载,运行编译后的程序,产生 profile
  3. 使用 profile 重新编译代码

基于以上步骤,FDO 较难铺开的原因:

  1. 程序代码量大,并且性能攸关的代码位置通常会剧烈变化
  2. 由于安全限制,保存和访问数据很困难
  3. 插入 profiling 采集代码之后的程序运行会变得很慢,导致其运行时行为和未插桩前的程序迥然不同

基于这三个限制,想使用 real-world 的业务负载来进行 FDO 很难做到。

Google 提出了本文的 AutoFDO,它能够在生成环境的机器上采集硬件指标,并使用这些指标来编译下一个 release 版本。由于在生产环境上采集的数据与最新的代码之间有一定过时,AutoFDO 使编译器能够容忍一定的过时,能够达到 85% 传统 FDO 的性能。但实际使用下来,性能基本完全等同于传统 FDO。