Volver al blog

WindowServer con uso elevado de CPU en Mac: qué es y cómo solucionarlo

¿WindowServer al 100 %+ de CPU? Es el proceso de macOS que dibuja cada píxel de tu pantalla. Descubre por qué se dispara, cuándo preocuparse y cómo encontrar la app que realmente causa la carga.

Abres Activity Monitor porque tu Mac va lento, y el proceso que encabeza la columna de CPU es algo llamado WindowServer — a veces 80 %, 150 %, incluso 300 %. Cerrarlo no es una opción (te cerraría la sesión), y el consejo habitual de “reinicia tu Mac” no explica lo que está pasando. Esta guía explica qué es realmente WindowServer, por qué el uso elevado de CPU es casi siempre un síntoma y no la causa, y cómo encontrar la app o la carga de trabajo que de verdad lo está disparando.

Respuesta rápida

WindowServer es el proceso de macOS que compone cada píxel que ves en pantalla — ventanas, menús, el cursor, el Dock, las animaciones. Por sí solo casi no hace nada. Cuando muestra un uso elevado de CPU, esa carga está siendo provocada por otra cosa que le pide que dibuje: una app que se comporta mal, muchas ventanas visibles o páginas del navegador con gráficos pesados, varias pantallas externas de alta resolución, o una capa acelerada por GPU con errores en una app basada en Electron. No puedes ni debes cerrar WindowServer; forzar su salida termina tu sesión de usuario. La solución es identificar la app de origen y atacarla. ProcXray lo hace rápido: ordena por la columna de GPU por proceso para encontrar el proceso con gráficos pesados, usa el System Dashboard para confirmar la presión global de la GPU y usa el Window Spy Picker para asignar cualquier ventana visible a la app que la posee.

¿Qué es WindowServer?

WindowServer es la parte de macOS responsable del compositing de pantalla — tomar la salida gráfica de cada app en ejecución y combinarla en la imagen final que muestra tu pantalla. Reside en /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer y se inicia automáticamente cuando un usuario inicia sesión. Hay un proceso WindowServer por cada sesión de usuario con sesión iniciada.

Por dentro, cada app visible envía su contenido renderizado como un conjunto de capas de Core Animation. WindowServer le pide entonces a la GPU que combine esas capas — aplicando transparencias, desenfoques, sombras y animaciones — y envía el resultado a tu pantalla a la frecuencia de actualización (normalmente 60Hz, o hasta 120Hz en pantallas ProMotion).

En condiciones normales, WindowServer usa entre el 1 % y el 15 % de CPU. En un Mac con una sola pantalla interna y un puñado de apps abiertas, no debería ser el proceso principal.

Una nota sobre los porcentajes: en Activity Monitor, el 100 % equivale a un núcleo de CPU completo. En un Mac con varios núcleos, un solo proceso puede declarar muy por encima del 100 %. Así que WindowServer al 300 % no es “el 300 % de toda la máquina” — está ocupando el equivalente a tres núcleos completos.

Por qué el uso elevado de CPU de WindowServer normalmente no tiene que ver con WindowServer

Este es el replanteamiento más importante de esta guía: WindowServer está aguas abajo. No genera su propio trabajo. Cada ciclo de CPU que consume proviene de que se le pida dibujar algo — una app, una ventana, una animación o el propio sistema.

Así que cuando WindowServer está al 200 % de CPU, la pregunta de diagnóstico no es “¿qué le pasa a WindowServer?” Es:

¿Qué está haciendo ahora mismo que WindowServer trabaje tan duro?

Esa causa aguas arriba es lo que necesitas encontrar y solucionar. Cerrar WindowServer no solo te cerraría la sesión — aunque pudieras reemplazarlo al instante, la misma carga aguas arriba volvería de inmediato.

Es el mismo patrón de diagnóstico que el uso elevado de CPU de kernel_task: el proceso visible que encabeza Activity Monitor es el síntoma, no la causa.

Qué desencadena los picos de WindowServer

Hay seis causas aguas arriba comunes, más o menos en orden de frecuencia con que aparecen:

1. Una app acelerada por hardware que se comporta mal

Los navegadores basados en Chromium (Chrome, Edge, Arc, Brave), las apps de Electron (Slack, Discord, VS Code, Notion, Figma), los editores de vídeo y los juegos envían todos capas aceleradas por hardware a WindowServer. Un error o una capa atascada en uno de ellos puede mantener WindowServer al máximo incluso después de que la app parezca inactiva. Ejemplos comunes son Chrome y Slack.

2. Muchas pantallas externas o de alta resolución

Cada pantalla externa añade trabajo de compositing. Una externa 4K o 5K — sobre todo cuando se escala a una resolución no nativa — multiplica la carga por fotograma. Dos pantallas externas 4K pueden disparar WindowServer mucho más, especialmente en Macs Intel más antiguos, configuraciones de Apple Silicon de menor potencia y en modos escalados (no nativos) que requieren una pasada de renderizado adicional.

3. Muchas ventanas visibles o contenido web con gráficos pesados

Cada ventana visible — incluida cada ventana del navegador abierta — es un conjunto separado de capas de Core Animation que WindowServer debe componer. Las pestañas en segundo plano de los navegadores modernos suelen estar suspendidas y no añaden carga directa a WindowServer, pero las páginas con mucho vídeo, el contenido WebGL o canvas, y las páginas web animadas (anuncios con reproducción automática, animaciones CSS complejas) sí lo hacen. Varias decenas de ventanas visibles, o unas pocas pestañas exigentes, dan a WindowServer bastante más que rastrear y componer en cada fotograma.

4. Animaciones atascadas o CALayers con fugas

Cuando una app no libera correctamente sus recursos gráficos, WindowServer sigue reteniéndolos y reevaluándolos. Esto suele manifestarse como un lento aumento de CPU a lo largo de horas de tiempo de actividad que cae bruscamente en el momento en que cierras la app problemática.

5. Transparencia, movimiento y efectos del fondo de pantalla

Los fondos de pantalla dinámicos de macOS y los efectos de transparencia y movimiento del sistema funcionan todos a través de WindowServer. En Macs Intel más antiguos, o en Macs con Apple Silicon con gráficos integrados ya bajo carga, estos pueden volverse desproporcionadamente costosos.

6. Errores de macOS o del controlador de la GPU

A lo largo de los años se han documentado fugas de memoria y CPU de WindowServer en varias versiones puntuales de macOS. Si acabas de actualizar y el pico empezó de inmediato, consulta las notas de la versión de Apple y el foro Apple Discussions para esa versión específica.

Cómo encontrar al verdadero culpable

Activity Monitor es el punto de partida natural y ha mejorado en las versiones recientes de macOS, pero sigue teniendo carencias para este problema concreto. Puede mostrar la actividad global de la GPU (Ventana → Historial de GPU) y una columna %GPU para los procesos que usan GPU, pero no te da una tendencia continua de GPU por proceso alineada con la línea temporal de WindowServer, y no vincula una ventana de tu pantalla con el proceso que la posee. Esas dos piezas son justo lo que necesitas.

Paso 1: victorias rápidas en Activity Monitor

Abre Activity Monitor → pestaña CPU. Ordena por CPU. Anota el porcentaje de WindowServer. Abre Ventana → Historial de GPU para confirmar si la carga global de la GPU es alta. Si puedes ver una columna %GPU en los procesos, ordena por ella para detectar el mayor usuario de GPU en este instante.

Esto te dice que el síntoma es real y apunta a apps con uso intensivo de gráficos, pero aún necesitas correlacionarlo con WindowServer a lo largo del tiempo y confirmar qué ventanas de qué app son las responsables.

Paso 2: identifica la app de origen con ProcXray

ProcXray está hecho específicamente para este tipo de diagnóstico entre recursos:

Para la comparación más amplia de dónde se queda corto Activity Monitor en este tipo de depuración, consulta ProcXray vs Activity Monitor.

Paso 3: prueba A/B cerrando sospechosos

Una vez que tengas uno o dos sospechosos, ciérralos de uno en uno y observa cómo cae la CPU de WindowServer. Esto confirma la causa sin reiniciar y sin interrumpir toda tu sesión.

Soluciones paso a paso

Aplícalas en orden — las más baratas y menos disruptivas primero.

1. Cierra la app sospechosa

Una vez que hayas identificado el proceso de origen, ciérralo. Vuelve a abrirlo desde cero si lo necesitas. Esto resuelve de inmediato la mayoría de los picos de WindowServer.

2. Desconecta las pantallas externas como diagnóstico

Si no puedes localizar una app concreta, desconecta una pantalla externa y observa la CPU. Si WindowServer cae bruscamente, las pantallas son el coste dominante. Entonces puedes reducir la resolución, ejecutar la externa en su resolución nativa (sin escalado), o mantenerla desconectada cuando no la necesites.

3. Reduce la transparencia y el movimiento

Ambos ajustes trasladan el trabajo de compositing de WindowServer a rutas de dibujo más sencillas. Gratis, reversible y a menudo notable en Macs con gráficos integrados:

4. Desactiva la aceleración por hardware en apps con uso intensivo de GPU

En Chrome: Configuración → Sistema → desactiva “Usar la aceleración de gráficos cuando esté disponible”, luego reinicia Chrome. Existen opciones similares en la mayoría de las apps de Electron dentro de sus propios ajustes. Esto traslada el renderizado de la GPU a la CPU — puede solucionar los picos de WindowServer a costa de una CPU ligeramente más alta en la propia app.

5. Cierra ventanas sobrantes y páginas con gráficos pesados

La mayoría de las pestañas en segundo plano ya están suspendidas y no cargan directamente a WindowServer. En vez de eso, céntrate en cerrar las ventanas visibles que no necesitas, pausar los vídeos con reproducción automática o las páginas animadas, y cerrar las demos de WebGL o canvas que sigan ejecutándose en una ventana de fondo. Si sueles mantener muchas ventanas del navegador abiertas, consolidar las pestañas en menos ventanas también ayuda.

6. Cierra sesión y vuelve a iniciarla

Cerrar sesión termina WindowServer de forma limpia y lo relanza con un estado nuevo — sin un reinicio completo. Esto a menudo resuelve los casos de capa atascada que cerrar apps individuales no captó.

7. Actualiza macOS y la app sospechosa

Si una actualización reciente de macOS o de una app precedió al problema, comprueba si hay un parche de seguimiento. Apple ha lanzado correcciones en versiones puntuales para las fugas de WindowServer varias veces.

8. Último recurso: reinicia, y solo en Macs Intel más antiguos un restablecimiento del SMC

Un reinicio completo restablece WindowServer y el estado del controlador de la GPU. Si la misma carga de trabajo sigue desencadenando el pico tras el reinicio, la causa está aguas arriba — no es un estado transitorio — y deberías centrarte en identificar la app responsable en lugar de realizar más restablecimientos del sistema. Solo en Macs Intel más antiguos, un restablecimiento del SMC puede ayudar ocasionalmente si los síntomas de pantalla o de gestión de energía persisten junto a la carga de WindowServer; los Macs con Apple Silicon no tienen un restablecimiento del SMC accesible para el usuario, y de todos modos rara vez es la solución correcta para un problema de WindowServer.

Para una clasificación de rendimiento más general cuando no surge ningún sospechoso concreto, consulta cómo arreglar un Mac lento cerrando los procesos adecuados.

Preguntas frecuentes

¿Puedo cerrar o desactivar WindowServer?

No. WindowServer gestiona toda tu sesión gráfica de usuario. Forzar su salida te cierra la sesión al instante, perdiendo cualquier trabajo no guardado. macOS lo relanza automáticamente cuando vuelves a iniciar sesión. No hay ninguna forma admitida de desactivarlo.

¿El uso elevado de CPU de WindowServer está dañando mi Mac?

No directamente. Un uso sostenido y alto de CPU sí aumenta el calor y acorta la duración de la batería, pero que WindowServer haga el trabajo en sí no es un riesgo para el hardware. La preocupación de fondo es qué lo hace trabajar tan duro — una app fuera de control agotando la batería es el verdadero coste.

¿Por qué WindowServer usa tanta memoria?

WindowServer almacena en caché las capas renderizadas de cada app visible para que el compositing sea rápido. El uso de memoria escala con el número de ventanas, la resolución de tus pantallas y el tiempo que lleva ejecutándose la sesión. Varios gigabytes tras un tiempo de actividad prolongado no es inusual. Si la memoria crece sin límite, sospecha de un caso de capa con fuga (causa n.º 4 anterior) y cierra sesión y vuelve a iniciarla.

¿Por qué se dispara solo cuando conecto un monitor externo?

Añadir una pantalla externa aumenta el trabajo de compositing por fotograma de forma proporcional a su resolución. Una externa 4K aproximadamente duplica o triplica los píxeles que WindowServer debe componer en cada fotograma. Si el pico es grande, prueba a ejecutar la externa en resolución nativa — los modos escalados son significativamente más costosos porque requieren una pasada de renderizado adicional.

¿Reiniciar soluciona el uso elevado de CPU de WindowServer de forma permanente?

Solo si la causa subyacente es una fuga transitoria. Un reinicio restablece WindowServer a un estado limpio, pero si vuelves a abrir la misma app o reconectas la misma pantalla, el pico regresa. La verdadera solución es identificar la causa aguas arriba; un reinicio es un borrón y cuenta nueva, no un tratamiento.

Fuentes y referencias


Descarga ProcXray gratis → — encuentra la app que de verdad provoca la carga de WindowServer. macOS Sonoma+, Apple Silicon e Intel.