chromeのprocess modelがわからない


ubuntu上のchromeが重い
chromeをずっと使ってると非常に重くなってくる。processのmemory使用量が2GB(40tab位開いてて、遷移もしている)に近づくと新規tabの作成や、既存で開いていたtabをscrollさせる時にひっかかりのような重さが出て来る。

そこで、起動時の引数に --process-per-tab を付けてみた。この引数を付けると各tabにそれぞれprocessが割り振られるらしい。processの肥大化が問題なら、これで緩和されたらいいなーと試してみた。

すると願い通り、非常に軽くなった。ただし、memoryの消費もはんぱ無い事になってる。限界を越えるとswapの嵐。vmstatで観察していると面白い。でも、とりあえずは(VirtualBoxとかを大きなmemory確保とかで動かさない限りは)限界に到達しないんで、しばらくはこれで良いかなーと思ってる。


ちょっと調べてみる
chromiumのdocument を読むと、それぞれのtabはそれぞれのprocessになると読めるんだけど、下の絵のように、chromeのタスクマネージャーを見ると1processが複数tabを持っているように見える。

うーん。良くわからん。

ちなみに、ちょっと話がずれるけど、マニュアルのprocess-per-tabの弱点についての記述も、よく意味がわからない。

Leads to undesirable fate sharing between pages. If the user navigates a tab in a browsing instance to a different web site, the new page will share fate with any other pages in the browsing instance.

すごい意訳だけど、

page間でいやんな運命も共有しちゃうよ。もし、あるbrowser instanceのあるtabで別siteに遷移すると、新しいpageは、そのbrowsing instanceの別のページと運命を共有しちゃうよ。

このbrowsing instanceって、このdocの上の方で述べている、site毎のrender processって事かな?で、運命って言い回しは、ようするに資産共有しちゃうんで、crashとかすると巻き込まれるよと。tabでは無く、pageと言ってるのが、ちょっと良くわからない。1tabに表示出来るのは1pageなわけで、そのpageが壊れるって、tabが壊れるってのとは同義じゃないの?

わざわざこう書いてるって事は違うんだろうけど。


結論

  • よくわからないんで、時間をかけてちゃんとchromiumのdocumentを読んでみる必要がある。
  • そもそもdefaultの設定で、たかだか40tab位で遅くなるってのがおかしい気がする。なんか僕の環境おかしいのかな?
  • 英語力無さすぎ。

とりあえずそんなかんじ。