タグ

GCに関するy_uukiのブックマーク (21)

  • Go言語のリアルタイムGC 理論と実践 | POSTD

    (編注:誤訳、意味の分かりづらい訳を修正しました。リクエストありがとうございました。) 毎日、Pusherは数十億のメッセージをリアルタイム、つまり送り元から宛先まで100ms未満で送信しています。どのようにしてそれを可能にしているのでしょうか。重要となる要因はGoの低レイテンシのガベージコレクタです。 ガベージコレクタはプログラムを一時停止させるものであり、リアルタイムシステムの悩みの種です。そのため、新しいメッセージバスを設計する際には慎重に言語を選びました。Goは 低レイテンシを強調している ものの、私たちは懐疑的でした。「当にGoを使えば実現できるのか? もしできるならどうやって?」 このブログ記事ではGoのガベージコレクタを、どのように機能し(トリコロールアルゴリズム)、なぜ機能し(こんなに短いGCによる一時停止時間の実現)、そして何よりも、それが機能するのかどうか(GCによる

    Go言語のリアルタイムGC 理論と実践 | POSTD
  • Dismissing Python Garbage Collection at Instagram

    By dismissing the Python garbage collection (GC) mechanism, which reclaims memory by collecting and freeing unused data, Instagram can run 10% more efficiently. Yes, you heard it right! By disabling GC, we can reduce the memory footprint and improve the CPU LLC cache hit ratio. If you’re interested in knowing why, buckle up! How We Run Our Web ServerInstagram’s web server runs on Django in a multi

    Dismissing Python Garbage Collection at Instagram
    y_uuki
    y_uuki 2017/03/10
    例えばGCを止めるってやつだ
  • Go言語の低レイテンシGC実現のための取り組み | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) 私たち Twitch では、通信が大変混み合うシステムの多くで Go を採用しています。ライブ映像を配信したり、何百万人というユーザにチャットサービスを提供したりする場合に直面する問題を考慮すると、Goはそのシンプルさや安全性、パフォーマンス、読みやすさの点で良いツールだと言えます。 しかしこれは、私たちにとってGoがいかに素晴らしいツールかを説明する、よくある記事ではありません。Goで現在実装されているランタイムにより行き詰まったいくつかの局面をどう打開するか、さらに、私たちはそうした限界に達した時にどう対応したらいいのかについて書いたものです。 これからお話しするのは、「Go 1.4からGo 1.6へのGoランタイムの改善が、どのようにしてガベージコレクション(GC)の停止時間を20倍も改善することに

    Go言語の低レイテンシGC実現のための取り組み | POSTD
  • Golangの新しいGCアルゴリズム Transaction Oriented Collector(TOC)

    http://golang.org/s/gctoc Goの新しいGCのProposalが出た.まだProposal段階であり具体的な実装はないが簡単にどのようなものであるかをまとめておく. GoのGCはGo1.5において単純なStop The World(STW)からConcurrent Mark & Sweepへと変更され大きな改善があった(詳しくは“GolangのGCを追う”に書いた).先の記事に書いたようにGo1.5におけるGCの改善は主にレイテンシ(最大停止時間)に重きが置かれいた.数値目標として10msが掲げられGo1.6においては大きなヒープサイズ(500GB)においてそれを達成していた. GCの評価項目はレイテンシのみではない.スループットやヒープの使用効率(断片化の対処)なども重要である.Go1.6までのGCではそれらについて大きく言及されていなかった(と思う).例えばスル

    y_uuki
    y_uuki 2016/06/30
    ネットワークサーバの特性にあわせてるのか
  • 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

    y_uuki
    y_uuki 2016/05/09
    よい
  • GCメモリ初心者の新卒がScalaでGCメモリを勉強してみた | Scala Tech Blog

    この記事はCyberAgent エンジニア Advent Calendar 2015の14日目の記事です。 昨日は13卒の鈴木さんのブログでした、明日は同期のchoheyさんです。 はじめに こんにちは、サイバーエージェントアドテクスタジオ15新卒のフィ(@dxhuy)と申します。 アドテク新卒の中で「YYY初心者の新卒がXXXでYYYを勉強してみた」というタイトルが流行っていますので、パクらせていただきました。 ネットワーク初心者の新卒がDockerでネットワークの勉強をしてみた Scala初心者の新卒が頑張ってLispを作ってみた 現在RightSegmentという子会社でData Management Platform (DMP)を作っています。データの会社なのでHadoopのバッチの開発とか、フロントサーバでJavaの開発などをしています。 GCメモリについて 会社に入る前にはスク

    GCメモリ初心者の新卒がScalaでGCメモリを勉強してみた | Scala Tech Blog
  • 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
    y_uuki
    y_uuki 2015/12/01
  • Javaのプログラムはどうやって動いているの? GC編

    論文紹介:Revealing the unseen: Benchmarking video action recognition under occlusionToru Tamaki

    Javaのプログラムはどうやって動いているの? GC編
    y_uuki
    y_uuki 2015/05/11
  • Concurrent Mark-Sweep Garbage Collection #jjug_ccc

    Re-Introduction: Concurrent Mark-Sweep Garbage Collection @ Japan JUG Conference.

    Concurrent Mark-Sweep Garbage Collection #jjug_ccc
  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

    ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
  • GitHub - authorNari/g1gc-impl-book: 徹底解剖「G1GC」実装編

    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 - authorNari/g1gc-impl-book: 徹底解剖「G1GC」実装編
    y_uuki
    y_uuki 2014/10/23
  • GitHub - preames/gpu-garbage-collection: Snapshot of code used for the ISMM 2012 paper "GPUs as an Opportunity for Offloading Garbage Collection"

    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 - preames/gpu-garbage-collection: Snapshot of code used for the ISMM 2012 paper "GPUs as an Opportunity for Offloading Garbage Collection"
    y_uuki
    y_uuki 2014/08/01
  • G1GCのつかいどころメモ - nekop's blog

    以下の環境とテストでCMSとG1GCを比較してみた。かなり急ぎでやったので間違っている可能性が多少ある。 16 cores, 32GB mem -Xms24g -Xmx24g 8 instances Infinispan 6.0.3.Final DIST cache, put 4GB data (1KB entry * 2M, 2GB data with one backup copy, 2GB * 2 = 4GB) CMS: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 G1GC: -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=30 $ java -XX:+UseG1GC -XX:+PrintFlagsFinal

    G1GCのつかいどころメモ - nekop's blog
    y_uuki
    y_uuki 2014/04/08
  • https://developer.oracle.com/java/technologies/javase/gc-tuning-6.html

    y_uuki
    y_uuki 2014/04/07
  • Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か

    GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu

    Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か
    y_uuki
    y_uuki 2014/04/06
  • GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)

    GC¥¢¥ë¥´¥ê¥º¥à¾ÜºÙ²òÀâ ÆüËܸì¤Î»ñÎÁ¤¬¤¹¤¯¤Ê¤¤GC¥¢¥ë¥´¥ê¥º¥à¤Ë¤Ä¤¤¤Æ¾ÜºÙ¤Ë²òÀ⤷¤Þ¤¹ ¥È¥Ã¥×¥Ú¡¼¥¸¥Ú¡¼¥¸°ìÍ÷¥á¥ó¥Ð¡¼ÊÔ½¸ GC ºÇ½ª¹¹¿·¡§ author_nari 2010ǯ03·î14Æü(Æü) 20:47:11ÍúÎò Tweet ¤³¤ÎWiki¤¬Ìܻؤ¹½ê GC¤È¤Ï¡© GC¤ò³Ø¤ÖÁ°¤ËÃΤäƤª¤¯»ö ¼Â¹Ô»þ¥á¥â¥ê¹½Â¤ ´ðËÜ¥¢¥ë¥´¥ê¥º¥àÊÔ Reference Counter Mark&Sweep Copying ±þÍÑ¥¢¥ë¥´¥ê¥º¥àÊÔ IncrementalGC À¤ÂåÊÌGC ¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È·¿GC LazySweep TwoFinger Lisp2 Pa

    GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
    y_uuki
    y_uuki 2014/04/06
  • Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Advanced Tuning

    Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Advanced Tuning

    Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Advanced Tuning
    y_uuki
    y_uuki 2014/04/05
  • 正確なGCへの道

    リスト13.1: プリミティブ型と参照型 1: int primitiveType = 1; // プリミティブ型 2: Object referenceType = new Object(); // 参照型 Javaの変数に格納される型としてint、floatといったプリミティブ型があります(リスト13.1の1行目)。プリミティブ型はJava上では数値として扱われます。それと同様にC++(HotspotVM)上でもintやfloatといった数値として扱われます。 一方、Objectクラス(またはその子クラス)のインスタンスを指す参照型があります(リスト13.1の2行目)。参照型はC++(HotspotVM)上ではオブジェクトへのポインタとして扱われます。 ここで問題となるのがプリミティブ型はVM上で数値として扱われるという点です。つまり、プリミティブ型の値は偽ポインタの可能性があります。

    正確なGCへの道
    y_uuki
    y_uuki 2014/04/05
  • まじめにJVMチューニング: 第4回 GCアルゴリズムを変えてみる

    Java SE 7 Update 4から、GCの新しいアルゴリズムとして「G1GC」が追加されました。 Java6でもupdate 14から実験的に導入されているようです。 GCアルゴリズムについては下記に概要説明がありました。 第9回 [最終回]HotSpot JVMのGCを選択しよう G1GCアルゴリズムの詳細についてはこちらに超詳しく記載されています。 徹底解剖「G1GC」実装編 GCアルゴリズムの技術的な詳細解説だったら下記のページがよかったです。 GCアルゴリズム詳細解説 G1GCを使うためには -XX:+UseConcMarkSweepGC をはずし、 -XX:+UseG1GC を追加します。 G1GCはヒープを分割して管理しますが、分割のデフォルトサイズが1MBと小さいのでもう少し大きくします。 -XX:G1HeapRegionSize=8M MaxGCPauseMillis

    y_uuki
    y_uuki 2014/03/31
  • 徹底解剖「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 謝辞 書はスポンサーのみなさまの金銭的支援によって執筆されました。 スポンサーのみなさま あ

    y_uuki
    y_uuki 2014/03/31