2011年08月03日

Safari Web コンテンツがメモリ大量消費するのを回避する話

 ふと気がつくとメモリ使用量が赤と黄色で塗りつぶされている。
 たいしたこともしてないのに、これは何だと調べてみると、どうも Safari が大量に消費しているようだ。

大量メモリ消費

  • Safari
  • Safari Web コンテンツ
  • Flash Player (Safari用インターネットプラグイン)
 の 3プロセスで、なんと 4GB近く消費している。
 (調べた環境は、MacBook Pro 17(2010夏) + 8GBメモリ + OSX Lion)
 どう考えても、尋常ではないと思うが、せっかく Safari が使いやすいと思って使い始めたところだし、できれば使い続けたい。
 ネットで調べてみると、同じようにこのメモリ消費を問題視している記事がいくつかあった。
が、解決策はまだ発見されていないようだ。

32bit にしてみたらどうなるのか

 Safari は 64bit アプリなので、これを 32bit起動するようにしてやれば、幾分ましにはなるのではなかろうか、と、試してみたら、これが案外いい感じである。依然、大量のメモリを消費するものの、トータルで 1GB 未満には収まっているようだ。数日使ってみたが、いまのところ、だいたい 500MB 程度で推移してるようだ。
 32bit起動することで、特に目立ったペナルティもなさそうだし、この程度なら、なんかと我慢できるのではないかと思う。

 ちなみに、32bit 起動のやり方は簡単で、Safari の アイコンを Ctrl+クリック(または右クリック)して、オプション->Finderで表示 で、Finder表示される。表示された Safariアイコンの「情報を見る」と、「32ビットモードでひらく」があるので、そこにチェックを入れるだけだ。

Safari

 ただ、32bit 起動にしてから、Safari が落ちることが増えたような気がする。ダウンロードとかのファイル選択ダイアログが開くタイミングで落ちることが多い。これが 32bit 動作のせいなのかどうかは、まだわからないが、数GBのメモリを食われてしまうことを思えば、まだ我慢の範囲内だ。
 こうやってしのいでいるうちに、改善されることを祈ろう……

その後

 32bit 起動で、ファイルダウンロードのタイミングで落ちる現象がひどくなってきたので、64bit にもどしてみた。
 しばらく使っているが、数GBにおよぷメモリ消費はまだ発生していない。
 先日確認したときは、"Safari Web コンテンツ" と同じくらい "Flash Player (Safari 用インターネットプラグイン)" が大量消費していたので、もしかしたら Flash を利用するサイトをたくさん表示すると発生する現象なのかもしれない。
 ちなみに、64bit の状態でまだいちども落ちたことはないので、落ちる現象は 32bit に依存しているように思う。


posted by tekniq at 19:44 | Comment(0) | TrackBack(0) | Mac

VirtualBox+WinXP+VisualStudioにマルチコア設定はNG

 MacにはBootCampがあってWindowsを利用できるのだが、「Windowsアプリの開発」以外は OSXを使いたい。そこで、本格的に VirtualBox を使うことに決めていろいろ試してみた。
 少しでも軽くしたいので、Windows7ではなくWindowsXPを使うことにする。

マルチコア設定

 VirtualBox にはマルチコアの設定があってマルチコアの仮想マシンを作れる

Coresetting

 が、しかし、ゲストOSインストール時にシングルコアの設定になっていると、あとでマルチコア設定にしても正しく認識されない。
 逆にマルチコアの設定でゲストOSをインストールすると、あとでシングルコアにしても正しく設定される。
 この理屈でいくと、どちらで使うにしてもマルチコア設定でインストールしておけば問題ない。
 ……と、言いたいところだが実は大きな問題がある。
 結論を先に言うと、
  • マルチコアでは VisualStudio は使いたくないくらい重い
  • マルチコアインストールしたゲストOSをシングルコア設定に変えても同じ
  • シングルコアインストールしたゲストOSでは、十分実用になる
 ということだ。
 今のところ、怪しい挙動は VisualStudio2008 でしか確認できていないけど、他にもあるのだろうと思います。

VisualStudio2008

 マルチコアに設定した環境で、VisualStudio2008をしばらく使っていた。Windowsじたいの動作とか、他のツール類の動作には特に問題も違和感もなく、これが仮想マシンなのかと思うくらいスムーズに動作する。数年前の印象とはずいぶん違う。これなら仕事に十分使える、という印象だ。
 ところが、VisualStudio だけは、お世辞にも使えるレベルではない。
 ビルドも実行も、十分なパフォーマンスを発揮しているのだが、ファイルの保存が異様に遅いのだ。
 数kバイトの小さなソースファイルを編集して、保存するのに 10〜15秒かかっている。
 ソースコード等、開発リソースはホストOSの共有フォルダを使ってネットワークドライブとしてマウントしている。
 そのペナルティを差し引いたとしても、驚くほどの遅さである。
 しかもそれだけではない。むしろこちらが大問題なのだけど、数分ごとに、VisualStudio が 10秒〜2分程度固まるのだ。恐らく、バックで何かファイルの読み書きをやっているのではないか、と想像している。
 これは尋常なストレスではない。ほかのたまに使うツールであればまだ我慢できたかもしれないが、VisualStudio である。これを使うために VirtualBox を利用するのである。それがこの状態では、はっきりいって使い物にならない。
 VisualStudio の設定で、何か緩和できないかといろいろやってみたが、いっこうに改善される様子はない。
 VirtualBox のプロセッサ設定でコアの数を1〜4ですべて試してみたが、何も変わらない。

シングルコアで試す

 ものは試し、と、シングルコア設定でゲストOSのインストールからやり直してみた。
 すると、VisualStudio は嘘のようにすいすい動作するようになった。
 さては、VirtualBox のマルチコア動作に問題があって、全然パフォーマンスを発揮できていないのではないか、とベンチマークをとってみた。
 結果は、しかし、良好だ。マルチコアの方が全体にパフォーマンスがいい。

Alltest

 よく見てみると、演算、メモリ等は、2core の方がほぼ倍近いパフォーマンスがでているのに、描画系(Rectangle,Text,等)が、2core のほうがほぼ半分くらいになっている。これは興味深い現象だ。
 また、ネットワークドライブのパフォーマンスも計測してみた。

Netdrv

 これは、それほど差がないように見える。

結論

 すっきりとした結論をだすことは出来なかった。
 2core設定は、演算、メモリアクセスは高速になるが、描画はむしろ遅くなる、ということか。
 マルチコアだからといって、メモリアクセスが高速になる理由はないので、これは恐らく複数コアでのアクセスによって、トータルのスループットが向上したのではないかと想像する。
 それにしても、VisualStudio の保存の問題は、なにが原因なのかよくわからなかった。

 これだけは言える。
 シングルコアでインストールしたゲストOS(WindowsXP)であれば、VisualStudio2008 は、十分実用的に利用できる。


VirtualBox に Snow Leopard を入れてみたので、その話はまたいずれしてみたいと思っている。


posted by tekniq at 08:48 | Comment(0) | TrackBack(0) | Mac