MacBook Air (2018)に外付けディスプレイを2台接続して使っていたところ、ファンが常に回り続けて本体が熱くなる問題に悩まされていました。アクティビティモニタを見ると、WindowServerというプロセスがCPUを53%も使っている。
これは明らかに異常です。外付けディスプレイの負荷を減らそうと、解像度を下げたりリフレッシュレートを調整したりしましたが、ほとんど改善しませんでした。
ところが、意外なところに原因がありました。
それは「透明度を下げる」という、むしろ負荷軽減のために有効にしていた設定だったのです。
1. WindowServerが異常に高い
やや古めのMacBook Airに外付けディスプレイを2台接続して利用しています。
もともと、MacBook Airの処理性能はそこまで強力ではないので、ある程度処理が落ちるのも仕方がないと思いつつ使っています。
- MacBook Air (2018)
- プロセッサ: 1.6 GHz デュアルコア Intel Core i5
- グラフィックス: Intel UHD Graphics 617
- メモリ: 16GB
- OS: macOS Sonoma 14.8.1
- ディスプレイ構成
- 内蔵ディスプレイ: 13インチ(1440×900)
- 外部ディスプレイ1: USB接続(DisplayLink)
- 外部ディスプレイ2: USB-C to HDMI変換アダプタ経由
ただ、最近 Zoomミーティングで画面共有してブラウザを操作していたら、異様に遅くなって困りました。
そろそろ買い替え時期だとは思いましたが、もう少し設定でなんとかならないか調べてみました。
外付けディスプレイを2台接続した状態で、アクティビティモニタを確認してみました。
すると、WindowServerというプロセスがCPUを53.1%も使っていることがわかりました。
WindowServerは、macOSで画面描画を管理する重要なシステムプロセスです1。
通常、内蔵ディスプレイのみの使用時は3〜10%程度のはず2。
53%は明らかに異常です。
全体のCPU使用状況を見ると、アイドル状態でも65%しか余裕がありません。
これでは他の作業をするとすぐにCPUが限界に達してしまいます。
1.1. WindowServerとは
ちょっと専門的な話になりますが、WindowServerはmacOSでとても重要な役割を担っています。
具体的には、こんな仕事をしています:
- すべてのウィンドウを重ね合わせて最終的な画面を作る
- ウィンドウの移動やサイズ変更のアニメーション
- 複数のディスプレイへの映像出力
- 透明効果や影の描画
- マウスやキーボード入力の処理
つまり、画面に表示されるものすべてを管理しているプロセスなんです。
だからこそ、このプロセスの負荷が高いということは、画面描画に何か問題があるということを意味します。
2. 最初の対処:ディスプレイ設定の調整
外部ディスプレイを接続している場合や、4K解像度のディスプレイを使用している場合に、WindowServerの高CPU使用問題が顕著に現れることが報告されています3。
2.1. リフレッシュレートを下げてみる
まず試したのは、リフレッシュレートを下げることでした。
外部ディスプレイのリフレッシュレートを60Hzから50Hzに変更してみました。
結果は:WindowServer 53.1% → 36.6%
16ポイントほど改善しましたが、まだ36%は高すぎます。
目標の10%以下には程遠い状態です。
2.2. 解像度を下げてみる
次に、外部ディスプレイ2台の解像度を1080pから720pに下げてみました。
結果は:WindowServer 36.6% → 37.9%
なんと、誤差の範囲でほとんど変化なし。
解像度を下げても改善しないということは、ピクセル数の問題だけではなさそうです。
3. USB接続ディスプレイの影響
そこで、外付けディスプレイの数を減らして確認してみます。
3.1. DisplayLinkとDisplayPort Alt Modeの違い
ここで、USB接続のディスプレイを外してみることにしました。
実は、ディスプレイの接続方法には大きく2種類あります:
DisplayPort Alt Mode(USB-C to HDMI/DisplayPort)
- GPUが直接ディスプレイを駆動
- ハードウェアベースの高速処理
- 低遅延、低CPU負荷
DisplayLink(USB接続)4
- CPUでソフトウェア的に画面を描画
- USB経由でデータを転送
- 高CPU負荷、遅延が発生しやすい
私の環境では、1台がUSB接続(DisplayLink)、もう1台がUSB-C to HDMI変換(DisplayPort Alt Mode)でした。
3.2. USB接続ディスプレイを外した結果
USB接続のディスプレイ(DisplayLink)を外してみました。
結果は:WindowServer 37.9% → 27.0%
約10ポイント改善しました。
やっぱりUSB接続ディスプレイはCPUに大きな負担をかけていたんですね。
でも、まだ27%は高い。
次に、内蔵ディスプレイのみにしてみると、29.2%でほとんど変わりません。
これはおかしい。
内蔵ディスプレイだけなら3〜8%が正常なはずなのに、なぜこんなに高いのか。
ここで、別の原因があることに気づきました。
4. 意外な犯人:ブラウザのタブ
4.1. Chromeのタブを全て閉じてみる
ふと思いついて、開いていたChromeのタブを全部閉じてみました。
結果は:WindowServer 29.2% → 13.6%
なんと15ポイント以上も改善!
ブラウザのタブ、特にアニメーションが動いているページを開きっぱなしにしていることが、WindowServerに大きな負荷をかけていたんです。
Chromeでアニメーション表示のタブを開いたままにすると、WindowServerのCPU使用率が異常に上昇することが報告されています5。
4.2. Electronアプリも同じ
Chromeと同じChromiumエンジンを使っているElectronアプリ(Slack、Discord、VS Codeなど)も同様の影響があります。
これらのアプリを複数起動していると、知らず知らずのうちにCPU負荷が積み重なっていくんです。
やはり、こまめにアプリを終了することは大事ですね。
5. 真の原因:アクセシビリティ設定が逆効果?
ここまでの改善で、外部ディスプレイ1台+Chromeなしの状態で、WindowServerは13.6%まで下がりました。
でも、外部ディスプレイを再接続してChromeを使うと、またWindowServerが24〜30%台に上昇してしまいます。
まだ何か見落としている原因があるはずです。
5.1. GPU使用率がほぼ0%という謎
アクティビティモニタのGPUタブを見て、気になる点がありました。
GPU使用率がほぼ0%なんです。
WindowServerがCPUを大量に使っているのに、GPUがほとんど使われていない。
これはおかしい。
通常、画面描画はGPU(グラフィックス処理専用のハードウェア)が担当するはずです。
何かの設定でGPUが無効化されているのでは?と考えました。
5.2. アクセシビリティ設定を確認
システム設定のアクセシビリティを見てみると、こんな設定がONになっていました:
- 透明度を下げる: ON
- 視差効果を減らす: ON
これらは、画面描画の負荷を軽減するために、以前の私が有効にしていた設定です。
視覚効果を減らせば、MacBookが軽くなると思っていました。
でも、実はこれが大きな間違いだったんです。
5.3. 設定をOFFにしてみる
思い切って、両方の設定をOFFにして、Macを再起動しました。
結果は:WindowServer 59.8%(外部1台、Chrome使用時)
→ 11.5%(外部1台、Chromeなし)
なんと48ポイントも改善!
劇的な変化でした。
さらに、アクティビティモニタを見ると、WindowServerの「% GPU」の列に数値が表示されるようになりました。GPUが使われ始めたんです。
5.4. powermetricsで確認
macOSにはpowermetricsというコマンドがあり、GPUの詳細な使用状況を確認できます。
試してみました。
sudo powermetrics --samplers gpu_power -i 1000 -n 1
視差効果OFF後、静止画面の場合:
GPU 0 GPU Busy: 1.23%
GPU 0 C-state residency: 98.78% (アイドル状態)
Code language: CSS (css)
YouTube動画再生時:
GPU 0 GPU Busy: 27.89%
GPU 0 C-state residency: 72.12%
Code language: CSS (css)
GPUが正常に稼働していることが確認できました。
静止画面では省電力のため1.23%、動画再生時には27.89%まで上昇しています。
これが正常な動作です。
6. なぜ「視差効果を減らす」が逆効果だったのか
6.1. 設定の本来の意図
「視差効果を減らす」と「透明度を下げる」という設定は、実はパフォーマンス向上のための設定ではありません。
これらは「アクセシビリティ」、つまり障害のある方のための設定です6。
視覚的な動きに敏感な人や、透明効果が見づらいと感じる人のために用意されています。
古いMac(2010年以前)では、GPUの性能が低かったため、これらの設定をONにすることで負荷が減る場合もありました7。
でも、現代のMacでは全く逆の効果を生むんです8。
6.2. GPU処理 vs CPU処理
現代のMac(2014年以降)は、Metal APIという高効率なグラフィックス処理システムを使っています9。
視差効果OFF(通常)の場合:
- 画面描画はGPUが担当
- GPUは描画専用のハードウェアなので高速で電力効率が良い
- WindowServerはGPUに命令を出すだけ(軽い処理)
- CPU使用率:10〜15%
視差効果ON(アクティビティ設定)の場合:
- GPUのハードウェアアクセラレーションが無効化される
- すべての描画処理をCPUで実行(ソフトウェアレンダリング)
- 画面の全ピクセル(1920×1080 = 207万ピクセル)をCPUで計算
- CPU使用率:50〜60%
つまり、「視差効果を減らす」をONにすると、専用ハードウェア(GPU)を使わずに、汎用プロセッサ(CPU)で無理やり描画処理をすることになるんです10。
これは、料理を作るのに電子レンジを使わず、ライターで温めるようなものです。
6.3. 透明効果の処理
透明なウィンドウの描画を例に、具体的な違いを見てみましょう。
GPU処理(ハードウェア合成):
- 背景レイヤーをGPUメモリに読み込む
- 前景レイヤーをGPUメモリに読み込む
- 専用回路でアルファブレンディング(透明合成)を実行
- 処理時間:0.1ms
CPU処理(ソフトウェア計算):
- 207万ピクセルそれぞれの色を読み込む
- 各ピクセルに対してループ処理で計算
- 結果をメモリに書き込む
- 処理時間:10〜50ms(100〜500倍遅い)
GPUの専用回路を使えば一瞬で終わる処理を、CPUで1ピクセルずつ計算するわけです。
これでは遅くなるのも当然ですね。
7. 技術の進化と「常識」の変化(2014年がターニングポイント)
実は、この「視差効果を減らす」設定の効果は、Macの世代によって全く異なります。
2010年以前のMac:
- GPU性能が非常に低い
- OpenGL(古いグラフィックスAPI)を使用
- 視差効果をONにすると軽くなる場合もあった
2014年以降のMac:
- Metal API導入(低オーバーヘッド、高効率)
- 統合GPUの大幅な進化
- 視差効果をONにすると重くなる
私は「視差効果を減らすと軽くなる」という古い情報を信じていました。
でも、それは10年以上前の常識だったんです。
私のMacBook Air (2018)は、Intel UHD Graphics 617という統合GPUを搭載しています。
これは2D描画に最適化された、十分に高性能なGPUです。このGPUを使わずにCPUで描画するのは、せっかくの専用ハードウェアを無駄にしているようなものでした。
7.1. 【補足】Intel Macでの挙動?
ただし、「視差効果を減らす」設定がGPUを無効化してCPU負荷を増大させるという現象は、Intel MacBook Air (2018) での実験結果です。
この現象は以下の要因に依存している可能性があります:
- ハードウェア世代:Intel Mac(特に2018年以前のモデル)
- GPU種別:統合GPU(Intel UHD Graphics 617など)
- macOSバージョン:Sonoma 14.8.1での検証結果
- ディスプレイ構成:外部ディスプレイの接続有無
というのも、この挙動を裏付けるApple公式の技術文書は見つからなかったからです。
インターネット上にある多くのトラブルシューティングガイドでは、依然としてWindowServerのCPU使用率を下げるために「視差効果を減らす」と「透明度を下げる」をONにすることを推奨していて、真相がよくわかりません。
Macは、従来のIntel CPUと最新のApple Siliconでは統合GPUの設計が根本的に異なるため、同じ設定でも異なる結果になる可能性があるからです。
8. 最終的な検証結果
すべての要因を整理して、最適な設定を見つけました。
8.1. 条件ごとのWindowServer CPU使用率
| 条件 | ディスプレイ | Chrome | 視差効果 | WindowServer |
|---|---|---|---|---|
| 初期状態 | 3台(USB含む) | あり | ON | 53.1% |
| リフレッシュレート変更 | 3台 | あり | ON | 36.6% |
| 外付けディスプレイを減らす | 2台 | あり | ON | 27.0% |
| さらに外付けディスプレイを減らす | 1台 | あり | ON | 29.2% |
| 内蔵のみ・アプリ終了 | 1台 | なし | ON | 13.6% |
| 最適 (外付けディスプレイを戻す | 3台 | なし | OFF | 11.5% |
| 動画再生時 | 3台 | 動画 | OFF | 45.6% |
8.2. わかったこと
- 最大の原因は「視差効果を減らす」設定
- この設定がGPUを無効化していた
- OFFにすることで48ポイント改善
- Chromeのタブも大きな影響
- アニメーション表示のタブは特に負荷が高い
- 15ポイント程度の改善効果
- USB接続ディスプレイ(DisplayLink)は避けるべき
- CPUで描画処理を行うため高負荷
- DisplayPort Alt Mode(HDMI変換)を推奨
- 解像度やリフレッシュレートの影響は限定的
- 根本的な解決にはならなかった
9. 推奨設定(MacBook Air 2018 + 外部ディスプレイ1台)
今回の検証で見つけた、最適な設定をまとめます。
9.1. システム設定
アクセシビリティ > ディスプレイ:
- 視差効果を減らす:OFF
- 透明度を下げる:OFF
この2つが最重要です。現代のMacでは、これらをONにすると性能が悪化します。
9.2. ディスプレイ接続
- 推奨:USB-C to HDMI/DisplayPort変換アダプタ
- DisplayPort Alt Modeを使用
- GPUが直接駆動、低CPU負荷
- 非推奨:USB接続ディスプレイ(DisplayLink)
- CPUで描画処理、高負荷
- どうしても必要な場合は軽い作業のみに使用
9.3. ブラウザ・アプリ管理
- Chromeのタブは必要最小限に
- アニメーションが動くページは使わないときは閉じる
- Electronアプリ(Slack、Discord等)の同時起動を控える
9.4. 期待される結果
この設定で、MacBook Air (2018) + 外部ディスプレイ1台の環境では:
- 軽作業時:WindowServer 10〜15%、GPU 1〜5%、アイドル 80〜85%
- 動画再生時:WindowServer 40〜50%、GPU 25〜35%、アイドル 45〜50%
発熱も抑えられ、バッテリー持続時間も改善します。
10. まとめ
外付けディスプレイ使用時のWindowServer高CPU問題、その原因は意外なところにありました。
パフォーマンス向上のために良かれと思って設定していた「視差効果を減らす」が、実は現代のMacでは逆効果。GPUという専用ハードウェアを無効化して、すべてをCPUで処理させていたんです。
技術は進化します。10年前の「常識」が、今では「非常識」になることもあります。だからこそ、実際に測定して検証することが大切だと実感しました。
もしMacBook Airで外付けディスプレイを使っていて、ファンが回り続けたり本体が熱くなったりしている方は、ぜひアクセシビリティ設定を確認してみてください。視差効果をOFFにするだけで、劇的に改善するかもしれません。
- WindowServerはmacOSのコア機能として、すべてのウィンドウとグラフィカル要素を画面に描画する役割を担っています。 – How to reduce WindowServer process CPU usage on Mac
- WindowServerはmacOSのコア機能として、すべてのウィンドウとグラフィカル要素を画面に描画する役割を担っています。通常の動作では、目立たないほど少ないCPU使用率が期待されます。 – How to reduce WindowServer process CPU usage on Mac
- How to Fix WindowServer’s High CPU Usage on Mac
- DisplayLinkは専用ドライバを使用してUSB経由でビデオデータを送信する方式で、CPUで画像を生成するためWindowServerの負荷が大幅に増加します。 – How to fix WindowServer high CPU and memory usage on Mac
- Chromeの問題は長年にわたって報告されており、タブ内でアニメーションが実行されているとWindowServerのCPU使用率が95%まで上昇することが確認されています。この問題はChrome、Edge、Firefoxなど複数のブラウザで再現されています。 – WindowServer is eating lots of CPU, can’t work out why – Ask Different
- 「視差効果を減らす」と「透明度を下げる」は、macOSのアクセシビリティ機能として提供されており、動きに敏感な人のために設計されています。パフォーマンス改善を目的とした設定ではありません。 – Step-by-step guide to reduce WindowServer Mac CPU usage
- 古いMacや低性能なMacでは、単純な描画の方がGPU処理よりも軽い場合がありました。しかし、2015年以降のMacでは統合GPUの性能が大幅に向上し、この前提は崩れています。 – WindowServer High CPU And Memory Usage on Mac? Here’s the Fix
- 「視差効果を減らす」設定の効果は、Macの世代、GPU、macOSバージョン、使用状況によって異なる可能性があります。Apple Silicon Mac(M1/M2/M3)とIntel Macでは、グラフィックス処理の仕組みが根本的に異なるため、同じ設定でも異なる結果が生じる可能性があります。 – Optimizing macOS for Audio Production: A Detailed Guide – UJAM
- AppleはmacOS Catalina以降でMetalへの移行を推進しており、Metal APIを前提とした最適化が行われています。古いOpenGLベースの処理と比較して、大幅にオーバーヘッドが削減されています。 – How to fix WindowServer high CPU and memory usage on Mac
- macOS Big Sur、Monterey、Ventura、Sonomaなどの新しいバージョンでは、視差効果を減らす設定がWindowServerの高CPU使用問題を引き起こすことが複数報告されています。 – How to fix WindowServer high CPU and memory usage on Mac