Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Atsushi Wada
1,009 views
Bitmap marking GC
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 31
2
/ 31
3
/ 31
4
/ 31
5
/ 31
6
/ 31
7
/ 31
8
/ 31
9
/ 31
10
/ 31
11
/ 31
12
/ 31
13
/ 31
14
/ 31
15
/ 31
16
/ 31
17
/ 31
18
/ 31
19
/ 31
20
/ 31
21
/ 31
22
/ 31
23
/ 31
24
/ 31
25
/ 31
26
/ 31
27
/ 31
28
/ 31
29
/ 31
30
/ 31
31
/ 31
More Related Content
PDF
Rubyによる本気のGC
by
Narihiro Nakamura
PDF
GC黄金時代
by
Narihiro Nakamura
PPTX
オブジェクト指向とメモリ管理
by
Yota Ishida
PDF
GCをみればRTSが見えてくる、かも。。。
by
dec9ue
PDF
RubyのGC改善による私のエコライフ
by
Narihiro Nakamura
PDF
20131026 garbage collection in .net framework
by
Takayoshi Tanaka
PDF
Why did I become a ruby committer
by
Masaya TARUI
PPT
Ruby-GNOME2におけるGC問題
by
Masahiro Sakai
Rubyによる本気のGC
by
Narihiro Nakamura
GC黄金時代
by
Narihiro Nakamura
オブジェクト指向とメモリ管理
by
Yota Ishida
GCをみればRTSが見えてくる、かも。。。
by
dec9ue
RubyのGC改善による私のエコライフ
by
Narihiro Nakamura
20131026 garbage collection in .net framework
by
Takayoshi Tanaka
Why did I become a ruby committer
by
Masaya TARUI
Ruby-GNOME2におけるGC問題
by
Masahiro Sakai
Similar to Bitmap marking GC
PDF
地域Ruby会議に参加してきた話とか
by
Ken Muryoi
PDF
The Way We Are Working On Our Website @とちぎRuby会議02
by
Yoji Shidara
PDF
本番環境で使える実行コード記録機能
by
mametter
PPT
Ruby City Matsue
by
Tetsuo NODA
PDF
マーク&スイープ勉強会
by
7shi
PPTX
低レイヤから見たrubyプログラミング
by
よしだ あつし
PDF
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
by
宏治 高尾
PDF
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
by
Yukihiko SAWANOBORI
PDF
Rubyな日々
by
Kazuhiro Nishiyama
ODP
dalvikのGCをのぞいてみた
by
Fumiyuki Yoshida
ODP
コンカレントGc
by
Fumiyuki Yoshida
PDF
メタメタプログラミングRuby
by
emasaka
PDF
18166746-NeverBlock-RubyKaigi2009
by
Muhammad Ali
ODP
Small eigen collider ruby kaigi 2011
by
Andrew Grimm
PPT
JVM-Reading-ParalleGC
by
Minoru Nakamura
PPT
Jvm reading-parallel gc
by
Minoru Nakamura
PDF
JVM-Reading-ConcurrentMarkSweep
by
Minoru Nakamura
PPTX
Ruby – The Scripting Language
by
Akio Tajima
地域Ruby会議に参加してきた話とか
by
Ken Muryoi
The Way We Are Working On Our Website @とちぎRuby会議02
by
Yoji Shidara
本番環境で使える実行コード記録機能
by
mametter
Ruby City Matsue
by
Tetsuo NODA
マーク&スイープ勉強会
by
7shi
低レイヤから見たrubyプログラミング
by
よしだ あつし
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
by
宏治 高尾
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
by
Yukihiko SAWANOBORI
Rubyな日々
by
Kazuhiro Nishiyama
dalvikのGCをのぞいてみた
by
Fumiyuki Yoshida
コンカレントGc
by
Fumiyuki Yoshida
メタメタプログラミングRuby
by
emasaka
18166746-NeverBlock-RubyKaigi2009
by
Muhammad Ali
Small eigen collider ruby kaigi 2011
by
Andrew Grimm
JVM-Reading-ParalleGC
by
Minoru Nakamura
Jvm reading-parallel gc
by
Minoru Nakamura
JVM-Reading-ConcurrentMarkSweep
by
Minoru Nakamura
Ruby – The Scripting Language
by
Akio Tajima
Bitmap marking GC
1.
わだあつし @wats Ruby 2.0 の Bitmap
Marking GC って美味しいの? Tuesday, December 4, 2012
2.
自己紹介 • わだあつし @wats • 株式会社 寿限無やってます •
fukuoka.rb とか coder dojo とか fukuoka.py とか明星和楽とか • 来年からスクールをはじめます! Tuesday, December 4, 2012
3.
• Garbage Collection
( =ゴミ 収集) • メモリの自動開放機構 GCのおさらい Tuesday, December 4, 2012
4.
• 不要になったオブジェクト =
メモリ領域 • どうやって判定するのか? ゴミとは? Tuesday, December 4, 2012
5.
• シンプルなMark &
Sweep 方式 • 必要なオブジェクトをマークして、マークされなかっ たものをゴミ認定 • JavaのGenerational GCのような生存期間に合わせた再 配置などもない。 • そもそもコンパクションの機構もないみたい! 今までの Ruby GC Tuesday, December 4, 2012
6.
• Ruby1.9まではマークされたことを示すフラグは各オブジェク ト構造体の中にある。 • GCを行うと生存するオブジェクトに変更が入るということ •
マークする = write している。 マーク ( = オブジェクトへの変更) Tuesday, December 4, 2012
7.
• fork()というシステムコールを内部で使っ ているのがほとんどらしい • fork()
: 子プロセスを作る 唐突にRack アプリケーション の一般的な構造 Tuesday, December 4, 2012
8.
• 生成当初は親プロセスのメモリをそのまま参照する。 子プロセス生成の動き1 (OSによるかも。) Tuesday, December
4, 2012
9.
• 子プロセスからそこへの書き込み =
write が発生して初め てプロセス毎の差異がでる。 子プロセス生成の動き (OSによるかも。) Tuesday, December 4, 2012
10.
• その時その部分のメモリ領域を子プロセスが複製 = copyし、そこに書き込む
= write する。 • これがいわゆる copy on write • だから、親プロセスからはメモリは元の状態のまま 子プロセス生成の動き (OSによるかも。) Tuesday, December 4, 2012
11.
write があるとcopy Tuesday, December
4, 2012
12.
GCが走ると生存しているオ ブジェクトにマークのため writeされる。 Tuesday, December 4,
2012
13.
オブジェクトに実質的に差異が発生し ていないのにプロセスごとに全てコ ピーされる Tuesday, December 4,
2012
14.
これがサーバサイドRubyのメ モリ消費を増大させている。 Tuesday, December 4,
2012
15.
• writeされているのは、生存していること を示すマーク用の1bitだけ • なら、オブジェクトはそのままプロセス 間で共有させておきたい。 •
マーク用1bitだけを別領域にだしちゃお う これを何とかしたい! Tuesday, December 4, 2012
16.
• GCのマーク用1bitだけを、オブジェクト から別領域に抜き出し • GC時のwriteがその別領域だけになるの で、オブジェクトは共有のまま •
最低限のオブジェクトのコピーだけが発 生するようになる。 それが Bitmap Marking GC Tuesday, December 4, 2012
17.
• Unicorn や
Passenger使っているところで はメモリ消費が下がるはず。 • GCの際のマークに1step増えるので、GC の時間は微増らしい • 子プロセス作らんようなところ(ただの rubyスクリプトとか)には恩恵ないかと まとめ Tuesday, December 4, 2012
18.
• なんでOSのスレッド使わんのですっけ? そもそも Tuesday, December
4, 2012
19.
• 今日のパクリ元 • http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about- garbage-collection-in-ruby-2-0 •
http://www.narihiro.info/resource/presen/bitmap_gc.pdf • Rubyのスタックフレーム • http://i.loveruby.net/ja/hack/frame.html • Ruby Enterprise Edition はそもそもそんなGCらしい • http://www.rubyenterpriseedition.com/download.html 参考 Tuesday, December 4, 2012
20.
大分おおざっぱなメ モリモデルのおさらい Tuesday, December 4,
2012
21.
スタック領域とヒープ領域に 論理的に分けて使う Tuesday, December 4,
2012
22.
メソッドコール毎にスタック にスタックフレームが積まれ る Tuesday, December 4,
2012
23.
Rubyの場合、全てオブジェク トなのでヒーブに作られる。 Tuesday, December 4,
2012
24.
• ※実際は、ローカル変数を束縛したProcを返したりす るので、もっと複雑。あくまで概要 メソッドが終了すると、そのスタックフレームがpopされ、 前のメソッド(スタックフレーム)の途中から再開 Tuesday, December
4, 2012
25.
Mark & Sweepのおさらい Tuesday,
December 4, 2012
26.
ヒープにはどんどんオブジェクトがで きるのでいつか足りなくなる。 Tuesday, December 4,
2012
27.
もう使わなくなったオブジェ クトもあるはず。。。 Tuesday, December 4,
2012
28.
• 参照は、直接も間接も含む 使わなくなったオブジェクト =
メソッド(スタックフレー ム)からの参照がない Tuesday, December 4, 2012
29.
• こいつが「write」してる スタックから参照があるオブジェクトを再帰的にたどって マークする。 Tuesday, December
4, 2012
30.
• = 要らない子 •
= GC対象 マークされなかったものは参 照されていない。 Tuesday, December 4, 2012
31.
そのアドレスを要らない子リストに追加して、今後そこか らメモリを供給していく Tuesday, December 4,
2012
Download