MacのWindowServerプロセスが重くなった – 外部ディスプレイと大量ファイルの影響

macOSのアクティビティモニタを開いてビックリ!WindowServerプロセスのCPU使用率が50%を超えていました。普段のスムーズな動作はどこへやら、Macが明らかに重くなっていたのです。

原因の特定

アクティビティモニタで確認すると、以下の状況でした。

  • WindowServerのCPU使用率:55.1%
  • GPU使用率:24.0%
  • メモリ使用量:1.36GB(画像にはない)

これはかなり高い数値です。システムをさらに調べてみると、次の要因が分かりました。

WindowServerとは

WindowServerはmacOSで画面表示全般を管理する根幹プロセスです。全てのアプリの画面描画や更新、ウィンドウの管理を一手に引き受けています。このプロセスの負荷が高くなると、Mac全体の動作が重くなってしまいます。

WindowServerはmacOSのDisplay Serverとして動作し、すべてのグラフィカルな描画処理を統括します。具体的には:

  1. ウィンドウのコンポジット(合成)処理
  2. GPU ↔ CPU間のデータ転送管理
  3. Metal(macOSのグラフィックAPI)を通じた描画命令の実行
  4. イベント(マウス、キーボード等)の配信

このプロセスがCPUリソースを大量に消費する主な原因は、レンダリングパイプラインの各ステージでの計算量の多さにあります。

グラフィック設定の最適化

システム環境設定でアクセシビリティを開き、以下の設定を変更しました。

  • 「透明度を下げる」をオン
  • 「視差効果を減らす」をオン(元からできていた)

この変更だけで、WindowServerのCPU使用率が16.0%まで低下。GPU使用率も劇的に改善しました。

透明度設定がパフォーマンスに影響する理由

「透明度を下げる」設定をオンにすると:

  1. アルファブレンディング処理が簡略化または無効化
  2. 透過ピクセルの合成計算( R×α + B×(1-α) )が不要に
  3. GPUのフラグメントシェーダーの処理負荷が大幅に低減
  4. VRAMのテクスチャ要件とメモリ帯域幅の節約

特に複数の透明ウィンドウが重なる場合、各ピクセルで複数回のアルファ計算が必要になります。これを無効化することで、計算量が劇的に減少します。

視差効果の無効化による効果

視差効果(parallax effect)の処理では:

  1. ジャイロセンサーやマウスの動きをトラッキング
  2. 3Dトランスフォーメーション計算(行列演算)
  3. Z軸方向の位置に応じた要素のレイヤー移動
  4. 60FPSでの連続的な再描画

これらの計算を無効化することで、CPU/GPUの演算リソースを大幅に節約できます。

ほかの要因

複数の外部ディスプレイ接続

MacBook Airに接続されていたのは以下の3つのディスプレイです。

  • 内蔵Retinaディスプレイ(2560×1600)
  • 外部21.5インチディスプレイ(1080×1920)
  • もう1台の外部21.5インチディスプレイ(1920×1080)

複数ディスプレイ構成では:

  1. フレームバッファのVRAM要件が解像度に比例して増加
  2. 各ディスプレイ固有のカラープロファイル適用
  3. 異なるリフレッシュレートの同期処理(V-Sync)
  4. DisplayPort/HDMIインターフェースのオーバーヘッド

3画面構成では、特にMacBook AirのIntel UHD Graphics 617のメモリバンド幅の限界に達しやすくなります。

大量のファイルのサムネイル表示

Finderで1000個以上の画像ファイルがあるフォルダを開いていました。それぞれのファイルのサムネイル表示はWindowServerに大きな負担をかけます。

大量の画像ファイルのサムネイル表示では:

  1. 各ファイルのメタデータ読み込み
  2. 画像デコード(JPEG/PNGなど)
  3. リサイズとミップマップ生成
  4. キャッシュ管理とメモリアロケーション

1000個のファイルの場合、これらの処理が並列で実行され、I/O待ちとCPU使用の両方でボトルネックが生じます。

ファイル管理の工夫

大量の画像ファイルがあるフォルダは、以下の方法で負荷軽減できます。

  • Finderの表示形式をリスト表示に変更
  • アイコンプレビューをオフに設定
  • フォルダを月別やカテゴリ別に分割

リスト表示への切り替えは、これらの処理をスキップできるため効果的です。

AIアプリケーションの影響

ClaudeやPerplexityなどのAIアプリを使い始めてから、パフォーマンス低下を感じるようになりました。これらのアプリはリアルタイムでの文字入力やアニメーション効果など、画面更新が頻繁に発生します。

ClaudeやPerplexityのようなアプリは:

  1. WebKitベースのUIでJavaScriptの頻繁な実行
  2. リアルタイムUIアニメーション(requestAnimationFrame)
  3. WebRTCや長時間接続による継続的なネットワーク通信
  4. Electronフレームワークのオーバーヘッド(アプリ版の場合)

これらは定期的なGPU再描画を要求し、WindowServerの負荷を増加させます。

ClaudeやPerplexityなどのアプリは、必要な時だけ起動するようにしました。これらのアプリはウェブブラウザでも利用できるので、デスクトップアプリの代わりにブラウザを使うのも一つの方法です。

結果と考察

設定変更後、WindowServerのCPU使用率は33.9%、GPU使用率は1.2%まで低下しました。体感できるレベルでパフォーマンスが改善し、Macはサクサク動くようになりました。

外部ディスプレイを引き続き使用しながら、グラフィック設定の調整とファイル管理の工夫で、十分な効果が得られることが分かりました。特に「透明度を下げる」と「視差効果を減らす」の設定は、見た目への影響が少ない割に大きな効果があります。

Macの動作が重くなって困っている方は、まずはこれらの設定を試してみてください。