ZGC in Future LINE HBase

ZGC in Future LINE HBase

2019/5/28に開催されたLINE Developer Meetup #54 in Fukuokaでの登壇資料です

53850955f15249a1a9dc49df6113e400?s=128

LINE Developers

May 28, 2019
Tweet

Transcript

  1. ZGC in Future LINE HBase LINE Corporation Shinya Yoshida 2019/05/28

    LINE Developer Meetup #54 in Fukuoka
  2. 自己紹介 • Shinya Yoshida • 開発1センター 開発開発1室 開発Z Part 開発HBase Unit server Z

    Part Other services
  3. コンテンツ • Garbage Collection/or • GCの選び方選び方び方方 • ZGC+HBaseの選び方評価 • 本番環境適用に向けてに向けて向けてけて

  4. Garbage Collection/or • 回収方法 • メモリ分割分割(世代分け、リージョン分けリ分割ージョン分け) – 今回は時間の都合で話時間の都合で話さなの選び方都合で話さないで話さない話さないさない • Stop

    The World(STW) – アプリ分割ケーションスレッドを止めることを止めること止めることめること
  5. HBaseとGC • HBase = JVM上で動くで話さない動くくNoSQL – GC Response time ⇒

    Respon – Response time Service ⇒ Respon
  6. GC=ごみ収集収集/掃除

  7. ごみ収集収集/掃除 • ゴミを見つけるを止めること見つけるつける • ゴミを見つけるを止めること回収して、リージョン分け空間の都合で話さなを止めること 整理するする

  8. GCアルゴリ分割ズム(回収方法) • 参照されていないされていない オブジェクト(ゴミを見つける)を止めること見つけるつける • 参照されていないカウント • Mark • Sweep/Compaction

    – ゴミを見つけるを止めること削除して、リージョン分け空間の都合で話さなを止めること整理する • Copy(Relocate) – 参照されていないされているオブジェクトを止めること 別の場所に移すの選び方場所に移すに向けて移すす – Markと同時に向けてする場合で話さないと 別の場所に移す々に行う場合があに向けて行う場合があるう場合がある場合で話さないがある
  9. フラグメンテーション がおきる アドを止めることレスが変わるわる アドを止めることレスが変わるわる 空間の都合で話さなが余分に向けて必要 Sweep/Compaction Copy

  10. Javaの選び方GC GCアルゴリ分割ズム 回収方法 Young GC Sequential/Parallel Copy Old GC Sequential/Parallel

    Sweep&Compact Concurrent Mark & Sweep (Deprecated) Sweep G1GC Copy ZGC(Java11, Experimental) Copy Shenandoah(Java12, Experimental) Copy
  11. GCとアプリ分割ケーション実行う場合がある • GC時:アプリケーショアプリ分割ケーションを止めること止めることめる(STW)必要があったり、リージョン分け なかったり – 安全性(Must):アプリケーショゴミを見つける以外を回収しないを止めること回収しない – 完全性(Option):アプリケーショゴミを見つけるを止めることすべて回収しきる • STW時間の都合で話さなは時間の都合で話アルゴリ分割ズムに向けてよる

    – どれぐらい止めることめないといけないか – 何に比例して増えに向けて比例して増えるかして増えるかえるか
  12. GCアルゴリ分割ズムの選び方STWとスケール GCアルゴリ分割ズム Mark 回収 Old GC Sequential Parallel CMS(Deprecated) いつかFullGCが起きる可能性大きる可能性大

    G1GC 実行う場合がある中にアドレスが変に向けてアドを止めることレスが変わるわると大変わる ただし、リージョン分けSTW時間の都合で話さなは時間の都合で話制御可能 ZGC STW時間の都合で話さなは時間の都合で話スレッドを止めること数に比例に向けて比例して増えるか 各STW:10ms以下? Shenandoah 各STW:10ms以下? アプリ分割ケーションスレッドを止めること実行う場合がある中にアドレスが変 アプリ分割ケーションスレッドを止めることSTW GC実行う場合がある
  13. ZGCとShenandoahの選び方仕組みみ収集 • アプリ分割ケーションを止めること動くかしながら、リージョン分けオブジェクトの選び方アドを止めることレスを止めること 変わるえる仕組みみ収集 • JJUG CCC 2018 Springで話さないあった発表を見てくださいを止めること見つけるてください –

    https://speakerdeck.com/yokotaso/ introduction-to-modern-gc – https://blog.cybozu.io/entry/ 2018/05/29/080000 – By @yokotaso(Cybozu)
  14. GCの選び方選び方択

  15. GCを止めること選び方ぶに向けては時間の都合で話 • GCの選び方特性(得意な部分、苦手なな部分、リージョン分け苦手な部分な部分)を止めること知るる • アプリ分割ケーションの選び方特性/ハードを止めることウェアを止めること考えるえる • 最も良さげなも良さげな良さげなさげなGCを止めること選び方ぶ

  16. GCの選び方特性 • スループット?応答時間の都合で話さな?(STW時間の都合で話さな) • CPUコア数に比例 • メモリ分割サイズ • ライブオブジェクト率 •

    オブジェクトサイズ • などなど
  17. GCごとの選び方特性 各STW時間の都合で話さな スループット 最も良さげな適なCPU コア数に比例 最も良さげな適なヒープ サイズ ∞ 85% 100%

    1GB 8GB 512GB 8TB〜 0ms 100ms 1s 1 2 4 8 16 32+ 31GB 128GB 2TB Sequential/Parallel G1GC Shenandoah/ZGC
  18. LINEの選び方HBaseは時間の都合で話・・・? • レスポンスタイムが大事 • スループット/1台は仕組み上は大は時間の都合で話仕組みみ収集上で動くは時間の都合で話大事じゃない – スケールアウトで話さないきる – サーバ代的には大事代的には大事に向けては時間の都合で話大事 •

    いっぱいメモリ分割を止めること使ってキャッシュってキャッシュしたいしたい • CPUリ分割ソース余りがち – SQLは時間の都合で話無いい – シンプルなGet/Scan/Put/Delete – IOとNetworkがほとんど • CPU: 40コア • メモリ分割: 256GB
  19. GCごとの選び方特性に向けて当てはめるては時間の都合で話める 各STW時間の都合で話さな スループット 最も良さげな適なCPU コア数に比例 最も良さげな適なヒープ サイズ ∞ 85% 100%

    1GB 8GB 512GB 8TB〜 0ms 100ms 1s 1 2 4 8 16 32+ 31GB 128GB 2TB Sequantial/Parallel G1GC Shenandoah/ZGC
  20. HBaseに向けては時間の都合で話ZGCが良さげなさそう場合がある! (Shenandoahで話さないも良さげな良さげないけどZ Partなの選び方で話さない・・・)

  21. 2018年夏のインターンでの選び方インターンで話さない ZGCを止めること試してもらったしても良さげならった https://linecorp.com/ja/career/newgrads/internship/

  22. 具体的には大事に向けては時間の都合で話 • テストクラスタで話さないHBase1.2.5+αを止めること構築 • Java11-eaで話さない動くかす • ZGCを止めること有効にするに向けてする • ベンチマークツールYCSBで話さない評価 –

    STW時間の都合で話さなとslow responseの選び方時間の都合で話さな、リージョン分けスループット – 比較として今使ってとして今使ってキャッシュっているG1GCも良さげな
  23. STW時間の都合で話さな

  24. レスポンスタイム G1GC ZGC Slow Response閾値 35ms

  25. 結果(スループット)

  26. じゃあ本番に向けて適用に向けてだ!

  27. そんな簡単にはできないに向けては時間の都合で話で話さないきない

  28. Java11≦で話さない動くかす(今は時間の都合で話Java8) ZGC(Experimental機能)を止めること有効にするに向けてする

  29. それを止めること社会インフラであるインフラで話さないある LINEの選び方メッセンジャーで話さない いきなりやって良さげないの選び方か・・・

  30. とは時間の都合で話言え、え、リージョン分け 本番環境の選び方リ分割クエストと 同じリ分割クエストで話さない試してもらったしたい

  31. RPC Response JDK8 + G1GC server

  32. RPC Response JDK8 + G1GC Consumer RPC Info JDK11 +

    ZGC RPC Response server
  33. RPC Response JDK8 + G1GC Consumer RPC Info JDK11 +

    ZGC RPC Response server WORK IN PROGRESS
  34. We’re hiring(新宿オフィスオフィス) • https://linecorp.com/ja/career/position/458

  35. まとめ • Javaに向けて新しいGCが! – ZGC、リージョン分けShenandoah: まだExperimental – ちゃんと特性を止めること分かって選び方ぶことが大事 • ZGCに向けて期待

    – 評価的には大事に向けても良さげなHBaseとの選び方相性が良さげなさそう場合がある • 本番環境の選び方HBaseに向けてZGCを止めること適用に向けてする前に、に向けて、リージョン分け 本番環境に向けて来るリクエストをるリ分割クエストを止めること再現して評価して評価