パスワードを忘れた? アカウント作成
92919 story
Mozilla

Firefoxのマルチプロセス化プロジェクト「Content Process」 85

ストーリー by soara
マルチプロセスの流行か 部門より

あるAnonymous Coward 曰く、

Mozillaは新しく Firefoxのマルチプロセス化プロジェクト「Content Process」の存在を明らかにした(本家/.@ITより)。

マルチプロセスは Chromeや IE8でも実装されているが、タブの一つがクラッシュしてもセッション全体がダウンすることはないという利点があり、マルチコアシステムの普及によってパフォーマンスの向上が見込めるという。また、メモリリークにより動作が重くなっていくという Firefoxの問題の緩和にもなるのではないかとも言われている。

ロードマップによるとフェーズ 1として今年7月には単一タブのみ(セッションサポート無し)のURL入力+ページ表示機能をもった最低限のウィンドウを開発する計画とのこと。開発フェーズは 4段階挙げられているが、最終的なタイムラインはまだ見えないとのことだ。

「Content Process」は長年に渡ってMozillaに貢献してきた Benjamin Smedbergが率いており、コア・チームには Joe Drew氏、Jason Duell氏、Ben Turner氏や Boris Zbarsky氏が参加している。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • このトピックをみて、しばらく前に読んだブログ記事を思い出したので貼っておきます。

    なんでも評点 
    なぜ自動翻訳は使い物にならないのか? — 翻訳を生業とする立場と経験から分析してみる
    http://rate.livedoor.biz/archives/50713998.html [livedoor.biz]
  • by Anonymous Coward on 2009年05月09日 14時13分 (#1562090)

    タブ一つ一つが別プロセスになると、chrome(GoogleChromeのことではなく、FirefoxのUI部分)からタブ内のコンテンツへのアクセス方法が変わるかと思いいます。
    拡張機能が豊富にあるのがFirefoxの特徴ともいえるかと思いますが、その拡張に多大な影響がありそう。有名どころでGreasemonkeyなんかに影響がありそうですね。
    変な制限(読み取り専用になってしまい、更新ができないとか)がかかって拡張製作者、ユーザから不満が揚がらなければ良いのですが...

  • by kumaryu (17923) on 2009年05月09日 17時42分 (#1562206) 日記

    シングルプロセスでも落ちなければどうということはない!

    というか今時そんなにブラウザが落ちたりしませんし、タブの復元もありますよね。
    そこまでする必要あるんでしょうか。
    管理プロセスが落ちれば全部落ちざるを得ませんし。

    Google Chromeは使ってないのですが、使ってる人は恩恵を感じてますか?

    • Re:落ちなければ (スコア:2, 参考になる)

      by Anonymous Coward on 2009年05月09日 18時15分 (#1562220)

      http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20390270,00.htm

      --最後に1つだけ残った標的はGoogle Chromeでした。これには驚きはありましたか。

       Chromeにはバグはありますが、それらを悪用して攻撃を成功させるのが難しいのです。私はChromeの脆弱性を1つ知っていますが、これを悪用する方法はわかりません。これは非常に困難です。Chromeにはサンドボックスモデルが使われており、そこから抜け出すのが大変です。Chromeの場合、物事を組み合わせる必要があります。ヒープを実行できず、Windowsの保護があり、サンドボックスがあります。

       私はこのバグで、コードを実行することはできるかも知れません。しかし、依然としてサンドボックスの中であり、権限を持っていないので、何もできません。サンドボックスの外に出るには別のバグが必要です。つまり、2つのバグと2つの攻撃コードが必要になります。これが障害を大きくしているのです。

      親コメント
    • Re:落ちなければ (スコア:2, 参考になる)

      by renable (33361) on 2009年05月09日 18時44分 (#1562235)

      Linux版 Fxはよく落ちますよ [srad.jp]

      タブ復元も、正常終了しなかったときはクラッシュ時以前のタブセットが復元されたりしますしね。 不安定なプラグインを使っている環境ではマルチプロセス化は大いに期待できるものだと考えています。

      もちろん管理プロセスはシンプルかつ堅牢に設計するでしょうし。

      親コメント
      • Re:落ちなければ (スコア:1, 参考になる)

        by Anonymous Coward on 2009年05月10日 20時58分 (#1562656)

        nspluginwrapper [beauchesne.info]のようなものを標準搭載しておけば、プラグインがクラッシュしてもブラウザ本体まで道連れにされることはなくなるね。Google Chromeもプラグインの仕様には困ってるみたい。

        http://www.atmarkit.co.jp/news/200903/30/chrome.html

         「われわれはプラグインをなくしたいと思っています。これはセキュリティの問題にも通じるのですが、せっかくGoogle Chromeで、マルチプロセスでサンドボックス化していても、プラグインがあると、そこがネックになり得ます」

         「プラグインをどう動かすかは各ベンダに任されていて、バラバラです。プラグインによっては自身の権限を上げて管理者権限に近い状態で動いたりしています。そうすると、個別のタブをサンドボックス化していても、そこに安定性や脆弱性の問題を抱えてしまいます。Google Chromeではプラグインが停止していれば、それを検知してユーザーに提示するなど、最大限の隔離はしています。それでもプラグインの影響が大きいのです。OSに対する安定性も損なってしまう。できるだけプラグインのない世界を考えていきたいのです」

        親コメント
    • Re:落ちなければ (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2009年05月09日 21時14分 (#1562296)

      別プロセスで動くブラウザってのを使った事がないので実際のところはどうなのか分かりませんが、例えばあるタブのフラッシュがもの凄く重たくて処理が止まったようになる事があったとき、現状のFxだと他のタブでも止まるけど、別プロセスで動いていれば他のタブは多少重たくはあっても普通に使えるようになるのかなぁと思ってます。

      もちろん、作り方次第でマルチスレッドでもどうとでもなる問題なのかもしれないし、別プロセスで動くようになっても諸々の情報の共有の仕方によっては現状と変わらないのかもしれないけど。

      親コメント
    • 今時そんなに・・・まぁね。

      しかしfirefox、特定のサイト(WiredVision:http://wiredvision.jp/ [wiredvision.jp]とか)でBack操作すると結構な確率(必ずではないが1日数回)で落ちるんだなー。これが職場の最新マルチコアな環境では落ちるが、自宅の昔ながらのシングルコアな環境では落ちないのでスレッドの同期周りのバグかという気もしないではない。が、再現性が微妙で再現する最小条件がいまだに確定しない。プラグインとか全部止めて順番に戻したりみたりはしてみるものの同じ条件でも落ちたり落ちなかったりで・・・。クラッシュのレポートは送ってるけどね。

      親コメント
    • by Anonymous Coward

      Mozillaものは他のブラウザより落ちる頻度多いよ。どんどんメモリを食っていって(メモリリーク潰せてないからね)何かの拍子で死ぬ。ちなみにWindows版はまだいい方でLinux版はもっとパフォーマンスが悪くなる。まあセッションマネージメントがあるのが救いだけどな。

    • by Anonymous Coward
      FxとChrome両方使っているけど、
      Fxは起動時のタブの復元でよく落ちる。
      あと、立ち上げたままにしておくとメモリとCPUを消費して重たくなるね。
      特に動画再生しているとか、重たいことしているわけでもないのに
      CPU負荷率が高くなる。

      Chromeは安定しているけど、タブを沢山開くとデュアルコアでは処理がつらくなることがある。
      そんな時は反応が鈍いのでタブの切り替えをやるとタブを別ウインドーに独立させたり
      閉じたりの操作ミスを誘発させる。
      あとDLの履歴が明示的に消せなくて大量にDLしていると全体巻き込んでやがて落ちる。
    • by Anonymous Coward

      そりゃ、そうだけど、現実にブラウザが落ちるのはプラグインのせいだったりするわけで、
      あったほうがいいのは間違いない。

    • by Anonymous Coward

      管理プロセスが落ちれば全部落ちざるを得ませんし。

      つーか、そこが安定していないブラウザは話にもならんだろJK

  • by Anonymous Coward on 2009年05月09日 12時46分 (#1562020)

    まあ劇的な軽量化に関しては全く期待してませんけど(歴史がそれを証明しているからね)

  • by Anonymous Coward on 2009年05月09日 12時56分 (#1562031)
    こういうのってマルチスレッドではだめなんですかね?
    • by Anonymous Coward on 2009年05月09日 13時07分 (#1562033)
      既にマルチスレッド化されていますよ。

      ソースの中で

      NS_IMPL_THREADSAFE_ISUPPORTS\d

      が宣言されているクラス(たとえば画像のデコーダ)はスレッド化されて動いています。

      親コメント
      • by Anonymous Coward on 2009年05月09日 21時05分 (#1562292)
        タブごとにはスレッド分かれてないようですね。
        デュアルコアCPUのPCで、16タブを一気に開くと
        片コアだけCPU使用率100%になります。
        親コメント
    • by Anonymous Coward on 2009年05月09日 13時13分 (#1562039)
      >タブの一つがクラッシュしてもセッション全体がダウンすることはない

      これをスレッドで実現させることは、ちょっと無理があるんじゃないかな。
      それとプロセスの場合、OSにいろいろ任せることが出来るので、アプリそのものをシンプルにしやすい。
      #OSが十分に賢いことが前提としてあるけど
      親コメント
    •  実装方法にも依りますが、スレッドというのは同じプロセス空間を共有しあうタスクです。
       なので、マルチスレッドプログラムの場合、一つのスレッドがおかしくなると、同一プロセス空間に存在する他のスレッドが影響を受けます。
       マルチプロセスプログラムの場合、一つのプロセスがおかしくなっても他のプロセスは影響を受けません。
       これが「タブの一つがクラッシュしてもセッション全体がダウンすることはないという利点」というわけです。

       このため、今回の目的はマルチスレッドモデルでは達成できません。

       スレッドやプロセスの取り扱いについてはいろいろあるので、もし興味があるのならばいろいろ論文等を漁るとおもしろいでしょう。
       或いは各OSにおけるスレッド/プロセスの取り扱いについて調べるのもおもしろいかと。(少しかじった範囲だと、BSDやLinuxがマルチプロセッサ・マルチコア環境で、スケジューラにスレッド/プロセスをどのように扱わせるかいろいろやっていたみたいですね。)

      --
      ここは自由の殿堂だ。床につばを吐こうが猫を海賊呼ばわりしようが自由だ。- A.バートラム・チャンドラー 銀河辺境シリーズより
      親コメント
    • by Anonymous Coward

      「リソースを共有していること」がスレッドの定義だから、一部のスレッドが落ちれば
      リソースを共有している他のスレッドが影響を受けないわけないかと。
      (アプリ側でイロイロと工夫すればなんとかなるかもしれんが、ヒジョーにキビシー。)

      まあ逆にプロセスはプロセスで、リソースを共有していないので多数のプロセスを起動
      すると重くなるもんなんだが。そこはハード進歩による富豪的プログラミングと、OSの
      進歩でカバーできれば嬉しいなあということでは。

  • by Anonymous Coward on 2009年05月09日 14時41分 (#1562110)
    > メモリリークにより動作が重くなっていくという Firefoxの問題の緩和
    何ででしたっけ
    • by zymase (12344) on 2009年05月11日 6時07分 (#1562738)

      本当にFirefoxってメモリリークしてるんでしょうか? 何か参考になる文献があれば教えてください。

      親コメント
    • by Anonymous Coward

      プロセス終了時にOSが開放してくれるからぢゃないの?
      プログラマ「もうね、リークとかわけかんね。調査するのもまんどくせ。だから、OSに丸投げするお」って感じだと思うwww

      お前、本当にそれでいいのか、と。。。

      • セキュリティ面でもプロセスに分離させたほうが有利だし、いいんじゃない?

        親コメント
      • by Anonymous Coward
        似たような発想に基づく「CはLightweight Languageだ」というネタを思い出した。
      • by Anonymous Coward
        > お前、本当にそれでいいのか、と。。。

        いいんじゃない?
        そもそもプロセスってそういう目的でもあるし。
        システム保護の観点からは、スレッドの方が時代に逆行しているって意見もあったし。

        マルチプロセスプログラミングが主流に回帰した次には、
        リソース仮想化環境付のスレッドでも登場するんでないかな。
        # そして時代は繰り返した
        • by Anonymous Coward
          メモリーリークもつぶせないのか…
          なんというか「ハッカー」と言うものはもうこの世にはいないのかな。
          • by Anonymous Coward

            ああ、所有権管理するスマートポインタさえあれば全部OKと思ってる人?

          • by Anonymous Coward
            俺、メモリーリークを起こさせない、決定的な方法を発明したぜ。
            プロセスってシステムを発明したのさ。

            …って事でよ、メモリリークを潰すのに血道をあげてる時間があったら、
            別のことをしてる方が楽しいんでないの?
            メモリリークを潰す方が楽しかったら、メモリリークを潰してるに決まってんじゃん。
          • by Anonymous Coward
            なんつーか、あのてのキッチン辛苦^H^Hシンク的なプログラムって
            想像するにソースコードとかもすげー事になってそうだなぁ。
            メモリリークなんてその気になりゃつぶせるとは思うが、
            コスト考えるとメンドクさ、とかなんじゃねーの?
            • by Anonymous Coward on 2009年05月10日 14時34分 (#1562561)
              嫌な話だけど。
              堅牢なソフトウェアよりも拙速なソフトウェアのほうが、ありがたがられるんだよね。

              かつてはセキュアであることも後回しにされた。
              メモリリークは後回しにしても、あまり問題がない。

              たとえばユーザー各人がメモリリーク対策としてメモリを1GBほど多目に積むコストは、地球全体では莫大で、メモリリークをなくすためのコストより遥かに高いだろうけど、
              しかし、その1GBのメモリ代をプロジェクトに払ってくれればメモリリークをなくしますよと言っても、払う人はとても少ないと思う。
              ゆえに、ユーザーにメモリを買ってもらえばいいじゃんで、片付いてしまう。
              親コメント
              • by Anonymous Coward

                >ゆえに、ユーザーにメモリを買ってもらえばいいじゃんで、片付いてしまう。
                よしわかったメモリなら買うから公式のWindows64bit版バイナリを出してくれ
                ちゃんとMozillaProjectでコード署名もしてくれよ

              • by Anonymous Coward
                バイナリが気持ち悪いなら、自分でビルドしなさいよ。
                仕事で使うので公式ビルドが必要なら、金だして頼め。
          • by Anonymous Coward

            俺は#1562114 [srad.jp]や#1562237 [srad.jp]の意見に近いけど、結構反発しているやつが多いのな。つーかここはまだましだけど、2chとかパフォーマンスの悪さを指摘する意見に対してハイパワーなマシン買えよとか低脳な反応してくる馬鹿が多くて困るよ、Firefox信者は。他のブラウザ使いでこんな反応する連中はまず見かけない。

            まあマルチプロセス化自体には総論賛成だけど、ことメモ

            • by Anonymous Coward
              > パフォーマンスの悪さを指摘する意見に対してハイパワーなマシン買えよとか低脳な反応してくる馬鹿が多くて困るよ、Firefox信者は。

              すまんね、自分は低脳で馬鹿なので。

              Firefox重いなぁって思っても、まず我慢しちゃう。
              我慢しきれなかったら、
              まず、他のブラウザに乗り換えることを検討する
              次に、ハイパワーなマシンに買い替えることを検討する
              そして、Firefoxのソースを読んで手直しするのに要する時間を考えて、ハイパワーなマシンを買うことを決定する

              オープンソースのソフトなんだから、文句は言っちゃいけないと思うんだわ。
              文句があるなら自分で直せっていうのが基本中の基本だと思うから。

              最近/.Jにも、何様のつもり? って言いたくなるような消費者が迷いこんでくるので、ちょっと迷惑
              • by tarna (10845) on 2009年05月11日 3時36分 (#1562734) 日記

                >文句があるなら自分で直せっていうのが基本中の基本だと思うから。
                >最近/.Jにも、何様のつもり? って言いたくなるような消費者が迷いこんでくるので、ちょっと迷惑
                FireFoxコミュニティが大々的な宣伝を行ってシェアを延ばそうとしてるんですよね?
                IEに追いつけ追い越せとばかりに。
                「オープンソースなので文句があるなら自分で直してください。
                 それができないようなプログラマーでもない人は使わないでください」
                とか言ってるのはあなただけではないですか?

                親コメント
  • by Anonymous Coward on 2009年05月09日 16時13分 (#1562155)
    マルチプロセスって、要するにFirefox.exeが沢山起動した状態になるってこと?
    WindowsはマルチタスクOSなのでFirefox.exeを沢山実行することはできるよ。
    何がどう違うの?
    • Re:マルチタスク (スコア:3, 参考になる)

      by teramako01 (38210) on 2009年05月09日 16時35分 (#1562174) ホームページ

      マルチプロセスは Chromeや IE8でも実装されているが

      という部分で気づいてほしいところですが、Firefoxが複数起動するというより、Firefoxの中のタブ一つ一つが別プロセスで動くと思ってください。実際にはFirefox.nextでコンテンツとクロームのプロセスを分離 - Mozilla Flux [hatena.ne.jp]に

      フェーズ4では、コンテンツのプロセスを多重化する。要求に応じて、タブごと、タブグループごと、ドメインごとといったプロセスの割り当てが可能になるそうだ。

      とあるように、タブ一つ一つではないかもしれませんが。

      あと、つまらないツッコミですがFirefox.exeじゃなくてfirefox.exeですね。

      親コメント
    • それは、ウィンドウがたくさん出ただけでfirefox.exeはひとつだけなのです。
      タスクマネージャのプロセスのタブを見てみてください。firefox.exeは、ひとつしかないはずです。
      親コメント
      • Re:マルチタスク (スコア:1, 参考になる)

        by Anonymous Coward on 2009年05月09日 23時23分 (#1562351)
        つ「-no-remote [mozilla.org]」
        親コメント
      • by Anonymous Coward

        だから、どこかのタブがコケただけですべてのウィンドウが巻き添えになるというのもポイントですね。マルチプロセス化すれば、影響を受けるのはそのタブだけで済みます。
        Mozilla Suiteの時代はそれに加えてメーラーまで巻き添え食らっていましたからもう大変。

    • by Anonymous Coward

      その書き方でいくと、一つひとつのタブがFirefox.exeなんでしょうね。
      これまでのFirefoxだと沢山実行すると沢山ウインドウが出てたでしょ。
      一つのウインドウの中に沢山のタブとなるFirefox.exeが実行されてて、
      タブのひとつがクラッシュしても大元のウインドウはクラッシュせずに済む
      (他のタブへの影響が少ない)、と。

      こんな感じかな?

      #自身ないのでACでw

      • by Anonymous Coward
        大元のウインドウがクラッシュすると、全てのプロセスがクラッシュするのでしょうか?

        これって、OSとアプリケーションの関係のように見えます。要するに、大元FirefoxというOSを作って、その下でfirefox.exeというブラウザを立ち上げるような感じでしょうか?
        • Re:マルチタスク (スコア:2, 参考になる)

          by SteppingWind (2654) on 2009年05月09日 21時52分 (#1562312)

          Windowsだと分かりにくいかもしれませんが, LinuxとかならXというプログラムをkillすれば, 大概のプログラムは一まとめにクラッシュします.

          実際のところ今から10数年以上前のXはメモリリークがひどくて数日毎に立ち上げなおさないとメモリを食いつぶしてクラッシュするという有様でした. そのため, 数ヶ月以上立ち上げっぱなしなんていうプロセス監視用途ではXを使ったインターフェイスは実用にならなかったり.

          親コメント
  • by Anonymous Coward on 2009年05月09日 17時19分 (#1562193)

    >単一タブのみ(セッションサポート無し)

    タブの論理的な構成を二重にすればいいのに。

    (論理的に)下のほうのタブ構造は、従来どおり、
    シングルタスク内でセッション共有する1つ以上のタブの集合。

    それの上に、マルチタスクでセッション非共有なタブの集合、という枠を被せればいい。

    そのままGUIに反映する必要が有るかどうかは微妙だが、仮に反映させたとすると、
    「タブのなかに入れ子タブがある」ような外見になるだろう。
    (個人的には内部の仕組みを素直に外観に反映した上記のようなものを好む。)

    なんかみんな、「タブ(ブラウザ)」の形そのものを改良しようとする意欲が無いね。
    既に今のようなタブブラウザの形態をずっと続けることは規定事項だと見なしてる節を感じる。
    Mozillaも、MSも、みんな、ね。

    #昔Palm用Webブラウザ(PalmScapeだったか)で、タブにDropDownListが付いてるというUIを見て、新規さと便利さに感動したのでAC

    蛇足になるが今の窓型のGUI全般にはまだまだ改良の余地が有ると思っている。
      * MDIみたいなことをやるなら、いっそ窓の入れ子を1段じゃなく任意段でできるようにする。
      * 入れ子構造の着脱をユーザがマウス操作一発でできるようにする。アプリレベルで独自にやってる奴も既にあるが、そうじゃなくOSレベルで。
      * ウインドウの「フルスクリーン」をするターゲットというか、つまりデスクトップを、変形可能にする。(これは上記の入れ子着脱で代用できるから不要かもしらんが)
    などなど。

    • by Anonymous Coward
      Pluginの対応が難しくなるんでないかな。
      シングルタスクとマルチタスクで走るものを
      どっちでも動くようにするような下地が必要になるから
      下地は作り直しに近い修正が必要になるんじゃないかな。
  • 弊社が自社製品を使ってFireFoxのメモリリーク解析をしてみたところ、○○○時間で△△△箇所を発見することができました。
    なんていう広告を出したら面白いのに。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...