Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )

オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )

JJUG CCC 2021 Spring の発表資料です。
(SlideShareより移行)

hiroisojp

May 23, 2021
Tweet

More Decks by hiroisojp

Other Decks in Programming

Transcript

  1. ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved.

    Proprietary & Confidential オンライン広告入札システムとZGC
  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 磯田 浩靖 - 所属:ウルシステムズ株式会社 - 連絡先:[email protected] - twitter:hiroisojp - Javaエンジニア、認定スクラムマスタ - AWS DeepRacer(強化学習)の大会とか出てます 栗原 秀馬 - 所属:SMN株式会社 - 連絡先:[email protected] - 競技プログラミングにハマっている。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: [email protected] https://www.ulsystems.co.jp/