12/02/19 17:13:57.40 Putn04AG0
goals for multi-process firefox
URLリンク(blog.mozilla.com)
Firefoxの開発者が解説する「なぜFirefoxをマルチプロセスにしなければならないのか」
(1) 性能向上
・不要なメモリを回収する処理を実行する際に、シングルプロセスだとプロセス全体をスキャンする必要が生じる
マルチプロセスなら必要なプロセスのみをスキャンするだけでいい
・シングルプロセスの場合はメモリの回収作業時にメインスレッドが停止する。このためFirefoxでは現在メモリの
回収作業をなるべく細切れにさせて凌いでいるが、依然としてメインスレッドが停止している事実は変わらない
・上記の問題は、Twitterやfacebook等の巨大なWebアプリケーションを動かしているときに顕著になる
(2) マルチコア搭載機での恩恵
・マルチコア搭載機の場合はWebそのものの基本的な課題であるシングルスレッドモデルにおいて
複数のコアを同時に使用することによるマルチプロセス化の恩恵を得られる
(3) 予測可能なメモリの振る舞い
・システムが報告する「Firefoxのメモリ使用量」とFirefoxが把握している「メモリ使用量」が一致しないことがある
これはFirefoxが長時間動作している内に確保したメモリが徐々に断片化してしまい、Firefoxが使用しているメモリ量以上の
領域をOSレベルで確保してしまっていることが原因。この現象は確保したメモリの再配置ができないCやC++で長時間
プロセスを動かし続けると必然的に起きる問題であり、Firefox固有の問題ではない
そしてこの問題の最良の解決法は該当のプロセスを終了すること
(4) クラッシュからの保護
・クラッシュは通常プロセス単位で発生するので、マルチプロセスだとブラウザがクラッシュした際に原因の特定・復旧が容易
(5) セキュリティのためのサンドボックス
・OSはプロセスの権限を管理できるので、低権限モードでプロセスを実行することで悪意あるコードの暴走を抑えることができる
ただし、OS自体の特権昇格の脆弱性を突かれた場合はFirefox側のサンドボックスでは対応できない