タグ

GCに関するoinumeのブックマーク (29)

  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

  • G1 GC おさらいと #jjug_ccc で発表した話 - unnamed

    この記事は Java Advent Calendar 2015 の一日目の記事です。二年連続でトップバッターだ! 先日の JJUG CCC 2015 Fall で G1 GC について話してきました。 去年の CMS GC と同じく結構遅めの時間帯&裏番組に伝説の灰色ページ管理人・ひしだま伝道師が発表するなどの豪華な時間帯にも関わらず、165人規模の部屋がいっぱいに埋まるぐらいの盛況でした。聴講頂いた皆様ありがとうございました! スライドは以下に公開しました。G1 GC の挙動から GC ログの読み方、どういうケースが厄介なのかを紹介しているので是非ご覧ください! Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6 from Yuji Kubota アフターフォロー、またはちょっとした補足 極力、後から参照可能なように資料

    G1 GC おさらいと #jjug_ccc で発表した話 - unnamed
    oinume
    oinume 2015/12/01
  • Goのガーベジコレクタを視覚化するツール | POSTD

    (環境変数GODEBUGは、 ランタイム パッケージで提供されています) この環境変数を指定してプログラムを起動すると、標準出力に以下の追加出力が出力されます(少し簡略化されています)。 % env GODEBUG=gctrace=1 godoc -http=:6060 ... gc76(1): 2+1+1390+1 us, 1 -> 3 MB, 16397 (1015746-999349) objects, 1436/1/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields gc77(1): 2+0+1582+1 us, 2 -> 4 MB, 14623 (1016248-1001625) objects, 1436/0/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields scvg0: inuse:

    Goのガーベジコレクタを視覚化するツール | POSTD
  • What kind of Garbage Collection does Go use?

    Go is a garbage collected language: http://golang.org/doc/go_faq.html#garbage_collection Here it says that it's a mark-and-sweep garbage collector, but it doesn't delve into details, and a replacement is in the works... yet, this paragraph seems not to have been updated much since Go was released. It's still mark-and-sweep? Is it conservative or precise? Is it generational?

    What kind of Garbage Collection does Go use?
  • jClarity – Home

    Today we are delighted to announce that Microsoft has acquired jClarity (see Microsoft’s official statement). It’s always been jClarity’s core mission to support the Java ecosystem. We started with our world-class performance tooling and then later became a leader in the AdoptOpenJDK project. Microsoft leads the world in backing developers and their communities, and after speaking to their enginee

    oinume
    oinume 2014/04/02
    GC分析してくれるの?
  • Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Advanced Tuning

    Learn what you need to know to experience nirvana in the evaluation of G1 GC even if your are migrating from Parallel GC to G1, or CMS GC to G1 GC You also get a walk through of some case study data G1 GCRead less

    Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Advanced Tuning
  • Java Garbage Collection Basics

    Purpose This tutorial covers the basics of how Garbage Collection works with the Hotspot JVM. Once you have learned how the garbage collector functions, learn how to monitor the garbage collection process using Visual VM. Finally, learn which garbage collectors are available in the Java SE 7 Hotspot JVM. Time to Complete Approximately 1 hour Introduction This OBE covers the basics of Java Virtual

    oinume
    oinume 2014/04/01
  • Java™ 7でのガーベジコレクションの選択

    Java 7のガーベジコレクションの入り口 Java 7のガーベジコレクションの仕様や実装を調べるなら、次の2つが入り口となるでしょう。 Java Garbage Collection Basics (日語訳なし) Getting Started with the G1 Garbage Collector (拙者の日語訳) Java 7でガーベジコレクションを選択する方法(6種類) Java 7ではエルゴノミクス機能により、自動的にガーベジコレクション(GC)を決定します。 エルゴノミクス機能による決定を無効にして自分でGCを選択したい場合、次の6種類のオプションの指定方法があります。 -XX:+UseSerialGC -XX:+UseParallelGC -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+UseConcMarkSweepGC

    oinume
    oinume 2014/04/01
  • How to read the output of +PrintTenuringDistribution

    oinume
    oinume 2014/04/01
  • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

    バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

    Java 7 CMS GCの基本的な情報の整理 - nekop's blog
    oinume
    oinume 2014/03/27
  • Never set GC parameter -XX:MaxTenuringThreshold greater than 15

    When tuning Java Garbage Collector you have to be very careful, as you may result to a worst performance instead of a better one. The GC parameter “-XX:MaxTenuringThreshold” defines how many minor GC cycles an object can stay in the survivor spaces until it finally gets tenured to the old space. Until java version 1.5.0_05 the maximum value for this parameter was 31. But in all the newest versions

    Never set GC parameter -XX:MaxTenuringThreshold greater than 15
    oinume
    oinume 2014/03/19
    "the maximum value changed to 15 and for any value we set greater than 15, GC translates it to infinity. " マジかよ...
  • OTN Japan マニュアル

    ガベージファースト・コレクタ ガベージファースト・コレクタとは ガベージファースト(G1)コレクタとは、大容量のメモリを搭載するマルチプロセッサを対象としたサーバースタイルのガベージ・コレクタです。ソフト・リアルタイム目標を高確率で達成し、かつ高いスループットを実現します。 G1は長期的には、並行マークスイープ・コレクタ(CMS)の後継となる技術です。 グローバル・マーキングなどのヒープ全体に対する処理は、アプリケーション・スレッドと並行して実行されます。これによって、割込みがヒープ・サイズまたはライブ・データ・サイズに比例して増加するのを防ぎます。 また、並行マーキングによって、コレクション処理の"完全性"が確保され、コンパクト化を伴う退避によって再利用の対象となるリージョンが特定されます。 この退避はマルチプロセッサ上で並行して実行されるので、一時停止の時間が短縮し、スループットが向上

    oinume
    oinume 2014/03/12
  • 徹底解剖「G1GC」実装編(β版)

    書はOpenJDK7のG1GCの実装と、それに関連する技術を解説します。 目次 スポンサーのみなさま はじめに 1.準備 2.オブジェクト管理機能 3.アロケータ 4.ヒープ構造 5.オブジェクト構造 6.HotspotVMのスレッド管理 7.スレッドの排他制御 8.GCスレッド(並列編) 9.GCスレッド(並行編) 10.並行マーキング 11.退避 12.予測とスケジューリング 13.正確なGCへの道 14.ライトバリアのコスト さらに勉強したい人へ その他参考文献 以下から(ある時点で)最新のebookをダウンロードできます。 徹底解剖「G1GC」実装編-20120915.epub 徹底解剖「G1GC」実装編-20120914.mobi 徹底解剖「G1GC」実装編-20120914.pdf 謝辞 書はスポンサーのみなさまの金銭的支援によって執筆されました。 スポンサーのみなさま あ

    oinume
    oinume 2014/03/12
  • Garbage First Garbage Collector Tuning

    Learn about how to adapt and tune the G1 GC for evaluation, analysis and performance. The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and parallel phases to achieve its target pause time and to maintain good throughput. When G1 GC determines that a garbage collection is necessary, it collects t

    oinume
    oinume 2014/03/11
  • Norikra等JavaアプリケーションのGCをチューニングしたい - Qiita

    Javaアプリケーションを運用していると必ず突き当たるのがGCの問題である。JVMの上で生きている限りこの問題を避けて通ることはできない(し、この問題に手をつけたら終わりだとも聞いたことがある)。NorikraはJRubyで記述されているJavaアプリケーションであり、用途からして大量のオブジェクトを作って破棄していることが容易に想像できるので、GCのチューニングは重要であることが考えられる。 GCのログをとりたい チューニングしたいのであれば、まずはともあれロギングである。ログなくしてチューニングすることなどできない。ということでまずはGCのログをとる。 $ norikra start -Xmx4g -Xms4g -Xloggc:/var/log/norikra/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails

    Norikra等JavaアプリケーションのGCをチューニングしたい - Qiita
    oinume
    oinume 2014/03/11
  • GitHub - chewiebug/GCViewer: Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - chewiebug/GCViewer: Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)
  • 第9回 [最終回]HotSpot JVMのGCを選択しよう | gihyo.jp

    HotSpot JVMを使うとき、どのようにGCを設定していますか? 検索して出てきたホームページを見て 「とりあえずこのホームページにあるように最新のGCを指定したし、同じようにオプションを設定したから大丈夫だろ」 と思ってしまう話をよく見聞きします。 図1 誤ったGCの選択 しかし、たとえばバッチのようにスループットを意識すべき処理にもかかわらず、レスポンスタイム重視のGCを選んでしまうのは適切ではありません。 最終回となる今回は、HotSpotにはどのようなGCがあり、どのようにそれらを選択すれば良いのかを紹介します。 4つのGCを使いこなす HotSpot JVMには、以下の4つのGCが実装されています。 シリアルGC パラレルGC コンカレント マーク&スイープGC(CMS) ガベージファーストGC(G1GC) 1つずつ見ていきましょう。 シリアルGC このGCの特徴は、ヒープの

    第9回 [最終回]HotSpot JVMのGCを選択しよう | gihyo.jp
  • 2007-01-21

    JVMオプション:-XX:+UseConcMarkSweepGC http://java.sun.com/docs/hotspot/gc1.4.2/example.html JDK5.0で性能向上 http://java.sun.com/performance/reference/whitepapers/5.0_performance.html#2.11 http://java.sun.com/javase/technologies/hotspot/exactoptions.jsp -Xconcgc は -XX:+UseConcMarkSweepGC http://java-house.jp/ml/archive/j-h-b/051099.html HotSpotのホワイトペーパーに,Incremental "Pauseless" Garbage Collector と書いてあるように,G

    2007-01-21
    oinume
    oinume 2013/04/12
  • 第4回 3つのGCを使い分けて停止時間を最小にする | gihyo.jp

    3つのGCを使い分けてCPUの使用率をコントロールする 「GCの時間が長くてシステムが反応してくれない……もっと短くならないかな?」 「GCが始まると、CPUが占有されちゃって、ほかのプロセスの動きが重くなるんだよね……」 「GCの停止時間が多少長くなってもいいから、ほかのプロセスへの影響を軽くできないかな?」 JVMを使用しているシステムでは、そんな話を耳にします。GCが起きていることまでは把握できているのですが、それからどうしたら良いのかわからないのです。 GCは、JVMの内部でGCスレッドがCPUに処理されることで行われています。そのため、GCが行われている間はCPUの使用率が増加してしまうのです。 GCをスレッドの観点で見ると、以下の3種類があります。 シリアルGC パラレルGC コンカレントGC これらの違いを把握すれば、CPUの使用率とアプリケーションの停止時間をコントロールす

    第4回 3つのGCを使い分けて停止時間を最小にする | gihyo.jp
    oinume
    oinume 2013/03/07
  • JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal

    English version JVMでGCのログ出すじゃないですか。んで、その時↓みたいに -XX:+PrintGCTimeStamps っていうオプションを指定するじゃないですか。 TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m \ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC \ -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=85 \ -verbose:gc -Xloggc:/usr/local/tomcat/lo

    JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal
    oinume
    oinume 2013/01/22
    ブログ書いた