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
32
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
920
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
hiroisojp
0
120
オンライン広告入札システムと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
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
philipschwarz
PRO
0
160
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
740
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
230
プロダクト横断分析に役立つ、事前集計しないサマリーテーブル設計
hanon52_
3
530
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
6
1.5k
2ヶ月で生産性2倍、お買い物アプリ「カウシェ」4チーム同時改善の取り組み
ike002jp
1
110
Cursor/Devin全社導入の理想と現実
saitoryc
28
21k
Orleans + Sekiban + SignalR でリアルタイムWeb作ってみた
tomohisa
0
220
RuboCop: Modularity and AST Insights
koic
2
2.3k
Bedrock × Confluenceで簡単(?)社内RAG
iharuoru
1
110
KawaiiLT 登壇資料 キャリアとモチベーション
hiiragi
0
160
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.1k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.7k
A better future with KSS
kneath
239
17k
Six Lessons from altMBA
skipperchong
28
3.7k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Done Done
chrislema
184
16k
The Cult of Friendly URLs
andyhume
78
6.3k
The Language of Interfaces
destraynor
157
25k
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/