配置文件引导优化(PGO)提高了下一代SAP NetWeaver的性能

自我介绍我是 安基特阿斯塔纳 我是后端C++编译器的程序管理器。在我最后一次 博客 我介绍了什么 轮廓引导优化(PGO) )都是关于一个练习,其中包括 NBody示例应用程序 .  在这个博客中,我想谈谈如何在SAP中使用PGO来为客户提供下一代性能 SAP NetWeaver . 从一点历史开始 SAP NetWeaver 完成人 SAPs Microsoft平台组。 这个 SAP Microsoft平台 负责Microsoft Windows中的特定技术 SAP的内核。 这一努力尤其是由 迈克·古塞夫 杰森卡夫卡 , 两位SAPs微软平台组的资深成员也很友好地为这个博客提供了内容。

null

说到做到,让我们开始建立一些关于 SAP NetWeaver 在我们了解PGO是如何以及为什么被引入 SAP NetWeaver .

SAP NetWeaver

SAP NetWeaver 是一个开放平台,它提供了一套用于运行关键业务应用程序和集成人员、流程和信息的综合技术。此外, SAP NetWeaver 通过提供服务供应、组合(服务消费)和治理的能力作为SAP的业务流程平台提供的技术基础。

在上运行的应用程序的核心 SAP NetWeaver 是SAP NETWever应用服务器(AS),它是整个SAP软件栈的核心基础。SAP NetWeaver应用服务器(AS)有两种版本:ABAP和Java。AS作为抽象层,处理从ABAP/Java应用程序到操作系统和数据库的底层组合的调用。每个应用服务器都由一组进程组成。这些进程具有以下角色之一(调度程序、工作人员或后台)。

一个应用服务器只有一个调度程序进程和多个工作进程,这些进程是负载分配所必需的。Dispatcher进程负责派生其他进程,并将请求从前端分派到空闲工作进程。后台进程是一个特殊的工作进程。这些进程中的每一个都共享相同的应用程序代码(即从同一个二进制文件派生出来的代码),称为SAP内核。

为什么SAP NetWeaver使用配置文件引导优化(PGO)?

SAP内核的主数据循环设计为单线程。虽然有专门的线程用于信号处理和高精度定时,但内核本身是单线程的。核心由几个模块组成,这些模块主要用C语言编写,跨越数百万行代码。新一代内核的设计不同,特别是考虑到多核机器。尽管如此,大多数客户群使用上述内核体系结构运行SAP NetWeaver产品。此外,单线程内核由极难重构的代码基组成,并且考虑到现代CPU的单核性能增长非常缓慢(如果有的话),使用PGO是一个逻辑上的低成本步骤,目的是在不重新设计和可能破坏当前软件的情况下获得更高的性能。

概要文件引导优化(PGO)是如何集成到SAP NetWeaver中的

在深入研究如何进行之前,让我们回顾一下概要文件引导优化(Profile-Guided Optimization,PGO)是如何工作的。基本上有三个步骤需要PGO的应用程序(仪器,培训和优化)如图1所示。记住“仪器”和“优化”步骤需要 ‘LTCG:PG仪器’ ‘LTCG:PG优化’ 分别构建(有关更多信息,请查看我的上一个 博客 后)。

图片[1]-配置文件引导优化(PGO)提高了下一代SAP NetWeaver的性能-yiteyi-C++库 图1:PGO应用程序的步骤

在将PGO作为构建过程的一部分时,SAP NetWeaver团队考虑了以下两个目标:

  • 维护当前的构建过程! 第一个目标是必不可少的,可以普遍适用于任何产品。sapnetweaver团队拥有庞大的开发人员基础,他们在很大程度上依赖于一个工作内核,该内核具有自动夜间构建产生的最新更改。PGO进程作为每晚构建的一部分被启用。作为故障保护,如果任何PGO步骤失败(仪器、训练或优化),构建将恢复以提供a/O2构建。或者,如果 任何 PGO步骤 我们应该 失败时,也可以将生成还原回/LTCG生成 在这个过程中保留了大部分的性能相比,一个/氧气建设。

  • 自动化!自动化!自动化! 正如我所提到的,sapnetweaver的PGO过程被封装在SAP内核的自动夜间构建过程中。尽管不是必需的,但sapnetweaver团队采用了自动化PGO过程的方法。这背后的主要原因是,SAP NetWeaver团队不希望有一个专门的人员/团队负责培训应用程序服务器并将生成的性能概要文件(.pgd文件)移动到构建过程中。此外,这一目标的另一个重要因素是,构建过程是由另一个部门监督的,而这个部门不熟悉编译器/链接器错误分析或维护应用程序服务器培训场景。

    再次澄清,除非您的代码库在日常基础上有显著差异(即代码库中大量的搅动),否则您不需要在PGO过程中执行“工具”、“训练”步骤。优化的PGO构建可以重复构建(不需要插装和训练步骤),直到源代码库与上次对应用程序进行PGO训练时有很大的差异。对于大型开发团队,理想的工作流是让一个开发人员执行PGO并将培训数据(.pgd)检查到源存储库中。团队中的其他开发人员应该能够同步他们的代码存储库,并使用培训数据文件直接构建PGO优化的构建。当计数在一段时间内过时时,应用程序将被PGO重新训练。

通过对SAP内核进行PGO化观察到的性能提高

通过对应用程序进行PGO化所观察到的性能增益与应用程序的PGO培训程度成正比。换言之,充分利用PGO背后的秘密在于选择正确的培训方案。好的培训场景通常是按照现实生活中以性能为中心的用户场景建模的。在选择一个过于专业化或过于笼统化的培训方案之间,有一个很好的平衡。如果它过于专业化,您将只优化少数用例中使用的代码,如果它过于通用,您可能会错过与大多数客户相关的最佳点。

SAP的微软平台组选择了 SAP的标准应用程序基准 作为训练场景。  基准测试模拟了数千个用户并行执行典型的业务事务。基准测试将大量的CPU密集型工作负载放到应用服务器上,并在应用程序中执行相关的代码路径 SAP内核 在这个过程中PGO训练他们。

绩效以 SAP应用程序性能标准(SAPS)单元 ,它基本上描述了应用服务器每小时可以处理多少个业务事务。

使用SAP内核 /LTCG公司 作为性能比较的基准,并使用VS2010工具集。通过以下方式观察到的性能增益 铂族化 SAP内核高达20%,在某些情况下甚至更高。

总结

这将为你们提供一个如何使用PGO来制造 SAP NetWeaver更高性能 . 再次强调,如果您的产品的核心性能为中心的场景是本机的,并且瓶颈是CPU绑定的,那么PGO值得一试。在这些场景中,PGO可以提高以用户为中心的重要场景子集的性能,而无需更改应用程序的源代码。

在我未来的博客中,我将尝试报道更多关于使用PGO的产品的案例研究,并在博客上进行跟进 “引擎盖下的PGO” . 所以请继续关注!此外,如果你想让我们写一些其他PGO相关内容的博客,请让我们 我知道。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享