Risolvere l’uso elevato di CPU di WindowServer sul Mac
WindowServer è il compositor di visualizzazione di macOS. Il suo uso della CPU riflette il lavoro necessario per combinare le superfici delle app su tutti i display, ma il nome del processo non rivela quale app stia causando ridisegni continui. Un valore alto durante un'animazione, la condivisione dello schermo o un cambio di display può essere normale. Il segnale utile è un carico sostenuto a riposo insieme a un effetto misurabile su reattività, calore o autonomia della batteria.
Cos'è davvero WindowServer
WindowServer è il compositor di macOS. Ogni finestra, menu, animazione e pixel che vedi viene disegnato e combinato da esso, su ogni display. Poiché tocca tutto ciò che è a schermo, un carico grafico pesante compare come CPU di WindowServer anziché sotto l'app che lo causa. Così sembra il colpevole quando in realtà è solo il messaggero.
Cosa lo fa salire
Alcune cose fanno lavorare WindowServer di più:
- Molte finestre e Spaces. Decine di finestre aperte e un mucchio di desktop virtuali devono essere tutti tracciati e composti.
- Display esterni e ad alta risoluzione. Più pixel da spingere, specialmente uno schermo 4K o 5K, o più monitor insieme, alza il basale in modo costante.
- Risoluzione scalata. Usare un display a una risoluzione "sembra come" non nativa può richiedere una superficie di rendering più grande e un downsampling. Il costo dipende dal Mac, dal display, dalla modalità di scala e dal carico di lavoro; la scala Retina in sé è normale.
- Trasparenza e movimento. La sfocatura e la traslucenza di menu, Dock e Control Center sono tutti effetti live che WindowServer calcola in continuo.
- Un'app con molte finestre che si ridisegna di continuo, ad esempio un terminale che stampa in fretta o una pagina che anima in background.
- Software di cattura e display remoto. Registrazione dello schermo, videochiamate, AirPlay, desktop remoto e strumenti di display virtuale aggiungono lavoro di cattura o composizione.
- Alte frequenze di aggiornamento e desktop animati. Più frame o pixel che cambiano di continuo aumentano il lavoro anche quando non tocchi nessuna finestra.
Come calmarlo
Parti dalle vittorie a basso costo:
- Riduci la trasparenza: apri System Settings > Accessibility > Display, poi attiva Reduce transparency. La guida alle impostazioni Display di Apple descrive il cambiamento visivo. Può ridurre il lavoro sugli effetti live, ma confronta la stessa scena prima di tenerlo come fix di prestazioni.
- Riduci il movimento: ora ha un proprio pannello Accessibility > Motion. La guida Motion di Apple dice che modifica le animazioni per azioni come aprire app e cambiare desktop.
- Prova la scala di display predefinita o una frequenza di aggiornamento più bassa, poi confronta lo stesso carico di lavoro. Non sacrificare testo leggibile solo perché si assume che ogni scala sia un male.
- Chiudi finestre e riduci gli Spaces che non usi, e chiudi le app che si ridisegnano pesantemente in background.
- Metti in pausa registrazione dello schermo, desktop remoto, wallpaper animato o display virtuali uno alla volta per individuare il responsabile.
- Scollega un display come diagnostica. Se cambia il basale, testa separatamente scala, frequenza di aggiornamento, cavo e adattatore.
Esci e rientra dall'account solo dopo aver raccolto le prove; questo riavvia la sessione di display dell'utente. Un reboot può nascondere un bug di ridisegno senza identificare l'app che lo farà scattare di nuovo.
Non valutare solo la percentuale istantanea. In Activity Monitor, osserva la stessa scena a riposo per alcuni minuti, riproduci un'animazione o un carico di cattura, poi rimuovi una sola fonte sospetta. WindowServer va giudicato insieme al sintomo: input più fluido, meno calore o batteria migliore. Un numero più basso senza miglioramento visibile o termico non è un fix utile.
Dietro le quinte: il compositor e perché la scala costa
WindowServer è un compositor. Ogni app disegna nel proprio buffer offscreen, un backing store, e WindowServer combina quei buffer nell'immagine finale di ogni display, applicando trasformazioni ed effetti lungo il percorso. La composizione corre ogni volta che la scena cambia, quindi ridisegni costanti e cattura possono costare CPU o GPU in continuo. Alcune modalità scalate usano una superficie intermedia più grande e la riducono, ma è solo uno dei possibili fattori. Conteggio dei pixel, frequenza di aggiornamento, numero di display e frequenza di ridisegno vanno testati in modo indipendente.
Dove aiuta un monitor
Activity Monitor o la vista Status di Mole possono mostrare le tendenze di WindowServer, CPU e GPU, ma nessuno dei due può assegnare automaticamente il costo del compositor a una sola app. Il metodo affidabile è l'isolamento controllato: ferma una fonte di ridisegno o cambia una variabile di display, poi confronta i basali a riposo e sotto carico.
Una diagnosi ripetibile
Misura WindowServer a riposo e durante il problema, poi isola contenuti animati, strumenti di cattura, display, scala e frequenza di aggiornamento uno alla volta. Tieni la modifica solo quando migliorano sia la metrica sia il sintomo visibile all'utente. Non forzare la chiusura di WindowServer e non trattare una scala Retina ordinaria come un guasto.