Mac이 느리게 느껴져 Activity Monitor를 열었는데, CPU 열 맨 위에 WindowServer라는 프로세스가 보입니다 — 때로는 80 %, 150 %, 심지어 300 %까지. 종료하는 것은 선택지가 아니며(로그아웃되어 버립니다), 흔한 “Mac을 재시동하세요”라는 조언은 무슨 일이 일어나고 있는지 설명해 주지 않습니다. 이 가이드는 WindowServer가 실제로 무엇인지, 왜 높은 CPU 사용량이 거의 항상 원인이 아니라 증상인지, 그리고 그것을 정말로 치솟게 만드는 앱이나 작업 부하를 찾는 방법을 설명합니다.
빠른 답변
WindowServer는 여러분이 화면에서 보는 모든 픽셀 — 창, 메뉴, 커서, Dock, 애니메이션 — 을 합성하는 macOS 프로세스입니다. 그 자체로는 거의 아무것도 하지 않습니다. 높은 CPU 사용량을 보일 때, 그 부하는 무언가 다른 것이 그것에게 그리라고 요청하기 때문에 발생하는 것입니다: 오작동하는 앱, 많은 보이는 창이나 그래픽이 무거운 브라우저 페이지, 여러 개의 고해상도 외장 디스플레이, 또는 Electron 기반 앱의 버그가 있는 GPU 가속 레이어. WindowServer는 종료할 수도, 종료해서도 안 됩니다. 강제 종료하면 사용자 세션이 끝나 버립니다. 해결책은 상류의 앱을 식별하고 그것을 처리하는 것입니다. ProcXray는 이를 빠르게 해줍니다: 프로세스별 GPU 열로 정렬하여 그래픽이 무거운 프로세스를 찾고, System Dashboard로 전체 GPU 압박을 확인하며, Window Spy Picker로 보이는 창을 그 소유 앱에 연결하세요.
WindowServer란 무엇인가?
WindowServer는 화면 합성(compositing) 을 담당하는 macOS의 일부입니다 — 실행 중인 모든 앱의 그래픽 출력을 가져와 디스플레이가 보여주는 최종 이미지로 결합합니다. 위치는 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer이며, 사용자가 로그인하면 자동으로 시작됩니다. 로그인한 사용자 세션마다 하나의 WindowServer 프로세스가 있습니다.
내부적으로, 보이는 모든 앱은 렌더링된 콘텐츠를 Core Animation 레이어 묶음으로 전달합니다. 그러면 WindowServer는 GPU에게 그 레이어들을 결합하도록 — 투명도, 흐림, 그림자, 애니메이션을 적용하도록 — 요청하고, 그 결과를 디스플레이의 재생률(일반적으로 60Hz, ProMotion 디스플레이에서는 최대 120Hz)로 화면에 전달합니다.
정상적인 상황에서 WindowServer는 CPU의 1 %에서 15 % 사이를 사용합니다. 내장 디스플레이 하나와 앱 몇 개만 열린 Mac에서는 최상위 프로세스가 되어서는 안 됩니다.
백분율에 대한 참고 사항: Activity Monitor에서 100 %는 하나의 완전한 CPU 코어에 해당합니다. 코어가 여러 개인 Mac에서는 하나의 프로세스가 100 %를 훨씬 넘게 보고할 수 있습니다. 따라서 WindowServer가 300 %라는 것은 “전체 기기의 300 %“가 아니라 — 완전한 코어 세 개 분량을 점유하고 있다는 뜻입니다.
WindowServer의 높은 CPU 사용량이 보통 WindowServer와 무관한 이유
이것이 이 가이드에서 가장 중요한 관점의 전환입니다: WindowServer는 하류에 있습니다. 그것은 자기 일을 스스로 시작하지 않습니다. 그것이 소비하는 모든 CPU 사이클은 무언가를 그리라는 요청에서 비롯됩니다 — 앱, 창, 애니메이션, 또는 시스템 자체로부터.
그러므로 WindowServer가 CPU 200 %일 때, 진단 질문은 “WindowServer에 무슨 문제가 있는가?”가 아닙니다. 이렇게 묻습니다:
지금 무엇이
WindowServer를 이렇게 힘들게 일하게 만들고 있는가?
여러분이 찾아 해결해야 하는 것은 바로 그 상류 원인입니다. WindowServer를 종료하면 로그아웃될 뿐만 아니라 — 설령 즉시 교체할 수 있다 해도, 똑같은 상류 부하가 곧바로 되돌아올 것입니다.
이것은 kernel_task의 높은 CPU 사용량과 동일한 진단 패턴입니다: Activity Monitor 맨 위에 보이는 프로세스는 증상이지 원인이 아닙니다.
WindowServer 급증을 일으키는 원인
흔한 상류 원인이 여섯 가지 있으며, 대략 자주 발생하는 순서대로입니다:
1. 오작동하는 하드웨어 가속 앱
Chromium 기반 브라우저(Chrome, Edge, Arc, Brave), Electron 앱(Slack, Discord, VS Code, Notion, Figma), 비디오 편집기, 게임은 모두 하드웨어 가속 레이어를 WindowServer에 전달합니다. 그중 하나의 버그나 멈춘 레이어는 앱이 유휴 상태로 보이는 뒤에도 WindowServer를 붙들어 둘 수 있습니다. 흔한 예로 Chrome과 Slack이 있습니다.
2. 많거나 고해상도인 외장 디스플레이
각 외장 디스플레이는 합성 작업을 추가합니다. 4K 또는 5K 외장 디스플레이 — 특히 비네이티브 해상도로 스케일링될 때 — 는 프레임당 부하를 몇 배로 늘립니다. 외장 4K 디스플레이 두 개는 WindowServer를 훨씬 더 높이 끌어올릴 수 있으며, 특히 오래된 Intel Mac, 저전력 Apple Silicon 구성, 그리고 추가 렌더링 패스가 필요한 스케일링(비네이티브) 모드에서 그렇습니다.
3. 많은 보이는 창 또는 그래픽이 무거운 웹 콘텐츠
보이는 모든 창 — 열려 있는 모든 브라우저 창을 포함하여 — 은 WindowServer가 합성해야 하는 별개의 Core Animation 레이어 묶음입니다. 최신 브라우저의 백그라운드 탭은 보통 일시 중단되어 WindowServer에 직접 부하를 더하지 않지만, 비디오가 많은 페이지, WebGL 또는 canvas 콘텐츠, 애니메이션 웹페이지(자동 재생 광고, 복잡한 CSS 애니메이션)는 그렇게 합니다. 수십 개의 보이는 창이나 몇 개의 까다로운 탭은 WindowServer가 매 프레임 추적하고 합성할 것을 상당히 더 많이 줍니다.
4. 멈춘 애니메이션 또는 누수된 CALayer
앱이 그래픽 리소스를 제대로 해제하지 못하면, WindowServer는 그것을 계속 붙들고 거듭 재평가합니다. 이는 종종 가동 시간이 몇 시간 쌓이는 동안 CPU가 느리게 기어오르다가, 문제의 앱을 종료하는 순간 급격히 떨어지는 형태로 나타납니다.
5. 투명도, 동작, 배경화면 효과
macOS의 동적 배경화면과 시스템의 투명도 및 동작 효과는 모두 WindowServer를 거쳐 실행됩니다. 오래된 Intel Mac이나 이미 부하가 걸린 통합 그래픽의 Apple Silicon Mac에서는 이것들이 불균형하게 비싸질 수 있습니다.
6. macOS 또는 GPU 드라이버 버그
여러 해에 걸쳐 다양한 macOS 마이너 릴리스에서 WindowServer의 메모리 및 CPU 누수가 문서화되어 왔습니다. 방금 업데이트했고 급증이 곧바로 시작되었다면, 그 특정 버전에 대한 Apple의 릴리스 노트와 Apple Discussions 포럼을 확인하세요.
진짜 원인을 찾는 방법
Activity Monitor는 자연스러운 출발점이고 최근 macOS 버전에서 개선되었지만, 이 특정 문제에는 여전히 빈틈이 있습니다. 전체 GPU 활동(윈도우 → GPU 기록)과 GPU를 사용하는 프로세스에 대한 %GPU 열을 보여줄 수는 있지만, WindowServer의 타임라인에 맞춰진 프로세스별 연속 GPU 추세를 제공하지 않으며, 화면의 창을 그것을 소유한 프로세스와 연결하지도 않습니다. 바로 이 두 가지가 여러분에게 실제로 필요한 것입니다.
1단계: Activity Monitor에서의 빠른 성과
Activity Monitor → CPU 탭을 엽니다. CPU로 정렬합니다. WindowServer의 백분율을 기록합니다. 윈도우 → GPU 기록을 열어 전체 GPU 부하가 높은지 확인합니다. 프로세스에 %GPU 열이 보이면, 그것으로 정렬하여 이 순간 가장 무거운 GPU 사용자를 찾아내세요.
이는 증상이 실재함을 알려주고 그래픽 집약적 앱을 가리키지만, 여전히 시간에 따라 WindowServer와 연관 짓고 어떤 앱의 창이 책임이 있는지 확인해야 합니다.
2단계: ProcXray로 상류 앱 식별하기
ProcXray는 이런 종류의 리소스 교차 진단을 위해 특별히 만들어졌습니다:
- 모든 테이블 보기의 프로세스별 GPU 열(그리고 그것을 채우는 프로세스별 GPU 사용률 추적)은 프로세스를 지속적인 GPU 사용량으로 정렬하고 현재 스냅샷이 아니라 추세를 지켜보게 해줍니다 — 그래서 Chrome, Slack, 또는 비디오 앱이
WindowServer가 합성하고 있는 부하의 일관된 원동력인지 확인할 수 있습니다. - System Dashboard는 기기 전체의 시스템 GPU 압박을 보여줌으로써 이를 보완하므로, 프로세스별 그림을 시스템 보기와 연관 지을 수 있습니다.
- Window Spy Picker를 사용하면 화면의 어떤 창에든 십자선을 겨누어 그것을 소유한 프로세스를 즉시 식별할 수 있습니다. 멈췄거나 시각적으로 얼어붙은 창이 보이면, 이것이 2초 만에 소유자를 찾아냅니다. (이 작업 흐름에 대한 자세한 내용은 macOS에서 어떤 프로세스가 창을 소유하는지 찾는 방법을 참조하세요.)
- Resource History 보기를 사용하면
WindowServer가 오르기 시작한 순간으로 되감아, 같은 시점에 어떤 다른 프로세스가 치솟았는지 볼 수 있습니다. 이것이 몇 시간에 걸쳐 쌓인 느린 누수를 잡아내는 방법입니다.
이런 종류의 디버깅에서 Activity Monitor가 어디서 부족한지에 대한 더 폭넓은 비교는 ProcXray vs Activity Monitor를 참조하세요.
3단계: 용의자를 종료하며 A/B 테스트
용의자가 한두 개 생기면, 하나씩 종료하면서 WindowServer의 CPU가 떨어지는 것을 지켜보세요. 이렇게 하면 재부팅하지 않고 전체 세션을 방해하지 않으면서 원인을 확인할 수 있습니다.
단계별 해결 방법
가장 비용이 적고 방해가 덜한 것부터 순서대로 적용하세요.
1. 용의 앱 종료하기
상류 프로세스를 식별했다면 종료하세요. 필요하면 새로 다시 여세요. 이것으로 WindowServer 급증의 대다수가 즉시 해결됩니다.
2. 진단으로 외장 디스플레이 분리하기
특정 앱을 짚어낼 수 없다면, 외장 디스플레이 하나를 분리하고 CPU를 지켜보세요. WindowServer가 급격히 떨어지면, 디스플레이가 지배적인 비용입니다. 그러면 해상도를 낮추거나, 외장 디스플레이를 네이티브 해상도(스케일링 없음)로 사용하거나, 필요하지 않을 때 분리해 둘 수 있습니다.
3. 투명도와 동작 줄이기
두 설정 모두 합성 작업을 WindowServer에서 더 단순한 그리기 경로로 옮깁니다. 무료이고, 되돌릴 수 있으며, 통합 그래픽 Mac에서 종종 눈에 띕니다:
- 투명도 줄이기: 시스템 설정 → 손쉬운 사용 → 디스플레이 → 투명도 줄이기
- 동작 줄이기: 시스템 설정 → 손쉬운 사용 → 동작 → 동작 줄이기
4. GPU를 많이 쓰는 앱에서 하드웨어 가속 비활성화하기
Chrome에서: 설정 → 시스템 → “사용 가능한 경우 그래픽 가속 사용”을 끈 다음 Chrome을 다시 시작하세요. 대부분의 Electron 앱에도 자체 설정에 비슷한 옵션이 있습니다. 이는 렌더링을 GPU에서 CPU로 옮깁니다 — 앱 자체의 CPU가 약간 높아지는 대가로 WindowServer 급증을 해결할 수 있습니다.
5. 불필요한 창과 그래픽이 무거운 페이지 닫기
대부분의 백그라운드 탭은 이미 일시 중단되어 WindowServer에 직접 부하를 주지 않습니다. 대신 필요하지 않은 보이는 창을 닫고, 자동 재생 비디오나 애니메이션 페이지를 일시 정지하고, 백그라운드 창에서 여전히 실행 중인 WebGL 또는 canvas 데모를 종료하는 데 집중하세요. 일상적으로 많은 브라우저 창을 열어 둔다면, 탭을 더 적은 수의 창으로 통합하는 것도 도움이 됩니다.
6. 로그아웃했다가 다시 로그인하기
로그아웃하면 WindowServer가 깔끔하게 종료되고 새로운 상태로 다시 시작됩니다 — 전체 재부팅 없이도. 이는 개별 앱 종료로는 잡지 못한 멈춘 레이어 사례를 종종 해결합니다.
7. macOS와 용의 앱 업데이트하기
최근 macOS 또는 앱 업데이트가 문제에 앞섰다면, 후속 패치가 있는지 확인하세요. Apple은 WindowServer 누수에 대한 마이너 릴리스 수정을 여러 번 배포했습니다.
8. 최후의 수단: 재시동, 그리고 오래된 Intel Mac에서만 SMC 재설정
전체 재시동은 WindowServer와 GPU 드라이버 상태를 재설정합니다. 재시동 후에도 같은 작업 부하가 여전히 급증을 유발한다면, 원인은 상류에 있는 것이지 — 일시적인 상태가 아니므로 — 추가적인 시스템 재설정을 하기보다 책임 있는 앱을 식별하는 데 집중해야 합니다. 오래된 Intel Mac에서만, 디스플레이나 전원 관리 증상이 WindowServer 부하와 함께 지속될 경우 SMC 재설정이 가끔 도움이 될 수 있습니다. Apple Silicon Mac에는 사용자가 접근할 수 있는 SMC 재설정이 없으며, 어느 경우든 WindowServer 문제에 대한 올바른 해결책인 경우는 드뭅니다.
특정 용의자가 드러나지 않을 때의 더 일반적인 성능 점검에 대해서는 올바른 프로세스를 종료하여 느린 Mac을 고치는 방법을 참조하세요.
자주 묻는 질문
WindowServer를 종료하거나 비활성화할 수 있나요?
아니요. WindowServer는 여러분의 전체 그래픽 사용자 세션을 운영합니다. 강제 종료하면 즉시 로그아웃되어 저장하지 않은 작업이 모두 사라집니다. macOS는 다시 로그인하면 자동으로 그것을 다시 시작합니다. 그것을 비활성화하는 지원되는 방법은 없습니다.
WindowServer의 높은 CPU 사용량이 Mac을 손상시키나요?
직접적으로는 아닙니다. 지속적으로 높은 CPU 사용량은 발열을 늘리고 배터리 수명을 단축시키지만, WindowServer 자체가 그 작업을 하는 것은 하드웨어 위험이 아닙니다. 더 깊은 우려는 무엇이 그것을 그렇게 힘들게 일하게 만드는가입니다 — 배터리를 소모시키는 통제 불능 앱이 진짜 대가입니다.
WindowServer가 메모리를 그렇게 많이 쓰는 이유는?
WindowServer는 합성을 빠르게 유지하기 위해 보이는 모든 앱의 렌더링된 레이어를 캐시합니다. 메모리 사용량은 창의 개수, 디스플레이의 해상도, 세션이 실행된 시간에 따라 늘어납니다. 긴 가동 시간 후 수 기가바이트는 드문 일이 아닙니다. 메모리가 끝없이 증가한다면, 누수된 레이어 사례(위의 원인 4번)를 의심하고 로그아웃했다가 다시 로그인하세요.
외장 모니터를 연결할 때만 치솟는 이유는?
외장 디스플레이를 추가하면 그 해상도에 비례하여 프레임당 합성 작업이 늘어납니다. 4K 외장 디스플레이는 WindowServer가 매 프레임 합성해야 하는 픽셀을 대략 두세 배로 늘립니다. 급증이 크다면, 외장 디스플레이를 네이티브 해상도로 사용해 보세요 — 스케일링 모드는 추가 렌더링 패스가 필요하기 때문에 상당히 더 비쌉니다.
재시동이 WindowServer의 높은 CPU 사용량을 영구적으로 해결하나요?
근본 원인이 일시적인 누수인 경우에만 그렇습니다. 재시동은 WindowServer를 깨끗한 상태로 재설정하지만, 같은 앱을 다시 열거나 같은 디스플레이를 다시 연결하면 급증이 돌아옵니다. 진짜 해결책은 상류 원인을 식별하는 것입니다. 재시동은 백지 상태일 뿐, 치료가 아닙니다.
출처 및 참고 자료
- Apple Support — How to use Activity Monitor
- Apple Support — View GPU activity in Activity Monitor
- Apple Support — Change Display accessibility settings on Mac
- Apple Support — Customize onscreen motion in macOS
- Apple Developer Documentation — Core Animation Programming Guide (보관됨; Core Animation 레이어와 macOS 컴포지터에 대한 배경 정보)
- ProcXray vs Activity Monitor
- macOS에서 프로세스를 모니터링하는 방법: 개발자를 위한 완전한 가이드
ProcXray 무료 다운로드 → — WindowServer의 부하를 실제로 일으키는 앱을 찾아내세요. macOS Sonoma+, Apple Silicon 및 Intel.