Contenu connexe
Similaire à オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring ) (20)
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
- 2. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 1
アジェンダ
1.自己紹介
2.この資料のねらい
3.ZGCへの期待
4.ZGCのパラメータチューニング
5.本番環境におけるZGCとG1GCの比較
6.まとめ
- 3. ULS 2
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
自己紹介
- 4. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 3
磯田 浩靖
- 所属:ウルシステムズ株式会社
- 連絡先:hironobu.isoda@ulsystems.co.jp
- twitter:hiroisojp
- Javaエンジニア、認定スクラムマスタ
- AWS DeepRacer(強化学習)の大会とか出てます
栗原 秀馬
- 所属:SMN株式会社
- 連絡先:shuma_kurihara@so-netmedia.jp
- 競技プログラミングにハマっている。Atcoderで青色です。
自己紹介
- 5. ULS 4
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
この資料のねらい
- 6. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 5
この資料のねらい
- ねらいとするところ
- ZGCパラメータチューニング手法を紹介
- 資料を読んだ人がチューニングできる一助としたい
- ZGCで実際にあるシステムに適用した結果を共有
- こういうシステム特性だとこういう結果になったという一例
- ねらいとしないところ
- ZGC自体の詳細な解説
- 過去のJJUGの発表を参考にしてください
- https://speakerdeck.com/line_developers/zgc-in-future-line-hbase
- https://speakerdeck.com/yokotaso/introduction-to-modern-gc
- 7. ULS 6
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
ZGCへの期待
- 8. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 7
ZGCは次の目標を達成するように設計されたGC
- サブミリ秒の最大一時停止時間
- 一時停止時間がヒープサイズに応じて増加しない
- 8MBから16TBのヒープを処理
ZGCは低レイテンシなGC
https://wiki.openjdk.java.net/display/zgc/Main
- 9. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 8
Logicad = オンライン広告入札システム
- 秒間40万件のリクエストを処理
- 100ms以内のレスポンスが求められる
対象システムは高スループット & 低レイテンシ が求められている
- 10. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 9
定期ロード
リアルタイム
入札サーバ
Java
(netty)
JDK14
対象システムのアーキテクチャ概要
SSP
nginx
入札サーバ
入札サーバ
入札サーバ
入札サーバ
入札サーバ
Aerospike
(KVS)
RDS
Redis
gRPCサーバ
各種データストア
X
X
X
X
X
X
入札サーバ
入札サーバ
nginx
本日お話する
のはココ
- 11. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 10
広告配信はオークション形式で実施
高スループット & 低レイテンシが求められているワケ
AD
WebサイトA に、XYZさんが来ました。
誰か広告を出したい方いませんか?
Webサイト
SSP
事業者
DSP3
DSP2
DSP
1
3円
2円
1円
ユーザID
XYZ
訪問通知
入札リクエスト
&レスポンス
本日お話する
のはココ
- 12. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 11
入札に勝つと広告を表示する権利を得ることができる
表示された広告に応じて売上が発生するビジネスモデル
RTB(リアルタイムビッディング)の概要
AD
WebサイトA に、XYZさんが来ました。
誰か広告を出したい方いませんか?
Webサイト
SSP
事業者
DSP3
DSP2
DSP
1
3円
2円
1円
訪問通知
①広告配信
リクエスト
本日お話する
のはココ
WIN
②広告配信レスポン
ス
③Webサイトに
広告表示用の
URLを設定
ユーザID
XYZ
- 13. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 12
タイムアウトが発生するとオークションに参加できない
– オークションの開催期間はわずか100ミリ秒
性能要求を満たせないと会社の存続に関わる
AD
WebサイトA に、XYZさんが来ました。
誰か広告を出したい方いませんか?
Webサイト
SSP
事業者
DSP3
DSP2
DSP
1
3円
2円
1円
訪問通知
入札リクエスト
&レスポンス
本日お話する
のはココ
タイムアウトが多く発生すると
他のDSPに権利をもっていかれて、
ビジネスとして成り立たない!
ユーザID
XYZ
- 14. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 13
レイテンシの低減
要求〜結果が返ってくるまでの時間
をできるだけ短くする
スループット向上
単位時間あたりの処理能力を高めて、
よりたくさん捌く
同時にたくさん
捌くことができること
悩める性能要求
Client Server
Client
Client
タイムアウトを減らして売上を確保するためには・・・
両方を経済合理的な範囲で最適化する
Client Server
1回あたりの処理が
高速であること
- 15. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 14
ネットワークレイテンシ
- ネットワークレイテンシ
- 入札処理のレイテンシ
– 最適な広告を選択する処理
オークションに関わるレイテンシ
入札処理のレイテンシ
SSP
事業者
DSP
最大 100ミリ秒
オークション開始 JSON受信
32ミリ秒
オークション終了 JSON返却
32ミリ秒
- 16. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 15
ネットワークレイテンシ
ネットワークレイテンシは一定ではない
– 伝送距離の長さによって決まる
通信相手 往復時間
東京~東京 約1~2ミリ秒
東京〜大阪 約7~10ミリ秒
東京~台湾 約65ミリ秒
東京〜西海岸 約120ミリ秒
東京〜ドイツ 約210〜290ミリ秒
ただし、オークションの開催期間はわずか100ミリ秒
- 17. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 16
入札処理のレイテンシ
入札処理が加わるとさらにタイムアウトは増える
– 最適化アルゴリズム(機械学習)、最適な広告入札の機能開発によって
処理時間は増えてしまう
65ミリ 100ミリ
入札処理が加わって
タイムアウトになった分
NWのレイテンシ
- 18. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 17
入札処理のレイテンシは平均3〜5ミリ秒
Logicadの入札処理は平均3〜5ミリ秒程度
– 機能が増えてもレイテンシを短くできればタイムアウトが減らせる
– 高速化が売上につながる、最適化アルゴリズムに使える時間が増える
65ミリ 100ミリ
入札処理を短くすることが
できればもっとタイムアウト
が減らせる
- 19. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 18
平均では高速だが99パーセンタイルではムラがある
しかし99パーセンタイルでは遅いときも
3.7ミリ秒
99thだと75ミリ秒かかるケースもある
平均
99th
- 20. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 19
処理ボリューム
- 秒間40万件
- 約6,500億 req/月
– 約200億 req/日
Logicadの処理ボリューム
99thといっても相当な件数がある
- 21. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 20
ZGCにより99thのムラをなくすことができないか、またそれに
よってタイムアウトする入札数を減らせないかと考えた
ZGCへの期待 サブミリ秒の最大一時停止時間
これらのムラをなくしたい
- 22. ULS 21
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
ZGCのパラメータチューニング
- 23. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 22
ベンチマーク環境でのパラメータチューニング
入札サーバ(Javaアプリケーションがあるサーバ)の構成
- JDK16、CPU:28コア、メモリ:128GB
ZGCのJVMパラメータの組み合わせをいろいろ変えて性能評価
を試行したいが課題が2つあった
課題1
JVMパラメータの最適な組み合わせ
がわからない
課題2
GCログの結果をグラフィカル
(手間をかけず)に判断したい
課題1
課題2
- 24. ULS 23
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
ZGCのパラメータチューニング
課題1: JVMパラメータの最適な組み合わせがわからない
- 25. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 24
課題1: JVMパラメータの最適な組み合わせがわからない
ZGC用のJVMパラメータはそこそこあるため膨大な組み合わせ
から良さそうな組み合わせを見つけるのは大変
https://wiki.openjdk.java.net/display/zgc/Main
- 26. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 25
- Python製のハイパーパラメータ最適化フレームワーク
- パラメータ値の試行錯誤を自動化し、良い性能が出る値を自動的に発見
- 枝刈り機能
- 見込みのない組み合わせは処理を打ち切り、効率的に探索を進める機能
- https://github.com/optuna/optuna
課題1: JVMパラメータの最適な組み合わせがわからない
良い組み合わせを探索するために今回はOptunaを利用
- 27. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 26
Optuna ハイパーパラメータ最適化
手動で値の組み合わせを指定するのではなく、
自動で組み合わせを試して最適なものを探索する
https://www.slideshare.net/pfi/optuna
人が1つ1つ組み合わせを決める Optunaが組み合わせを決めてくれる
- 28. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 27
Optuna 枝刈り機能
見込みのない組み合わせは処理を途中で打ち切られ、短時間で
効率的に探索を進めることができる
性能がでないと予測
される組み合わせも
長時間実施
性能がでないと予測
される組み合わせは
途中で打ち切られる
枝刈りなし 枝刈りあり
- 29. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 28
組み合わせが膨大であるためOptunaで自動化
OptunaでJVMパラメータの組み合わせ、範囲を指定して
ベンチマークを自動化
Trial 1
Xmx=32GB
ParallelGCThreads=5
.
.
Trial 2
Xmx=40GB
ParallelGCThreads=3
.
.
Trial 99
Xmx=80GB
ParallelGCThreads=10
.
.
・・・
- 30. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 29
パラメータの組み合わせ、範囲指定方法
OptunaにJVMパラメータの組み合わせを渡す例
利用するJVMパラメータの値を範囲指定
しておくとOptunaが選択してくれる
選択されたJVMパラメータの組み合わせで
Javaアプリケーションを起動するように
スクリプトを作成した
- 31. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 30
OptunaでJVMパラメータの組み合わせを探索する
どのJVMパラメータの影響が大きいかを可視化したり、
組み合わせの結果をまとめてみれる
どのJVMパラメータ
が寄与しているか
5分間平均の変遷
(途中経過)がわかる
QPS 5分間平均の性能の例
- 32. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 31
1つのパラメータに着目した例
例えば、このアプリケーションでは
ヒープは単純に増やせば増やすほど効果がありそう
32GB〜80GB
- 33. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 32
例えば、このアプリケーションでは
-XX:ZFragmentationLimitはデフォルト値(25)近辺が良さそう
1つのパラメータに着目した例
1〜100
- 34. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 33
パラメータ間の関連を確認したい場合
等高線としてみることができる
パラメータ間の関連に着目した例
色が濃い=性能が悪い部分
色が薄い=性能が良い部分
点=あるTrialでの値
- 35. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 34
-XX:ZMarkStackSpaceLimit、-XX:ZFragmentationLimitは
ともに低い値の組み合わせのときに性能が良さそう
パラメータ間の関連に着目した例
色が濃い=性能が悪い部分
色が薄い=性能が良い部分
- 36. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 35
ヒープサイズ、-XX:ZMarkStackSpaceLimitは
あまり相関がなく、ヒープサイズが大きければ大きいほど性能が良さそう
パラメータ間の関連に着目した例
色が薄い=性能が良い部分がヒ
ープが大きい時にまんべんなく
現れている
- 37. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 36
[再掲]パラメータチューニングの流れ
ベンチマーク環境にて、ZGCのJVMパラメータの組み合わせを
いろいろ変えて性能評価を試行したいが課題が2つあった
課題1
JVMパラメータの最適な組み合わせが
わからない
-> Optunaで組み合わせを探索
課題2
GCログの結果をグラフィカル
(手間をかけず)に判断したい
課題1
課題2
- 38. ULS 37
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
ZGCのパラメータチューニング
課題2: GCログの結果をグラフィカルに判断したい
- 39. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 38
課題2: GCログの結果をグラフィカルに判断したい
GCログはテキストなのでさっと良いもの悪いものをフィルタ
リングできるようにグラフ化したい
[2021-03-15T20:31:40.909+0900][debug][gc,phases ] GC(1) Pause Roots Java Threads (ZWorker#4) 0.164ms
[2021-03-15T20:31:40.909+0900][debug][gc,phases ] GC(1) Pause Roots (ZWorker#15) 0.392ms
[2021-03-15T20:31:40.910+0900][debug][gc,phases ] GC(1) Pause Roots (ZWorker#4) 0.811ms
[2021-03-15T20:31:40.909+0900][debug][gc,phases ] GC(1) Pause Roots (ZWorker#10) 0.559ms
[2021-03-15T20:31:40.909+0900][debug][gc,phases ] GC(1) Pause Roots (ZWorker#6) 0.401ms
[2021-03-15T20:31:40.910+0900][debug][gc,phases,start] GC(1) Pause Roots Teardown (VM Thread)
[2021-03-15T20:31:40.910+0900][debug][gc,phases ] GC(1) Pause Roots Teardown (VM Thread) 0.030ms
[2021-03-15T20:31:40.910+0900][info ][gc,phases ] GC(1) Pause Relocate Start 1.040ms
[2021-03-15T20:31:40.910+0900][debug][gc,phases,start] GC(1) Concurrent Relocate
- 40. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 39
GCeasyというGC解析サービスを利用
課題2: GCログの結果をグラフィカルに判断したい
https://gceasy.io/
- 41. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 40
各種指標に加え、チューニングに関するアドバイスがもらえる
(アドバイスは有償プラン)
GCeasyによるレポート
GCの傾向
GC停止時間
- 42. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 41
各種指標に加え、チューニングに関するアドバイスがもらえる
(アドバイスは有償プラン)
GCeasyによるレポート
GCログで悪い傾向が検知された場合、
問題点の指摘&改善案を提示してくれる
- 43. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 42
https://blog.gceasy.io/2016/06/18/garbage-collection-log-analysis-api/
GCeasyはRest APIを提供
Rest APIを提供しており、curlでPOSTするだけで簡単にログ
を解析できる(ただし、こちらも有償プラン)
- 44. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 43
G1GCは時々ものすごく遅いがZGCよりGC回数が少ない
ZGCは0-2msに集中しているがGCが頻繁に発生
(参考情報)ZGCとG1GCのGC停止時間の傾向
ZGC
G1GC
ZGCは1回のGCが速いが、
回数が多い
G1GCは1回のGCに時間が
かかっているが回数は少ない
0-1ms
1-2ms
2-3ms
0-10ms
10-20ms
20-30ms
- 45. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 44
G1GCは時々ものすごく遅いがZGCよりGC回数が少ない
ZGCは0-2msに集中しているがGCが頻繁に発生
(参考情報)ZGCとG1GCのGC停止時間の傾向
ZGC
G1GC
時々ものすごく遅い
処理時間は安定
している
3ms
1200ms
200ms
- 46. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 45
[再掲]パラメータチューニングの流れ
ベンチマーク環境にて、ZGCのJVMパラメータの組み合わせを
いろいろ変えて性能評価を試行したいが課題が2つあった
課題1
JVMパラメータの最適な組み合わせが
わからない
-> Optunaで組み合わせを探索
課題2
GCログの結果をグラフィカル
(手間をかけず)に判断したい
-> GCeasyのレポートを利用
課題1
課題2
- 47. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 46
実施したパラメータチューニングの構成
Optunaで取得したメトリクスとGCeasyのレポートを元に
性能評価し、めぼしいJVMパラメータの組み合わせを探索
Trial 1
Xmx=32GB
ParallelGCThreads=5
.
.
Trial N
Xmx=80GB
ParallelGCThreads=20
.
.
GCログ
・・・
スコアが良いJVMパラメータの
GCログをレポートで確認
・・・
- 48. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 47
Optunaのグラフと値(RDBに格納される)、および
GCeasyのレポートから良さそうな組み合わせに目星を付ける
Optuna、GCeasyを用いて最適なパラメータを探索する
- 49. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 48
ZGCのパラメータチューニングによる効果
デフォルトのJVMパラメータと各種JVMパラメータを設定した
ものはきちんと性能が変わる
= JVMパラメータをチューニングする意味はある
JVMパラメータ設定あり
デフォルト設定
- 50. ULS 49
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
本番環境におけるZGCとG1GCの比較
- 51. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 50
入札サーバ(Javaアプリケーションがあるサーバ)の構成
- JDK16(2台だけバージョンアップ)
- CPU:28コア、OSメモリ:128GB、Javaメモリ:80GB
本番環境構成
入札サーバの2台をJDK16化
うち1台をZGC
もう1台をG1GCとし、
メモリサイズを合わせたものを用意
- 52. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 51
以下の指標に差があるかを確認
- QPS(スループット)
- ETM(処理時間)
ZGCとG1GCでの比較ポイント
- 53. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 52
(参考情報)ZGCとG1GCの比較 JVMパラメータ
JVMパラメータ
1702 jp.xxx.yyy.BuyerServer -Xmx80g -Xms80g -XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:+UseStringDeduplication
-XX:GCTimeRatio=9 -XX:G1HeapRegionSize=32m -
XX:G1ReservePercent=20 -
Xlog:gc*=debug:file=/xxx/gc.log:time,level,tags:filecount=10,filesize=10
M -Djcd.dest=udp://127.0.0.1:3011 -Djcd.instance=Buyer -
Djcd.tmpl=javalang,buyersettings -javaagent:xxx.jar -XX:+UseNUMA -
XX:ReservedCodeCacheSize=384M -XX:-OmitStackTraceInFastThrow -
XX:+ExitOnOutOfMemoryError -javaagent:yyy.jar --illegal-access=warn --
add-opens=java.base/java.lang.invoke=ALL-UNNAMED
5296 jp.xxx.yyy.BuyerServer -Xmx80g -Xms80g -XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m -XX:+UseZGC -XX:ConcGCThreads=28 -
XX:ParallelGCThreads=6 -XX:ZAllocationSpikeTolerance=1.0 -
XX:ZFragmentationLimit=10 -XX:ZMarkStackSpaceLimit=28g -
XX:+UseLargePages -XX:+UseNUMA -
Xlog:gc*=debug:file=/xxx/gc.log:time,level,tags:filecount=10,filesize=10
M -Djcd.dest=udp://127.0.0.1:3011 -Djcd.instance=Buyer -
Djcd.tmpl=javalang,buyersettings -javaagent:xxx.jar -XX:+UseNUMA -
XX:ReservedCodeCacheSize=384M -XX:-OmitStackTraceInFastThrow -
XX:+ExitOnOutOfMemoryError -javaagent:yyy.jar --illegal-access=warn --
add-opens=java.base/java.lang.invoke=ALL-UNNAMED
ZGC
G1GC
- 54. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 53
ZGCとG1GCの比較 QPS
QPS(スループット)はほぼ差がなかった
1日
3時間
ほぼ差がない
ほぼ差がない
ZGC
G1GC
- 55. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 54
ZGCとG1GCの比較 ETM 99th
ETM(処理時間)99thではZGCのほうが遅くなった
3時間
1日
ZGC
G1GC
20ms 50ms
30ms 50ms
- 56. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 55
ZGCとG1GCの比較 ETM 999th
ETM(処理時間)999thではZGCのほうが安定していた
3時間
1日
ZGC
G1GC
3時間の指標ではわかりにくいが、1日単位で
みるとムラの発生回数はG1GCのほうが多い
200ms
100ms
1秒
1秒
1秒
- 57. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 56
ZGCとG1GCの比較 ETM 999th
ETM(処理時間)999thではZGCのほうが安定していた
...が、結局平均64-67ms程度かかっていた
3時間
1日
ZGC
G1GC
67ms
64ms
- 58. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 57
G1GCは時々ものすごく遅いがZGCよりGC回数が少ない
ZGCは0-2msに集中しているがGCが頻繁に発生
ZGCとG1GCの比較 GC停止時間の傾向
ZGC
G1GC
ZGCは1回のGCが速いが、
回数が多い
G1GCは1回のGCに時間が
かかっているが回数は少ない
0-1ms
1-2ms
2-3ms
0-10ms
10-20ms
20-30ms
- 59. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 58
G1GCは時々ものすごく遅いがZGCよりGC回数が少ない
ZGCは0-2msに集中しているがGCが頻繁に発生
ZGCとG1GCの比較 GC停止時間の傾向
ZGC
G1GC
時々ものすごく遅い
処理時間は安定
している
3ms
1200ms
200ms
- 60. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 59
指標の確認結果は次の通り
- QPS(スループット)
- ZGCとG1GCで差はなかった
- ETM(処理時間)
- 99thではG1GCのほうが安定していた
- 999thではZGCのほうが安定していた(が、67ms程度かかる)
- GCログ
- ZGCは0-2msに集中しているがGCが頻繁に発生
- G1GCは時々ものすごく遅いがZGCよりGC回数が少ない
ZGCとG1GCでの比較
- 61. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 60
Logicadのシステム特性とマシンスペックでZGCを動かした
限りにおいてはシステムへうまくマッチしなかった
- ETM 999th以降は確かに安定している
- LogicadではNW含めて100ms以内でのレスポンスが求められるため、もう少し低い
値で安定することができればマッチできたかもしれない
- レイテンシの安定(すべての処理に200ms以内で返すなど)が求められるシステム
では合うかもしれない
- GC停止時間は短いがGC回数がG1GCより高頻度でおきている
- 結果、1回あたりのGC時間が短くなったとしてもアプリケーション側がそのまま速く
なったわけではなかった
- 用意できるハードウェアの制限のため、より大きなメモリサイズで実施し
た場合は活きるかもしれない(100GB未満だとあまり効果なさそう)
ZGCの適用結果
- 62. ULS 61
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
まとめ
- 63. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 62
まとめ
- ZGCは低レイテンシなGC
- 安定して0-2msのGC停止時間が確認できた
- ただしGC回数はG1GCより増える
- パラメータチューニングの自動化が重要
- JVMパラメータは組み合わせが膨大
- Optunaなどを用いて機械的に探索できるとよい
- GCログは傾向を掴みやすいようにグラフにする
- GCeasyを用いてグラフから傾向を把握し、よいパラメータの組み合わ
せかどうかを確認
- 64. ULS
Copyright © 2011-2021 UL Systems, Inc. All rights reserved.
Proprietary & Confidential 63
お問い合わせ先
mailto: info@ulsystems.co.jp
https://www.ulsystems.co.jp/