Suche senden
Hochladen
make of MiniGC
•
3 gefällt mir
•
2,064 views
Narihiro Nakamura
Folgen
Melden
Teilen
Melden
Teilen
1 von 37
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
【Web2.0 Expo】リクルートWebサービス
【Web2.0 Expo】リクルートWebサービス
guesta74682
9月3日
9月3日
Yuji Fujishiro
The Crisis Of Wom
The Crisis Of Wom
武 河野
フルリモートチームで スクラム開発 やってみた!
フルリモートチームで スクラム開発 やってみた!
Tomoe Sawai
HR-054-IBM人力資源管理
HR-054-IBM人力資源管理
handbook
ハノイの塔を実装してみる
ハノイの塔を実装してみる
Hiromu Shioya
GLT #12 Naruhiko Ogasawara
GLT #12 Naruhiko Ogasawara
Naruhiko Ogasawara
eLearning Manager4U
eLearning Manager4U
guestd83ce7
Empfohlen
【Web2.0 Expo】リクルートWebサービス
【Web2.0 Expo】リクルートWebサービス
guesta74682
9月3日
9月3日
Yuji Fujishiro
The Crisis Of Wom
The Crisis Of Wom
武 河野
フルリモートチームで スクラム開発 やってみた!
フルリモートチームで スクラム開発 やってみた!
Tomoe Sawai
HR-054-IBM人力資源管理
HR-054-IBM人力資源管理
handbook
ハノイの塔を実装してみる
ハノイの塔を実装してみる
Hiromu Shioya
GLT #12 Naruhiko Ogasawara
GLT #12 Naruhiko Ogasawara
Naruhiko Ogasawara
eLearning Manager4U
eLearning Manager4U
guestd83ce7
Rsgt2021 exploratory testing
Rsgt2021 exploratory testing
Noriyuki Nemoto
FAnn Info 2/2006
FAnn Info 2/2006
Jan Martinec
20201209_chatwork資料_Kiizankiizan
20201209_chatwork資料_Kiizankiizan
kiizan kiizan
効果的な例会プログラム
効果的な例会プログラム
Matcha_md
ECサイトのメディア事業戦略
ECサイトのメディア事業戦略
武 河野
テーブルトピックス策謀書
テーブルトピックス策謀書
Matcha_md
金融業界における人工知能
金融業界における人工知能
Takanobu Mizuta
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入
Makio Tsukamoto
Requirement Development Chronicle
Requirement Development Chronicle
Kent Ishizawa
漢朝廷、大いに乱れる
漢朝廷、大いに乱れる
gunyouak
アジャイルってなんだろう
アジャイルってなんだろう
hiroyuki Yamamoto
yet another TDD
yet another TDD
Kohei MATSUOKA
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Kazumine Matoba
Web Content Marketing Case Study
Web Content Marketing Case Study
dram roll
私がチャレンジしたSBMデータマイニング
私がチャレンジしたSBMデータマイニング
Hiroshi Ono
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
hiroyuki Yamamoto
Git_guide
Git_guide
tatsunarihamasaki
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
민우 현
USENIX ATC '15 輪読会 Memory Session
USENIX ATC '15 輪読会 Memory Session
Ryo Matsumiya
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しよう
Kota Uchida
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
haru2036
Weitere ähnliche Inhalte
Was ist angesagt?
Rsgt2021 exploratory testing
Rsgt2021 exploratory testing
Noriyuki Nemoto
FAnn Info 2/2006
FAnn Info 2/2006
Jan Martinec
20201209_chatwork資料_Kiizankiizan
20201209_chatwork資料_Kiizankiizan
kiizan kiizan
効果的な例会プログラム
効果的な例会プログラム
Matcha_md
ECサイトのメディア事業戦略
ECサイトのメディア事業戦略
武 河野
テーブルトピックス策謀書
テーブルトピックス策謀書
Matcha_md
金融業界における人工知能
金融業界における人工知能
Takanobu Mizuta
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入
Makio Tsukamoto
Requirement Development Chronicle
Requirement Development Chronicle
Kent Ishizawa
漢朝廷、大いに乱れる
漢朝廷、大いに乱れる
gunyouak
アジャイルってなんだろう
アジャイルってなんだろう
hiroyuki Yamamoto
yet another TDD
yet another TDD
Kohei MATSUOKA
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Kazumine Matoba
Web Content Marketing Case Study
Web Content Marketing Case Study
dram roll
私がチャレンジしたSBMデータマイニング
私がチャレンジしたSBMデータマイニング
Hiroshi Ono
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
hiroyuki Yamamoto
Git_guide
Git_guide
tatsunarihamasaki
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
민우 현
Was ist angesagt?
(18)
Rsgt2021 exploratory testing
Rsgt2021 exploratory testing
FAnn Info 2/2006
FAnn Info 2/2006
20201209_chatwork資料_Kiizankiizan
20201209_chatwork資料_Kiizankiizan
効果的な例会プログラム
効果的な例会プログラム
ECサイトのメディア事業戦略
ECサイトのメディア事業戦略
テーブルトピックス策謀書
テーブルトピックス策謀書
金融業界における人工知能
金融業界における人工知能
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入
Requirement Development Chronicle
Requirement Development Chronicle
漢朝廷、大いに乱れる
漢朝廷、大いに乱れる
アジャイルってなんだろう
アジャイルってなんだろう
yet another TDD
yet another TDD
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Web Content Marketing Case Study
Web Content Marketing Case Study
私がチャレンジしたSBMデータマイニング
私がチャレンジしたSBMデータマイニング
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
Git_guide
Git_guide
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
정품 비아그라 구입 HXM55,COM 시알리스 판매비아그라판매처in4
Andere mochten auch
USENIX ATC '15 輪読会 Memory Session
USENIX ATC '15 輪読会 Memory Session
Ryo Matsumiya
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しよう
Kota Uchida
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
haru2036
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
Kentaro Iizuka
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
DADA246
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
alwei
neobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Shougo
Vimから見たemacs
Vimから見たemacs
Shougo
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
Allocators@C++11
Allocators@C++11
Cryolite
Andere mochten auch
(13)
USENIX ATC '15 輪読会 Memory Session
USENIX ATC '15 輪読会 Memory Session
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しよう
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
neobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Vimから見たemacs
Vimから見たemacs
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
Allocators@C++11
Allocators@C++11
Mehr von Narihiro Nakamura
Symbol GC
Symbol GC
Narihiro Nakamura
RUBYLAND
RUBYLAND
Narihiro Nakamura
Ruby's GC 20
Ruby's GC 20
Narihiro Nakamura
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
Narihiro Nakamura
Rubyによる本気のGC
Rubyによる本気のGC
Narihiro Nakamura
Fxxking gc.c
Fxxking gc.c
Narihiro Nakamura
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
Narihiro Nakamura
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
Narihiro Nakamura
GC FAQ
GC FAQ
Narihiro Nakamura
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
Narihiro Nakamura
CRubyGCの並列世界
CRubyGCの並列世界
Narihiro Nakamura
円環の理(Garbage Collection)
円環の理(Garbage Collection)
Narihiro Nakamura
地獄のGC本スピンオフ
地獄のGC本スピンオフ
Narihiro Nakamura
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
Narihiro Nakamura
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
Narihiro Nakamura
GCが止まらない
GCが止まらない
Narihiro Nakamura
GC本をGCしないための100の方法
GC本をGCしないための100の方法
Narihiro Nakamura
GC生誕50周年を祝って
GC生誕50周年を祝って
Narihiro Nakamura
GC本のツクリカタ
GC本のツクリカタ
Narihiro Nakamura
シャイなRubyistにできること
シャイなRubyistにできること
Narihiro Nakamura
Mehr von Narihiro Nakamura
(20)
Symbol GC
Symbol GC
RUBYLAND
RUBYLAND
Ruby's GC 20
Ruby's GC 20
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
Rubyによる本気のGC
Rubyによる本気のGC
Fxxking gc.c
Fxxking gc.c
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
GC FAQ
GC FAQ
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
CRubyGCの並列世界
CRubyGCの並列世界
円環の理(Garbage Collection)
円環の理(Garbage Collection)
地獄のGC本スピンオフ
地獄のGC本スピンオフ
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
GCが止まらない
GCが止まらない
GC本をGCしないための100の方法
GC本をGCしないための100の方法
GC生誕50周年を祝って
GC生誕50周年を祝って
GC本のツクリカタ
GC本のツクリカタ
シャイなRubyistにできること
シャイなRubyistにできること
make of MiniGC
1.
ミニGCの作り方
中村 成洋 ネットワーク応用通信研究所 Powered by Rabbit 0.5.9
2.
今日の 話
3.
今日の話 簡単なGCの仕組み GC
分かれ道 MiniGC の紹介 malloc&free の実装 省メモリ化の話 mark&sweep の実装 高速化の話 2/36
4.
簡単なGC の仕組み
5.
Mark&Sweep
6.
ルート
5/36
7.
Mark
6/36
8.
Sweep
7/36
9.
GC分 かれ道
10.
GC分かれ道 GC対象領域の見つけ方 メモリ領域の管理
9/36
11.
GC対象領 域の見つ け方
12.
GC対象領域の見つけ方 ConservativeGC
茨の道 PreciseGC GCを作るのは簡単 11/36
13.
ConservativeGC ユーザプログラムが現在直接さわれるメモリ
領域(レジスタ、スタック、大域変数)をルート にする a = [] <- こんなのがルートに入る 泥臭い事をやらないといけない レジスタの値を取るためにsetjump使うとか レジスタウィンドウ(SPARCとか)があったんだった とか 12/36
14.
PreciseGC ルートは自分で完全に管理
地道に追加 a = [] <- この時にaをルートへ追加 ルートにはオブジェクトを指すポインタしかな くなる precise(正確)なGC 13/36
15.
GCを作るのは簡単 不明瞭なルートがない(ambiguous roots)
CopyingGCが作れる 空間効率もいい 泥臭い事をしなくてもいい 14/36
16.
メモリ領 域の管理
17.
メモリ領域の管理 既存のmalloc使う
簡単 自作malloc使う 茨の道 16/36
18.
既存のmallocを使う Rubyがやっている mallocでがばっと確保
確保したメモリ領域をGC対象に ゴミを見つけたらfree 17/36
19.
この場合 ライブラリのmalloc&freeの性能を信頼 GCでもメモリ管理をするので二重管理
glibcでのフリーリスト gc上でのフリーリスト GC屋は嫌うそうです(え,そうだったのか) 簡単でそこそこの性能 18/36
20.
自作mallocを使う bdw-gc(boehm gc)他多くのGCライブラリ
が実装 GC_MALLOCでは内部の自作mallocが動 いてメモリ確保 GCでは上記で確保した領域が対象となる 19/36
21.
この場合 mallocで管理している領域とGCで管理して いる領域が同じ
二重管理ではない 性能は自作malloc次第 GC用に特別にチューンする事が可能 20/36
22.
でも茨の道すぎ ライブラリのmallocはとても性能がいい 太刀打ちできない
無理無理 環境依存関係の処理が膨大に CPU OS ifdef地獄 21/36
23.
MiniGC の紹介
24.
MiniGCとは とても小さいGC ソースコード350行くらい
一応ConservativeなGC mallocも自作 GC茨道 mark&sweepアルゴリズム 23/36
25.
用途 読んで貰うためのGC
24/36
26.
あと 私が作りました!
25/36
27.
malloc&free の実装
K&R malloc の焼き直し Headerにマークフラグを追加 26/36
28.
K&R mallocの復習 前の発表の別のスライドへ
27/36
29.
GC対象メモリ領域(GCヒー プ)の作成 sbrkしたものをリンクリストで保持
28/36
30.
今後出来る省メモリ化 Headerを小さく マークフラグをsizeの下位3bitに入れてしま
う 1Headerあたり4バイト削減 free_listのリンクは割り当てたものから消し てしまう コードが死ぬほど読みにくくなるのでやりま せんが! 29/36
31.
ヘッダを潰すのは良くやる手 法 minixのmallocはヘッダを潰しています
実質のヘッダはポインタが一つだけ 30/36
32.
mark and sweep
の実装 特徴 関数スタックだけを走査 大域変数とかレジスタはやりません やりたかったら add_rootsで指定 31/36
33.
関数スタック上位と下位の取 得 プログラムを使う前にmini_gc_init()を呼び 出す.
gc前にスタックの一番上を取得 スタックがどっちに伸びてるかは完全に環境 依存 適宜入れ替え 32/36
34.
mark 以下の領域をルートとする
関数スタック add_rootsで定義した領域 33/36
35.
sweep GCヒープ内を走査
Headerを見ながらmini_gc_freeで解放し ていく 34/36
36.
高速化 マークの際のヘッダ探索
今はリニアサーチ O(n) 改善方法 treeを組む ポインタで探索 O(1)でいける 35/36
37.
終わり
Jetzt herunterladen