如何为 Quarkus App 生成 PGO 优化的本机可执行文件?

Par*_*ras 2 graalvm quarkus graalvm-native-image quarkus-native

我有一个作为 REST API 公开的 Quarkus 应用程序。我需要为该应用程序生成配置文件引导的优化本机映像。

我查看了 Quarkus 文档,但找不到太多内容。有人生成过相同的吗?

我在本地计算机上安装了 GraalVM Enterprise 版本。

要生成正常的本机映像,请使用以下命令:

./mvnw package -Dnative

Ali*_*nko 9

一般来说,生成优化的可执行文件包括以下步骤:

\n
    \n
  1. 构建一个仪表化应用程序

    \n
    native-image --pgo-instrument MyApp\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 运行已检测的可执行文件并向其应用工作负载以生成配置文件:

    \n
    ./myapp\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
\n

这将在工作目录中生成一个default.iprof 文件。工作负载的质量(执行所有相关的代码路径)以及为应用程序提供足够的时间来收集配置文件对于拥有完整的分析信息并因此获得最佳性能至关重要。请注意,直到应用程序关闭后,配置文件才会出现\xe2\x80\x99。

\n
    \n
  1. 构建优化的可执行文件。将自动选取具有默认名称和位置的配置文件,或者您也可以将其传递:

    \n
     native-image --pgo=default.iprof MyApp\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
\n

现在,对于Quarkus 应用程序并从 Maven 构建,您可以做的是为这些步骤创建相应的配置文件,例如:

\n
    <profile>\n   <id>instrumented</id>\n    \xe2\x80\xa6\n   <properties>\n    \xe2\x80\xa6\n    <quarkus.native.additional-build-args>--pgo-instrument</quarkus.native.additional-build-args>\n   </properties>\n   </profile>\n
Run Code Online (Sandbox Code Playgroud)\n

\n
    <profile>\n   <id>optimized</id>\n    \xe2\x80\xa6\n   <properties>\n    \xe2\x80\xa6\n    <quarkus.native.additional-build-args>--pgo=${project.basedir}/default.iprof</quarkus.native.additional-build-args>\n   </properties>\n   </profile>\n
Run Code Online (Sandbox Code Playgroud)\n

或者,同样的操作也可以从命令行运行,例如:

\n
./mvnw package -Dnative -Dquarkus.native.additional-build-args=--pgo=default.iprof\n
Run Code Online (Sandbox Code Playgroud)\n