CPU使用率が上昇し、DockやSpaces、Mission Controlなど画面切り替えが反応しなくなる現象
症状
Mac OS X で、普通に操作をしている時に突然CPU使用率が100%近くにのぼり、Dock、Spaces、Expose、Mission Controlなどの(画面をシュッてやる一連のあの)機能が動作しなくなり、数十秒〜数分の間、作業ウィンドウの移動や、commant+tab によるアプリケーションの切り替えなどが反応しなくなることがあります。
起動しているアプリケーションの動作自体は行うことができます(CPUが100%使用されているのでとても重いけど)。
長い時では3分くらい続き、その間はとても使い物になりません。
問題が発生する環境・状況
僕のOSはMac OS X 10.7 Lion ですが、10.6 Snow Leopard でも起きていたような気がします。
この問題が一番多く発生するタイミングは、「command + tab によるアプリケーション切り替えで、他作業ウィンドウにあるアプリケーションに移動した瞬間」です。この操作を行ったとき3回に1回は問題が発生します。ブラウザとメーラーを行き来しながら文章を書いている時などには、あちこち画面を移動する必要があるので問題が起きると作業になりません。
他作業ウィンドウではなく、同一作業ウィンドウ内のアプリケーションに切り替えた場合でもかなりの確率で発生します。
特に、command + tab でアプリケーションを切り替えをするときには、アプリケーションの一覧が画面上にパッと出てきますが、この一覧が表示されるのを待たずに command キーを離してしまったときに一番多く発生するような気がします。
(記事を書いて20分後くらいにTwitterで指摘されて気づきましたが)短時間(1,2分)の間に以下の操作を何度も行ったときに発生することが多いような気がします。
- Mission Control(Macbookでは4本指で上にスワイプ)
- アプリケーションExpose(4本指で下にスワイプ)
- ウィンドウの移動(4本指で左右にスワイプ、または、command + option + 左右キー)
- アプリケーションの切り替え(command + tab)
アクティビティモニタ(「アプリケーション > ユーティリティ > アクティビティモニタ.app」)で、何が暴走してCPU使用率を上げているのか見てみると、「WindowServer」というプロセスのようです。
名前の通り、ウィンドウ関係の動作を司っているプロセスのようで、これが何かの理由で暴走すると、関連した操作ができなくなってしまうものと思われます。
しかしこのプロセスを強制終了させてしまうとOS自体がフリーズしてしまうので、発生したらとにかく待つしかありません。
OSX LionでWindowServerが暴走したときに試しに強制終了をさせてみましたが、OSはフリーズするのではなく、しばらく画面が固まったのちに、WindowServerが自動的に再起動するようです。
またこのとき、起動中のアプリケーションにも全て再起動がかかりましたので、もしWindowServerを強制終了する場合は、保存していないデータを保存してからにした方が良いと思われます。
また、Macをしばらく(数時間〜数日)再起動せずに使っていると(使っていないときは画面を閉じてスリープ状態にはしますが)、「control + 数字キー」による作業画面の移動が利かなくなってしまうという問題が発生していましたが、WindowServerを強制終了し再起動させることで、再びこのコマンドが利くようになりました。
WindowServerというプロセスはいろいろと問題を抱えているのでしょうか。
対処方法?
調べてみてもほとんど解決策はわかりませんでした。一応日本語では以下のページが見つかりましたが、これは2004年のページで、すでに9年前のものです…
問題を発生させている要因?
MacBook Pro(mid2012)を使っていますが、メモリは初期のものに加え、後から購入した市販の4GBメモリを追加しています。また、ハードディスクはSSDに取り替えています。
この型のMacBook Proに載るメモリはPC8500が規格ですが、買ったものはPC10600です。この辺で相性問題が発生しているのかもしれません。メモリは前方互換(新しい機種向けのものであっても古い機種でも使えるという意味)のはずなんですけどね…
別のメモリでは相性が悪くて起動しなかったり、起動しても頻繁にOSごとフリーズしたり、ブラウザで頻繁に「ページが壊れています」と言われたりしたこともありましたので、MacBookとメモリの相性問題は結構シビアなのかもしれません。
検索した限りでは、最近のブログや何かでこの問題を報告している人は全くおらず、僕のMacだけに起きている現象なのでしょうか。同じ状況が発生しているよ、というだけでも良いので、ぜひコメントなりTwitterなりでレスポンスいただけると嬉しいです。
解決策を知ってるよ、という方、いらっしゃったらぜひ教えて下さい。