《主会场_任玉鑫_基于eBPF的全系统PGO优化方案_报告PPT.pdf》由会员分享,可在线阅读,更多相关《主会场_任玉鑫_基于eBPF的全系统PGO优化方案_报告PPT.pdf(20页珍藏版)》请在三个皮匠报告上搜索。
1、基于eBPF的全系统PGO优化方案第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安任玉鑫,华为,openEuler Valuable ProfessionalPGO:Profile Guided Optimization 有效的编译优化手段核心思想 数据越多,优化效果越好 数据约体现应用特性,优化针对性越强第 三 届 e B P F 开 发 者 大 会PGO背景工作流程 编译器在源代码插桩 运行插桩后的应用,并采集数据 根据采集到的数据,尝试相应优化技术 不断迭代重复,直到优化效果达标第 三 届 e B P F 开 发 者 大 会PGO背景
2、采集与优化的例子第 三 届 e B P F 开 发 者 大 会PGO背景函数调用频率函数调用依赖分支跳转情况数据采集代码布局函数内联循环展开优化手段 为什么需要PGO 编译阶段没有足够的应用运行时信息 很多优化不通用,需要在具体应用上尝试 PGO优势 极致性能 确定性优化,针对应用定制 自动化,避免手动尝试各种配置 PGO劣势 优化只针对单个应用环境,每次部署都需要重新优化 数据采集不全面,无法覆盖所有代码路径和程序输入 只能采集优化单个二进制,无法优化动态库第 三 届 e B P F 开 发 者 大 会PGO背景 无法采集优化应用间、应用与系统之间的交互,难以实现全系统的性能最优系统性能 交
3、互 中断 系统调用 通信 仅仅依靠编译器无法采集优化第 三 届 e B P F 开 发 者 大 会PGO背景 容器容器是云原生计算的基础设施,通过轻量、弹性、模块化等实现高资源利用率和高性能。第 三 届 e B P F 开 发 者 大 会容器IO启动容器OverlayFSLocal FS主机后端镜像镜像read/mmapRoot FS NamespaceImageLayersContainer PlatformRoot FS容器启动是重要性能指标现有方案是全量加载,但很多数据不需要,造成性能浪费AI时代,问题尤为凸显。Pytorch启动达分钟级!第 三 届 e B P F 开 发 者 大 会容
4、器IO启动流程容器主机OverlayFSLocal FS后端阶段 1:Deploy()获取镜像元数据阶段 2:Running()创建容器运行时,例如cgroup阶段 3:Ready()启动容器内服务应用LazyLoading镜像MetadataData ChunkData ChunkData Chunk.Page CachePrefetch Cache第 三 届 e B P F 开 发 者 大 会容器IO启动问题现有方案时延分解I/O行为DeployRunningReadyTotalI/O Amp.Net.Pkg.Full Image124.6s1.6s1.7s127.9s47.5X573KC
5、RFS1.8s1.2s24.1s27.1s1.8X99KNydus0.8s2.9s21.4s25.1s1.6X90KDADI0.6s2.6s17.0s20.2s3.1X171KDADI-Trace0.7s2.2s17.1s20.0s3.0X166K现有方案不足懒加载虽然加速了“Deploy”阶段,但是在“Ready”阶段引入大量开销IO放大和频繁网络IO带来不必要的性能开销性能瓶颈IO的数据量和次数操作系统IO处理和page cahe性能低效第 三 届 e B P F 开 发 者 大 会容器IO启动问题容器主机OverlayFSLocal FS后端阶段 1:Deploy()获取镜像元数据阶段
6、2:Running()创建容器运行时,例如cgroup阶段 3:Ready()启动容器内服务应用LazyLoading镜像MetadataData ChunkData ChunkData Chunk.Page CachePrefetch CachePGO无法优化多应用、多层次、多节点交互第 三 届 e B P F 开 发 者 大 会全系统级PGO方案进程调度抢占系统调用依赖IO请求分布系统数据行为采集文件系统网络协议栈内核优化内存布局多核并行应用优化第 三 届 e B P F 开 发 者 大 会基于eBPF全系统级PGO方案进程调度抢占系统调用依赖IO请求分布系统数据行为采集文件系统网络协议栈