WindowServer
結論
WindowServerは、ウインドウを管理するmacOSのシステムプロセスです。アプリが描画したものを合成してディスプレイに表示する最終的な画像を作り、クリックやキー入力などの入力イベントを適切なアプリに渡します。
画面に表示されるものはすべてWindowServerを通ります。アプリはそれぞれ自分のウインドウを描画し、WindowServerがそれをメニューバー、Dock、影、透明効果、アニメーションと組み合わせて、その結果を各ディスプレイに送ります。
ほかのアプリの代わりに処理を行うので、CPUとGPUの使用率は画面の内容に応じて上下します。ウインドウを動かしているとき、ビデオを見ているとき、大きな外部ディスプレイを使っているときに、WindowServerがCPUのリストの上位に来るのは正常です。
WindowServerのCPU使用率が高い理由
描画するものが多いほど、WindowServerの負荷は上がります。よくある原因は、たくさんのウインドウ、複数のディスプレイや高解像度のディスプレイ、スケーリングされた解像度、透明効果などの視覚効果、そして絶えず再描画するアプリ(アニメーションの多いWebページ、ビデオ、ゲーム)です。
ウインドウを更新し続けるアプリが1つあるだけで、そのアプリ自体のCPU使用率は控えめでも、WindowServerの負荷が高くなることがあります。画面が止まって見えるのにWindowServerが高いままなら、原因はバックグラウンドで何かを再描画しているアプリであることが多いです。
下げる方法
不要なウインドウやブラウザのタブを閉じ、バックグラウンドでアニメーションやビデオを再生しているアプリを終了します。そのうえで、WindowServerが下がるか見てみます。
外部ディスプレイを使っている場合は、1台を外してみて、負荷のうちどれくらいがそのディスプレイによるものか確かめます。システム設定 → アクセシビリティ → ディスプレイで“透明度を下げる”や“視差効果を減らす”をオンにしても、描画の負荷を減らせます。
WindowServerを強制終了してもいい?
いいえ。WindowServerはグラフィカルなセッション全体を動かしています。止まると画面上のすべてのアプリが一緒に終了し、ログインウインドウに戻されるので、保存していない作業が失われることがあります。代わりに、描画するものを減らしましょう。
WindowServerを忙しくしているアプリを確認する方法
描画しているのはWindowServerですが、それを頼んでいるのはたいていほかのアプリです。アクティビティモニタは両者を直接結び付けてくれないので、消去法でアプリを見つけます。
- アクティビティモニタを開いて“CPU”タブをクリックし、WindowServerを探します。右上の検索フィールドに名前を入力しても見つけられます。
- その“% CPU”を控えてから検索を消去し、“表示” > “ウインドウのあるプロセス”を選びます。ウインドウを作成できるプロセスだけが表示されます。
- “% CPU”で並べ替えます。使っていないのに忙しいままのアプリが、有力な容疑者です。
- そのアプリを終了するかウインドウを閉じて、1分ほどWindowServerを見守ります。下がれば、それが原因です。
- 目立つものがなければ、ブラウザ、ビデオプレーヤー、アニメーションのあるアプリから順に、WindowServerが落ち着くまで1つずつアプリを隠すか終了していきます。
WindowServerのメモリ使用量が多い理由
ウインドウを1枚の画像に合成するために、WindowServerは各ウインドウに表示されている内容の画像を保持しています。ウインドウが大きいほど、多いほど、ディスプレイの解像度が高いほど、保持する画像データが増えるので、メモリ使用量は使っている環境に応じて増えます。
ウインドウを増やしていないのに、WindowServerのメモリが何日もかけて増え続けるなら、ログアウトしてログインし直すか、Macを再起動します。どちらでもWindowServerは新しく起動し直されます。ログアウトするとアプリが閉じるので、先に作業を保存しておきましょう。
WindowServerの普通の状態と気にすべき状態
普通: ウインドウをドラッグしたとき、操作スペースを切り替えたとき、スクロールしたとき、ビデオを再生したとき、ディスプレイを接続したときに上がり、画面が止まると下がる。画面にたくさんのものを表示しているMacでは、より忙しいシステムプロセスの1つです。
確認する価値あり: 画面上で何も動いていないのにWindowServerが忙しいまま、ポインタがカクつく、アニメーションがぎこちない。たいていは、アプリが絶えず再描画しているか、ディスプレイの構成が多くの処理を求めていることを意味します。
- アニメーションがあるか、バックグラウンドでビデオを再生しているブラウザのタブ。
- 複数の外部ディスプレイや、ディスプレイのデフォルトではないスケーリングされた解像度。
- 複数の操作スペースにまたがって開いているたくさんのウインドウ。
- オンになっている透明効果や動きの効果。
- グラフ、ゲーム、画面収録アプリなど、ウインドウを1秒に何度も更新するアプリ。
WindowServerのGPU使用率を確認する方法
WindowServerの描画の多くはグラフィックプロセッサで行われるので、CPUの数値はその一部にすぎません。アクティビティモニタの“CPU”タブで“表示” > “表示項目”を選んで“% GPU”をオンにすると、WindowServerを含む各プロセスがどれだけGPU時間を使っているかがわかります。
“ウインドウ” > “GPUの履歴”を選ぶと、最近のGPUの動作がグラフで表示されます。画面が止まっているのにグラフが忙しいままなら、まだ何かが描画しているので、上の消去法の手順で見つけられます。
よくある質問
MacのWindowServerとは?
ウインドウを管理し、アプリが描画したものをすべて合成してディスプレイに表示し、クリックやキー入力をアプリに渡すmacOSのプロセスです。macOSの一部で、自分でインストールしたものではありません。
外部モニタをつなぐとWindowServerのCPU使用率が上がるのはなぜ?
ディスプレイが増えるたびに、WindowServerが合成するピクセルが増えます。高解像度やスケーリングされた解像度ではさらに負荷が増えるので、画面を1台つなぐごとに負荷が上がります。
WindowServerを終了できる?
終了すべきではありません。終了するとグラフィカルなセッションが終わってログアウトし、アプリもすべて閉じられます。
WindowServerはウイルス?
いいえ。WindowServerはmacOSの一部です。アクティビティモニタでは、自分のアカウントではなく、システムユーザの_windowserverで動いています。
WindowServerのメモリ使用量が多いのはなぜ?
見えている画面に合成するために、すべてのウインドウの画像を保持しているからです。ウインドウが多いほど、大きいほど、ディスプレイの解像度が高いほど増えます。
ウインドウを閉じるとWindowServerのCPU使用率は下がる?
多くの場合、下がります。ウインドウが少なく画面上の動きが少ないほど、描画するものが減ります。アニメーションやビデオを再生しているウインドウを閉じるのが最も効果的です。
関連項目
詳しい手順: CPUやメモリを使っているアプリ。
アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。