JVMの最適化オプションを効かせるためのメモ。
Embulk
正
$ embulk run -b embulk_bundle config.yml
$ embulk -J-Xmx30g run -b embulk_bundle config.yml
誤
$ embulk -b embulk_bundle run config.yml
- これでも動くが最適化オプションが効かない。
最適化オプションが効いているかどうかの確認方法
正
$ pgrep -fl embulk
6337 java -XX:+AggressiveOpts -XX:+UseConcMarkSweepGC 〜
誤
$ pgrep -fl embulk
6338 java -XX:+AggressiveOpts -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xverify:none 〜
-
UseConcMarkSweepGC
があれば最適化オプションが効いており(実行中のスループットが高い)、TieredCompilationとTieredStopAtLevelがある場合は最適化オプションが効いていない。- 後者は起動時間短縮する開発向け。
- embulk preview 〜の場合も後者となる。
Digdag
正
$ digdag -J+O run --project workflow my_workflow.dig
誤
$ digdag run --project workflow my_workflow.dig
- digdagの後ろに「-J+O」を付けないとDigdag自体の最適化オプションが動かない。
- DigdagからEmbulkを動かしている場合のEmbulkは無関係。
最適化オプションが効いているかどうかの確認方法
正
$ pgrep -fl digdag
8796 java -Dio.digdag.cli.launcher=selfrun -XX:+AggressiveOpts -XX:+UseConcMarkSweepGC 〜
誤
$ pgrep -fl digdag
8797 java -Dio.digdag.cli.launcher=selfrun -XX:+AggressiveOpts -XX:TieredStopAtLevel=1 -Xverify:none 〜
- Embulkと確認方法は同じ