解決 Mac 上 WindowServer 高 CPU
WindowServer 是 macOS 的顯示合成器。它的 CPU 占用反映的是把各應用程式畫面合到各顯示器上所需的工作量,但行程名稱本身並不會指出是哪個應用程式在反覆重繪。動畫、螢幕共享或調整顯示器時短暫升高很正常。真正有用的訊號是閒置時持續高負載,並且已經影響到回應、發熱或續航。
WindowServer 實際在做什麼
WindowServer 把各應用程式繪製的內容合成為每台顯示器上的最終畫面。視窗、選單、Dock、透明效果、動畫和外接顯示器輸出都經過它。因此,應用程式的一部分圖形負載會出現在 WindowServer 名下,而不是應用程式本身名下。單憑高占用並不能鎖定來源,所以強制結束 WindowServer 是錯誤的第一步:macOS 會立刻重新啟動它,一切重新繪製,你仍然不知道是哪個表面在持續餵幀。
什麼會把它推高
下面幾類情況會讓 WindowServer 更忙:
- 大量視窗與空間。 幾十個開啟的視窗和一堆虛擬桌面都要追蹤並合成。啟用 顯示器有單獨的空間 時,Mission Control 空間會進一步放大表面數量。
- 外接與高解析度顯示器。 要推送的像素更多,尤其是 4K、5K 或同時接多台顯示器,會穩定抬高基線。合蓋使用(clamshell)時,仍然要合成每一塊已連接的面板。
- 縮放解析度。 以非原生「看起來像」解析度執行時,可能需要更大的算繪表面再縮小。成本取決於 Mac、顯示器、縮放模式和任務;Retina 縮放本身是正常的。
- 透明與動態效果。 選單、Dock 和控制中心的模糊與半透明是 WindowServer 持續計算的即時效果。較新的 macOS 上系統介面效果更重,同一場景可能比舊版本更費。
- 瀏覽器和其他 Electron 應用程式。 帶動畫、影片、WebGL 或活潑儀表板的分頁與視窗,即使你沒在看,也會持續提交幀。Chrome、Edge、Brave、Arc、Slack、Discord、VS Code 等常出現在使用者回報裡,因為它們的 GPU 合成工作最終仍會落到 WindowServer。
- 視窗很多、又在不斷重繪的應用程式,例如高速輸出的終端機、每秒重新整理的狀態列,或背景仍在動畫的頁面。
- 擷取與遠端顯示軟體。 螢幕錄製、視訊通話、AirPlay、Sidecar、接續互通相機、遠端桌面和虛擬顯示工具都會增加擷取或合成工作。
- 高更新頻率與動態桌面。 更多幀或持續變化的像素(動態桌布、舞台管理器頻繁切換、即時小工具)會在你並未操作視窗時抬高負載。
- 即時資源監視器。 一直開著的「活動監視器」視窗、選單列 CPU 圖,或強制頻繁更新介面的工具,本身也會讓合成器忙碌。如果同時還看到
sysmond很高,先關掉監視器再複查 WindowServer。
過時的獨立顯示卡驅動程式是 Windows 上的常見故事。在 Apple 晶片 Mac 上,GPU 堆疊隨 macOS 一起提供,所以「更新 GPU 驅動程式」很少是正解。優先保持 macOS 和嫌疑應用程式為最新即可。
何時高占用算正常
下列情況會出現短暫尖峰,屬於預期:
- 開啟或調整大量視窗、切換空間,或接入顯示器
- 全螢幕播放影片、執行遊戲,或拖曳時間軸
- 共享或錄製螢幕
- 前景開啟動畫很多的頁面
場景穩定後,這些尖峰應回落。當安靜桌面上仍持續偏高、打字時光標發澀,或風扇與耗電跟著合成器走卻找不到明顯重繪源時,才把 WindowServer 當成問題。
用「活動監視器」診斷
改設定之前先採集基線:
- 開啟 活動監視器(應用程式 › 工具程式),選 CPU 標籤,搜尋
WindowServer。 - 在安靜桌面上記一兩分鐘的百分比:可見視窗很少、無螢幕共享、無影片、瀏覽器分頁閒置或已捨棄。
- 再現一次變慢(開啟那個重的瀏覽器視窗、開始擷取,或喚醒外接顯示器),觀察 WindowServer 是否隨這一變化升高。
- 按 CPU 排序,掃一眼瀏覽器輔助行程、會議應用程式、錄影工具,以及名稱像虛擬顯示的東西。排在最前的應用程式是嫌疑;WindowServer 常常只是它的繪圖帳單。
- 可選:在「終端機」裡跑
top -o cpu三十秒,能得到同樣的排名,又不必一直開著「活動監視器」自己的視窗。
用症狀來判斷 WindowServer:輸入更順、更涼,或續航更好。百分比降了但可見表現與散熱沒有改善,不算有用的修復。
如何壓低負載(由輕到重)
先做成本低的改動。一次只改一個變數,等一會兒,只有指標和體感都改善時才保留。
- 關掉不用的視窗、分頁和空間。 合併瀏覽器視窗,捨棄閒置分頁(Chrome/Edge 的 Memory Saver 或瀏覽器自帶的工作管理員),並刪掉不用的空間。瀏覽器開著時,這通常是最大的一刀。
- 降低透明度: 開啟 系統設定 › 輔助使用 › 顯示,啟用 降低透明度。Apple 的顯示設定說明介紹了視覺變化。保持 macOS 更新;某些過渡版本裡這個開關幾乎無效,要到後續修補程式才見效。用同一場景對比後再當作效能修復保留。
- 減少動態效果: 現在有獨立的 輔助使用 › 動態效果 面板。Apple 的動態效果說明說明它會改變開啟應用程式、切換桌面等動畫。
- 暫停擷取與遠端顯示。 停止錄影,關掉會議攝影機/共享,中斷 Sidecar 或 AirPlay,並逐個結束虛擬顯示工具。
- 簡化桌面。 把動畫或動態桌布換成靜態圖;隱藏或結束會不斷重繪選單列的即時小工具與常駐 HUD 疊層。
- 測試顯示縮放與更新頻率。 優先用預設「看起來像」尺寸,或在外接螢幕上試較低更新頻率,再對比同一工作負載。不要僅憑「縮放都不好」的假設犧牲可讀文字。
- 中斷一台顯示器做診斷。 若基線下降,再分別測該螢幕的縮放、更新頻率、線纜和轉接器。多顯示器時,可在 桌面與 Dock › Mission Control 關閉 顯示器有單獨的空間,以減少獨立的合成上下文。
- 更新 macOS 和重負載應用程式,再測同一閒置場景。合成器與瀏覽器 GPU 的問題經常落在普通小版本更新裡。
- 登出再登入 只在證據收齊後做;這會重新啟動使用者顯示工作階段。完整重新啟動能清掉洩漏的重繪狀態,但也可能掩蓋再次觸發它的應用程式,所以用在已經摸清規律之後,而不是代替隔離排查。
什麼幫不上忙
- 不要強制結束 WindowServer。 螢幕上的一切會同時重繪,CPU 再次尖峰,你對歸屬仍然一無所知。
- 不要指望通用「清理」或「加速」應用程式能修好合成負載。 關視窗、減效果、停擷取才是真正的槓桿。
- 不要把普通 Retina 縮放當成故障。 在同一台 Mac 和同一條線纜上,把你實際使用的縮放模式與預設模式對照測量。
原理:合成器,以及縮放為何費資源
WindowServer 是一個合成器。每個應用程式先畫進自己的離螢幕緩衝區(backing store),WindowServer 再把這些緩衝區合成為每台顯示器的最終畫面,並沿途套用變換與效果。場景一變就會合成,所以持續重繪和擷取會不斷占用 CPU 或 GPU。部分縮放模式會使用更大的中間表面再縮小,但這只是可能因素之一。像素量、更新頻率、顯示器數量和重繪頻率必須分別測試。
監視工具能幫到哪裡
「活動監視器」或 Mole 的「狀態」頁可以顯示 WindowServer、CPU 和 GPU 趨勢,但兩者都無法自動把合成成本歸給某個應用程式。可靠做法是受控隔離:停掉一個重繪源,或只改一個顯示變數,再比較閒置與工作負載基線。
一套可重複的排查流程
在閒置和出問題時分別測量 WindowServer,然後逐個隔離動畫內容、瀏覽器、擷取工具、顯示器、縮放與更新頻率。只有指標和可見症狀都改善時才保留改動。不要強制結束 WindowServer,也不要把普通 Retina 縮放當成故障。
常見問題
WindowServer 高占用危險嗎?
它會抬高發熱、風扇噪音和耗電,也會讓介面發澀,但它不是惡意軟體,也不會單獨損壞 Mac。修好重繪來源即可;不要試圖刪除或停用這個行程。
為什麼 Chrome 看起來沒事,WindowServer 卻很高?
瀏覽器的工作常常落在 WindowServer 上,因為它提交的是要被合成的表面。帶動畫或影片的背景分頁即使 Chrome 自己的輔助行程百分比看起來不高,也可能持續餵幀。先暫停或關掉那些分頁,再複查。
Apple 晶片上還要降低透明度嗎?
當作受控試驗來試。許多 M 系列 Mac 在關掉透明與動態效果後仍會減掉合成工作,尤其是多顯示器或多瀏覽器視窗時。只有同一閒置場景體感更好時再保留該設定。
重新啟動能永久修好 WindowServer 嗎?
重新啟動會清掉暫時的重繪狀態,常常能好一陣。若同一個瀏覽器視窗、擷取工具或顯示器設定又把負載帶回來,原因就在設定。先修那個,只有工作階段已經很糟時才再重新啟動。