ページ

2008年9月5日

Google Chromeが凄いらしい件

最近はプロセス間通信のおもしろいことが多いと,勝手に想像しています。
さて,Google Chromeが至る所で話題になっています。テクニカル以外のことはそのうち「あすなろ」に書くとおもいます。Google Chromeが面白いと言うことですが,Google ChromeのDesign Noteがとても面白いです。WebKit(Safariのレンダリングエンジン)とV8のJavaScript engineの組み合わせの話ではなく,プロセス管理の話です。

電車に揺られながら読んだので,すっ飛ばしているところがあるかもしれません。
基本的にタブ一つにつき一つのプロセスで動きます。Chromeを起動した直後は,全体をマネージメントするプロセスと,最初のタブのプロセスの二つが起動します。タブが増えるに従って,プロセスが増えます。どれか一つのタブ(プロセス)が変なことをしても,他のタブが影響を受けることは少ないです。Webアプリを必須のアプリにするためには必要な機能なのでしょう。だって,Wordが落ちたら,一緒にExcelまで落ちたりとかしたら悲しいよね。
さて,今まではWindows一つにつき,一つのプロセスと言う常識でした。アプリケーションのバッググラウンドで複数のプロセスが動くことはありましたが,UIを担うものは一つのプロセスです。でも,Chromeはタブごとにプロセスを割り当てると言うへんな発想です。凄いです。また,タブだけじゃなくって,サイトごとにプロセスを切り替えると言うこともやっているようで,メモリーリークの影響が最小限に抑えられているようです。

で,プロセスを沢山動かすと,プロセスの起動のオーバーヘッドや,プロセス間通信のオーバヘッドでスレッドよりも遅くなるとおもっていましたが,Chromeを使った感触では,速いです。プロセス間通信については,Python2.6のmultiprocessingなど,最近気になることが多いです。

僕は数個のタブを開いただけですが,社内で30個ぐらいタブを開いて実験した人がいます。開いたのは普通のサイトだそうです。プロセスの数を数えると9つぐらいしかいなかったそうです。単純に1タブ1プロセスじゃなく,JavaScriptを使っているかなどで,いくつかの判定基準でプロセスの起動を制御しようとしているのかもしれません。

プロセス間通信の仕組みは,あんまりよくわかりませんでした。なんか大事なことが抜けているような気がする。

0 件のコメント: