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
EN
Uploaded by
miura1729
2,583 views
Precise garbage collection for c
Read more
7
Save
Share
Embed
Embed presentation
Download
Downloaded 10 times
1
/ 16
2
/ 16
3
/ 16
4
/ 16
5
/ 16
6
/ 16
7
/ 16
8
/ 16
9
/ 16
10
/ 16
11
/ 16
12
/ 16
13
/ 16
14
/ 16
15
/ 16
16
/ 16
More Related Content
PDF
テーマ「最適化」
by
technocat
PPTX
20151118卒研進捗LT
by
mohemohe
PPTX
タイマー
by
TENTO_slide
PDF
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
by
Takeshi Yamamuro
PDF
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
PPT
整数列圧縮
by
JAVA DM
PDF
マーク&スイープ勉強会
by
7shi
PDF
optimal Ate pairing
by
MITSUNARI Shigeo
テーマ「最適化」
by
technocat
20151118卒研進捗LT
by
mohemohe
タイマー
by
TENTO_slide
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
by
Takeshi Yamamuro
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
整数列圧縮
by
JAVA DM
マーク&スイープ勉強会
by
7shi
optimal Ate pairing
by
MITSUNARI Shigeo
What's hot
PDF
きつねさんでもわかるLlvm読書会 第2回
by
Tomoya Kawanishi
PDF
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
by
Takeshi Yamamuro
PDF
ジャパネットQB GPars
by
Takahiro Sugiura
PDF
V6でJIT・部分適用・継続
by
7shi
PDF
LLVM最適化のこつ
by
MITSUNARI Shigeo
PDF
研究動向から考えるx86/x64最適化手法
by
Takeshi Yamamuro
PDF
Qt × Reactive Extensions
by
TetsuroMatsumura
PDF
llvm入門
by
MITSUNARI Shigeo
PDF
Boost.B-tree introduction
by
Takayuki Goto
PPTX
Prosym2012
by
MITSUNARI Shigeo
PDF
Wavelet matrix implementation
by
MITSUNARI Shigeo
PPTX
巨大な表を高速に扱うData.table について
by
Haruka Ozaki
PDF
テーマ「最適化 その2」
by
technocat
PDF
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
KEY
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
PDF
lispmeetup#63 Common Lispでゼロから作るDeep Learning
by
Satoshi imai
PDF
Delimited Dynamic Binding
by
Youyou Cong
PDF
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
by
MITSUNARI Shigeo
PPTX
Spmv9forpublic
by
T2C_
PDF
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
きつねさんでもわかるLlvm読書会 第2回
by
Tomoya Kawanishi
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
by
Takeshi Yamamuro
ジャパネットQB GPars
by
Takahiro Sugiura
V6でJIT・部分適用・継続
by
7shi
LLVM最適化のこつ
by
MITSUNARI Shigeo
研究動向から考えるx86/x64最適化手法
by
Takeshi Yamamuro
Qt × Reactive Extensions
by
TetsuroMatsumura
llvm入門
by
MITSUNARI Shigeo
Boost.B-tree introduction
by
Takayuki Goto
Prosym2012
by
MITSUNARI Shigeo
Wavelet matrix implementation
by
MITSUNARI Shigeo
巨大な表を高速に扱うData.table について
by
Haruka Ozaki
テーマ「最適化 その2」
by
technocat
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
lispmeetup#63 Common Lispでゼロから作るDeep Learning
by
Satoshi imai
Delimited Dynamic Binding
by
Youyou Cong
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
by
MITSUNARI Shigeo
Spmv9forpublic
by
T2C_
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
Similar to Precise garbage collection for c
PDF
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
by
Masahiro Sakai
PDF
GCをみればRTSが見えてくる、かも。。。
by
dec9ue
PDF
V6read#3
by
magoroku Yamamoto
PDF
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
boost tour 1.48.0 all
by
Akira Takahashi
PDF
Boost Tour 1.50.0 All
by
Akira Takahashi
PDF
Rのデータ構造とメモリ管理
by
Takeshi Arabiki
PDF
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
by
Masahiro Sakai
PDF
Boost tour 1_40_0
by
Akira Takahashi
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
PDF
Boost Tour 1_58_0 merge
by
Akira Takahashi
PDF
フラグを愛でる
by
MITSUNARI Shigeo
PDF
Pfi Seminar 2010 1 7
by
Preferred Networks
PDF
Boost Tour 1.53.0 merge
by
Akira Takahashi
PDF
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
by
洋史 東平
PPTX
64-bit SML# への壁
by
chunjp
PDF
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
by
reona396
PDF
V6 unix in okinawa
by
magoroku Yamamoto
PDF
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
by
洋史 東平
KEY
Objc lambda
by
matuura_core
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
by
Masahiro Sakai
GCをみればRTSが見えてくる、かも。。。
by
dec9ue
V6read#3
by
magoroku Yamamoto
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
boost tour 1.48.0 all
by
Akira Takahashi
Boost Tour 1.50.0 All
by
Akira Takahashi
Rのデータ構造とメモリ管理
by
Takeshi Arabiki
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
by
Masahiro Sakai
Boost tour 1_40_0
by
Akira Takahashi
研究生のためのC++ no.2
by
Tomohiro Namba
Boost Tour 1_58_0 merge
by
Akira Takahashi
フラグを愛でる
by
MITSUNARI Shigeo
Pfi Seminar 2010 1 7
by
Preferred Networks
Boost Tour 1.53.0 merge
by
Akira Takahashi
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
by
洋史 東平
64-bit SML# への壁
by
chunjp
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
by
reona396
V6 unix in okinawa
by
magoroku Yamamoto
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
by
洋史 東平
Objc lambda
by
matuura_core
Precise garbage collection for c
1.
Precise Garbage Collection
for C の紹介 CSNagoya 三浦英樹
2.
Precise Garbage Collection
for C 著者 Jon Rafkind, Adam Wick, John Regehr, Matthew Flatt 入手先 http://www.cs.utah.edu/~regehr/papers/ismm15-rafkind.pdf
3.
CのプログラムでもGC使いたい • 普通、保守的 GCでしょう •
たとえば、Boehm GCとか • でも、長い時間使ってるとメモリー使用量 がすごく増大する場合があるみたいだよ • 証拠は? • それは、次のスライドの心だー
4.
PLT Schemeにあった怖い話 • PLT
Schemeを使用したプログラム環境 DrSchemeは毎日再起動をしなければならなかっ た。でも、正確なGCに変えたら再起動が必要なく なった • バイトコードとドキュメントを生成すると、正確な GCだと200MBで済むところが、保守的GCだと 700MBも必要だった • PLT Schemeで作ったmail clientを1日おきに再起 動していたが、正確なGCに変えたら再起動しなく て済むようになった
5.
正確なGCを実現するためには • 次の2つが重要 –
生きているポインタとそうでないものを分ける – アロケーションしたものとその中身がなんなのかをしっ かり関連付ける • 簡単に言うけど難しいよーだってCだもん – コンパイラ相当のものを作って、もってる型情報とか 駆使して頑張る
6.
サポートしています • 配列なんかの途中を指しているポインタ –
効率が悪くなるから出来る限り使わない方が いいみたい • 共用体 – いまどのメンバーを使っているか記録する – 代入したメンバーと違うメンバーを使う行儀の 悪いことはサポートしない。
7.
サポートしていません • いったん、範囲外にポインタを動かしてもう一度
範囲内に戻す p = malloc(1024) p -= 1024 p[1025] /* access 1024 to 2047 */ • ポインタでxorをとってみたり – xor linked listとか。頭いい人っているねー • 一旦整数にcastしてまたポインタにcast – CRubyはgive up • ライブラリの中でアロケーションしちゃったりとか
8.
ローカル変数 ポインタの情報を配列に入れる
// TRANSFORMED int cheeseburger(int* x) { void* gc_stack_frame[3]; → プログラム変換を行う /* chain to previous frame: */ void* last_stack_frame = GC_last_stack_frame(); gc_stack_frame[0] = last_stack_frame; /* number of elements + shape category: */ gc_stack_frame[1] = (1 << 2) + GC_POINTER_TYPE; /* variable address: */ // ORIGINAL gc_stack_frame[2] = &x; int cheeseburger(int* x) { /* install frame: */ GC_set_stack_frame(gc_stack_frame); add_cheese(x); add_cheese(x); return x[17]; /* restore old GC frame */ GC_set_stack_frame(last_stack_frame); } return x[17]; }
9.
変換後プログラム拡大 // TRANSFORMED
/* variable address: */ int cheeseburger(int* x) { gc_stack_frame[2] = &x; void* gc_stack_frame[3]; /* install frame: */ GC_set_stack_frame(gc_stack_frame); /* chain to previous frame: */ add_cheese(x); void* last_stack_frame = GC_last_stack_frame(); /* restore old GC frame */ gc_stack_frame[0] = last_stack_frame; GC_set_stack_frame(last_stack_frame); return x[17]; /* number of elements + shape category: */ } gc_stack_frame[1] = (1 << 2) + GC_POINTER_TYPE;
10.
結局 • GCのシステムにどのローカル変数が生き
ているポインタを持っているかを教える – コンパイラが変数の型を把握していることを利 用
11.
malloc部分の変換 • mallocってこんな感じで使うよね
malloc(sizeof(foo) * 5) • これをみると、アロケーションするタイプ (foo)と数(5)が分かるわけだ。 • 正確なGCだと何の型のデータをアロケーションしたかの 情報も必要なのでこんな感じで変換 GC_malloc(sizeof(foo) * 5, gc_foo_tag) • で、foo_tagってなんなの? – それは次のスライドの心だー
12.
gc_foo_tagって? • gc_tag_struct型の構造体 • アローケートしたオブジェクトと型を結びつける •
内容はmarkとrepair(コンパクション) 処理を行う 関数へのポインタ struct foo { int *x; int *y;} とするとmarkを行う関数 void gc_mark_struct_foo (void * x_) { struct foo *tmp = (struct foo *) x_; GC_mark(tmp->x); GC_mark(tmp->y); } こんな関数をコンパイル時に自動生成する。 ユーザがmark/repair関数をカスタマイズすることも可能
13.
いろいろやってみた
(PTL Scheme) • PLT SchemeのGCをConservative GCから Precise GCにしてみた • 最初に説明した通り、メモリ使用量が激減 • 実行速度は – メモリアロケーションが多いベンチマークは20% くらい速くなる – メモリアロケーションが少ないベンチマークは1 0~20 %遅くなる
14.
いろいろやってみた
(Linuxカーネル!) • カーネルなんて絶対メモリーリークしちゃい かんし、GCが欲しいよね • なんかいろいろ面倒だったみたい。続きは 論文で • tmpfsからddコマンドでファイルアクセス – GC付きのものが4割ほど遅い • HDDからddコマンドでファイルアクセス – あまり変わらない
15.
まとめ • この技術すげー。今後、いろんなところで
使われるようになるはず。 • GC本第2版は保守的GCの章を書き換えな いといかんかもしれませんねー • 8ccでサポート予定だから楽しみ http://github.com/rui314/8cc
16.
ご清聴 ありがとう ございました
Download