27
GC Compartments Technology Introduction by Tomoya ASAI (aka. dynamis) Fractal Firefox Background Image: http://r.dynamis.jp/fractalfx

GC Compartments

Embed Size (px)

DESCRIPTION

Mozilla 勉強会@名古屋の LT で使用したスライド https://dev.mozilla.jp/events/workshop07/

Citation preview

Page 1: GC Compartments

GC CompartmentsTechnology Introduction

by Tomoya ASAI (aka. dynamis)

Fractal Firefox Background Image: http://r.dynamis.jp/fractalfx

Page 2: GC Compartments

Topics

JavaScript の高速化

Garbage Collection

Compartments

****分離との違い

Page 3: GC Compartments

JavaScript の高速化

Page 4: GC Compartments

AreWeFastYet?

http://arewefastyet.com/ Sunspider ベンチでも Nitoro に追いついたところです

Page 5: GC Compartments

JavaScript 高速化

SpiderMokey (Fx2) SM (Fx3) TraceMonkey (Fx3.5) TM (Fx3.6) JM (Fx4)

ベンチマーク Trace 不可コード Trace 可能コードベンチマークは SpiderMonkey を基準とした場合、Firefox 4 については現状

3.3 倍

2.6 倍

1.3 倍

3 倍程度?

Page 6: GC Compartments

Kraken

Page 7: GC Compartments

ベンチマークも無意味ではないが...

開発時の指標は何か必要だけど何の計測か正しく理解してないと...

Page 8: GC Compartments

もっと違う高速化だってあります

ベンチに反映されないものも...JavaScript 以外の高速化もですが

Page 9: GC Compartments

Garbage Collection

JavaScript のゴミ掃除

使わなくなったオブジェクト

メモリ領域を回収

Page 10: GC Compartments

これまでの Firefox

全部 1 つのヒープ領域に

全タブのデータが毎回対象に...

ブラウザ UI 側も一緒に...

Page 11: GC Compartments
Page 12: GC Compartments

要するにこれまでは

Page 13: GC Compartments

無駄が多かった (><)

Page 14: GC Compartments

関係あまりないものは別領域に分離しよう!

Page 15: GC Compartments

Compartments

メモリ領域を分割する

ドメイン毎に分割

ドメイン間の参照は少ない!

UI (Chrome) も分離

UI の変化は少ない!

Page 16: GC Compartments

これからの Firefox

必要なところだけ GC

待ち時間 (ひっかかり) が減る

キャッシュ効果も効きやすく

同時に使うものが同じ領域に

プロセス分離に近い安全性

CPU がやるかアプリがやるか

Page 17: GC Compartments
Page 18: GC Compartments

Wrapper

ドメイン間の操作を制御

これまでは動的にドメイン確認

アクセス元とアクセス先を比較

これからは静的に判断可能に

プロパティによって判断可能

要するに高速になります

Page 19: GC Compartments
Page 20: GC Compartments
Page 21: GC Compartments

ところでこの話...

Page 22: GC Compartments

プロセス分離と似てない?

ドメイン毎に分離するわけでしょ?

Page 23: GC Compartments

プロセス分離との違い

セキュリティチェックの主体

by CPU or by アプリ

使用するメモリ

プロセス分離はメモリも必要

アクセス速度

プロセス間通信は超重たい!

Page 24: GC Compartments

Mozilla の現実解はプロセス分離ではなく

Compartments

少なくとも今のところは...

Page 25: GC Compartments

プロセス分離はホントに必要?

Page 26: GC Compartments

Referencesfor more information...

Page 27: GC Compartments

reference元ネタの解説記事 (翻訳と原文)

http://firefoxhacks.at.webry.info/201010/article_3.htmlhttp://andreasgal.wordpress.com/2010/10/13/compartments/開発計画段階のメモ

https://wiki.mozilla.org/JavaScript:SpiderMonkey:GC_FuturesBugzilla の関連バグ

https://bugzilla.mozilla.org/show_bug.cgi?id=compartmentshttps://bugzilla.mozilla.org/show_bug.cgi?id=558861https://bugzilla.mozilla.org/show_bug.cgi?id=mt-wrappers