Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
Search
hiroisojp
June 26, 2021
Programming
0
27
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
Optuna Meetup #1 の発表資料です。
(SlideShareより移行)
hiroisojp
June 26, 2021
Tweet
Share
More Decks by hiroisojp
See All by hiroisojp
Foreign Function & Memory API ( FFM API )を用いたNativeライブラリ呼び出しと既存ライブラリの比較 ( JJUG CCC 2023 Fall )
hiroisojp
1
870
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
hiroisojp
0
100
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
hiroisojp
0
26
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
hiroisojp
0
12
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例 ( JJUG CCC 2018 Spring )
hiroisojp
0
17
Other Decks in Programming
See All in Programming
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
260
Jakarta EE meets AI
ivargrimstad
0
780
楽しく向き合う例外対応
okutsu
0
760
DevNexus - Create AI Infused Java Apps with LangChain4j
kdubois
0
150
読まないコードリーディング術
hisaju
1
140
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
160
Datadog Workflow Automation で圧倒的価値提供
showwin
1
330
PRレビューのお供にDanger
stoticdev
1
250
Learning Kotlin with detekt
inouehi
1
220
Webフレームワークとともに利用するWeb components / JSConf.jp おかわり
spring_raining
1
150
やっと腹落ち「スプリント毎に動くモノをリリースする」〜ゼロから始めるメガバンクグループのアジャイル実践〜
sasakendayo
0
230
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
190
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Navigating Team Friction
lara
183
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Typedesign – Prime Four
hannesfritz
41
2.5k
GitHub's CSS Performance
jonrohan
1030
460k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
660
For a Future-Friendly Web
brad_frost
176
9.6k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
A designer walks into a library…
pauljervisheath
205
24k
Transcript
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential JVMパラメータチューニングにおける Optunaの活用事例
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 1 この資料について - JJUG CCC 2021 Springの発表内容のうち、Optunaにフォーカスした内容になります - フォーカス=Optuna部分のサンプルコードを拡充 - Optunaの内容は主に利用者目線の話が中心です - チューニングの背景やGCログの話にも興味があれば以下のスライドを参照ください https://www.slideshare.net/hiroiso/zgc
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 2 アジェンダ 1.自己紹介 2.チューニング対象について(ZGC) 3.Optunaを用いたZGCパラメータチューニング 4.利用した感想
ULS 3 Copyright © 2011-2021 UL Systems, Inc. All rights
reserved. Proprietary & Confidential 自己紹介
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 4 磯田 浩靖 - 所属:ウルシステムズ株式会社 - 連絡先:
[email protected]
- twitter:hiroisojp - Javaエンジニア、認定スクラムマスタ - AWS DeepRacer(強化学習)の大会とか出てます 栗原 秀馬 - 所属:SMN株式会社 - 連絡先:
[email protected]
- 競技プログラミングにハマっている。Atcoderで青色です 自己紹介
ULS 5 Copyright © 2011-2021 UL Systems, Inc. All rights
reserved. Proprietary & Confidential チューニング対象について(ZGC)
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 6 ZGC = Javaのガベージ・コレクション(GC)のうちの一つ ZGCが対象システムにマッチするかを検証する過程において、 JVMパラメータチューニングを行い、Optunaを用いた ZGCは次の目標を達成するように設計されたGC - サブミリ秒(1ミリ秒以下)の最大一時停止時間 - 一時停止時間がヒープサイズに応じて増加しない - 8MBから16TBのヒープを処理 チューニング対象であるZGCは低レイテンシなGC https://wiki.openjdk.java.net/display/zgc/Main
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 7 Logicad = オンライン広告入札システム - 秒間40万件のリクエストを処理 - 3〜5ms以内のレスポンスが求められる - 99thだとスパイクして75msかかる時がある(これをZGCで解決できないか) 対象システムにおけるZGCへの期待
ULS 8 Copyright © 2011-2021 UL Systems, Inc. All rights
reserved. Proprietary & Confidential Optunaを用いたZGCパラメータチューニング
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 9 課題: JVMパラメータの最適な組み合わせがわからない ZGC用のJVMパラメータはそこそこあるため膨大な組み合わせ から良さそうな組み合わせを見つけるのは大変 https://wiki.openjdk.java.net/display/zgc/Main
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 10 - Python製のハイパーパラメータ最適化フレームワーク - パラメータ値の試行錯誤を自動化し、良い性能が出る値を自動的に発見 - 枝刈り機能 - 見込みのない組み合わせは処理を打ち切り、効率的に探索を進める機能 - https://github.com/optuna/optuna 課題: JVMパラメータの最適な組み合わせがわからない 良い組み合わせを探索するために今回はOptunaを利用
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 11 Optuna ハイパーパラメータ最適化 手動で値の組み合わせを指定するのではなく、 自動で組み合わせを試して最適なものを探索する https://www.slideshare.net/pfi/optuna 人が1つ1つ組み合わせを決める Optunaが組み合わせを決めてくれる
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 12 Optuna 枝刈り機能 見込みのない組み合わせは処理を途中で打ち切られ、 短時間で効率的に探索を進めることができる 性能がでないと予測 される組み合わせも 長時間実施 性能がでないと予測 される組み合わせは 途中で打ち切られる 枝刈りなし 枝刈りあり
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 13 組み合わせ検証サイクルのイメージ OptunaでJVMパラメータの組み合わせ、範囲を指定して ベンチマークを自動化 Trial 1 Xmx=32GB ParallelGCThreads=5 . . Trial 2 Xmx=40GB ParallelGCThreads=3 . . Trial 99 Xmx=80GB ParallelGCThreads=10 . . ・・・
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 14 OptunaでJVMパラメータの組み合わせを決める OptunaでJVMパラメータの組み合わせを 決定し、起動スクリプトに渡す 利用するJVMパラメータの値を範囲指定 しておくとOptunaが選択してくれる 選択されたJVMパラメータの組み合わせで Javaアプリケーションを起動、メトリクスを 収集する(次ページで詳細化)
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 15 アプリサーバを起動、メトリクスを取得 OptunaでJVMパラメータの組み合わせを 決定し、起動スクリプトに渡す 起動したらメトリクスを定期的に収集 (次ページで詳細化) Optunaで選択されたJVMパラメータの 組み合わせでJavaアプリケーションを起動
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 16 Optunaへのメトリクスを受け渡す 定期的にアプリサーバからメトリクスを 取得してOptunaに渡す メトリクスをJMX経由で取得 枝刈りする場合 Optuna側で判断してほしい場合は trial.should_prune()を用いる メトリクスをOptunaに渡す 例はQPS 5分間平均
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 17 Javaからメトリクスを取得する例 Javaのメトリクス収集ライブラリを用いて JMXなど外部サービスで取得できるようにする (メトリクス収集=Micrometerなど) スループット計測用 処理時間計測用 QPS1分間平均、5分間平均など
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 18 Optunaへのメトリクスの受け渡しの仕組み アプリ起動〜メトリクス取得を繰り返して、 JVMパラメータの組み合わせごとの結果を記録 結果はRDBに保存され、グラフでも確認できる 繰り返し
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 19 OptunaでJVMパラメータの組み合わせを探索する どのJVMパラメータの影響が大きいかを可視化したり、 組み合わせの結果をまとめてみれる どのJVMパラメータ が寄与しているか 5分間平均の変遷 (途中経過)がわかる QPS 5分間平均の性能の例
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 20 1つのパラメータに着目した例 例えば、このアプリケーションでは ヒープは単純に増やせば増やすほど効果がありそう 32GB〜80GB 縦軸:QPS チューニング対象の指標 高いほどよい
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 21 例えば、このアプリケーションでは -XX:ZFragmentationLimitはデフォルト値(25)近辺が良さそう 1つのパラメータに着目した例 1〜100 縦軸:QPS チューニング対象の指標 高いほどよい
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 22 パラメータ間の関連を確認したい場合 等高線としてみることができる パラメータ間の関連に着目した例 色が濃い=性能が悪い部分 色が薄い=性能が良い部分 点=あるTrialでの値
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 23 -XX:ZMarkStackSpaceLimit、-XX:ZFragmentationLimitは ともに低い値の組み合わせのときに性能が良さそう パラメータ間の関連に着目した例 色が濃い=性能が悪い部分 色が薄い=性能が良い部分
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 24 ヒープサイズ、-XX:ZMarkStackSpaceLimitは あまり相関がなく、ヒープサイズが大きければ大きいほど性能が良さそう パラメータ間の関連に着目した例 色が薄い=性能が良い部分がヒ ープが大きい時にまんべんなく 現れている
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 25 今回実施したパラメータチューニングのおさらい OptunaでJVMパラメータの組み合わせ・検証を自動化 グラフ、数値からめぼしい組み合わせを探索 Trial 1 Xmx=32GB ParallelGCThreads=5 . . Trial N Xmx=80GB ParallelGCThreads=20 . . ・・・ ・・・ グラフ・数値から めぼしい組み合わせを探す
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 26 ZGCのパラメータチューニングによる効果 デフォルトのJVMパラメータと各種JVMパラメータを設定した ものはきちんと性能が変わる = JVMパラメータをチューニングする意味はある JVMパラメータ設定あり デフォルト設定
ULS 27 Copyright © 2011-2021 UL Systems, Inc. All rights
reserved. Proprietary & Confidential 利用した感想
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 28 - APIがわかりやすく、深く悩まずとも利用できる - メンバーにコードを見せてもだいたいどんなチューニングをしたか理解して もらえた - 試験の自動化ツールとして使い勝手がよい - 結果のDBへの保存や、並列実行時の面倒さをOptunaが吸収してくれた - 周辺ツールが整っているのも嬉しい - ダッシュボードでブラウザから試験の進捗確認 - ビジュアライザーで図表ベースの結果判断 - いろいろ応用が効きそう、アプリのチューニングにも使えそう - 不要な入札を防ぐ枝刈りロジックの順序入れ替えにも適用できそう 利用した感想
ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 29 お問い合わせ先 mailto:
[email protected]
https://www.ulsystems.co.jp/