Mac에서 WindowServer 높은 CPU 고치기
WindowServer는 macOS 디스플레이 합성기입니다. CPU 사용량은 여러 디스플레이에 걸쳐 앱 표면을 합치는 데 필요한 작업량을 반영하지만, 프로세스 이름만으로는 반복 다시 그리기를 유발하는 앱을 알 수 없습니다. 애니메이션, 화면 공유, 디스플레이 변경 중의 높은 수치는 정상일 수 있습니다. 의미 있는 신호는 유휴 상태에서의 지속 부하와 함께 반응성, 발열, 배터리 수명에 미치는 측정 가능한 영향입니다.
WindowServer란 무엇인가
WindowServer는 macOS 합성기입니다. 보이는 모든 창, 메뉴, 애니메이션, 픽셀은 모든 디스플레이에 걸쳐 이 프로세스가 그리고 합칩니다. 화면에 있는 모든 것에 관여하기 때문에, 무거운 그래픽 작업은 원인 앱이 아니라 WindowServer CPU로 나타납니다. 그래서 실제로는 전달자인데 원인처럼 보이기 쉽습니다.
무엇이 사용량을 올리는가
WindowServer 부담을 키우는 요인은 대략 다음과 같습니다.
- 많은 창과 Spaces. 수십 개의 열린 창과 여러 가상 데스크톱은 모두 추적하고 합성해야 합니다.
- 외장 및 고해상도 디스플레이. 밀어내야 할 픽셀이 많고, 특히 4K나 5K 화면 또는 모니터를 여러 대 쓰면 기준 부하가 꾸준히 올라갑니다.
- 스케일된 해상도. 디스플레이를 비네이티브 “~처럼 보이게” 해상도로 쓰면 더 큰 렌더 표면과 다운샘플링이 필요할 수 있습니다. 비용은 Mac, 디스플레이, 스케일 모드, 작업량에 따라 달라지며, Retina 스케일 자체는 정상입니다.
- 투명도와 모션. 메뉴, Dock, Control Center의 블러와 반투명은 WindowServer가 계속 계산하는 실시간 효과입니다.
- 창이 많은 앱이 끊임없이 다시 그리는 경우. 예를 들어 빠르게 출력하는 터미널, 백그라운드에서 애니메이션하는 페이지 등입니다.
- 캡처 및 원격 디스플레이 소프트웨어. 화면 녹화, 화상 통화, AirPlay, 원격 데스크톱, 가상 디스플레이 도구는 캡처나 합성 작업을 더합니다.
- 높은 주사율과 움직이는 데스크톱. 프레임이 많거나 픽셀이 계속 바뀌면, 창을 건드리지 않아도 작업량이 늘어납니다.
부담을 줄이는 방법
비용이 낮은 조치부터 순서대로 진행합니다.
- 투명도 줄이기: 시스템 설정 > 손쉬운 사용 > 디스플레이를 연 뒤 투명도 줄이기를 켭니다. Apple의 디스플레이 설정 가이드 가 시각적 변화를 설명합니다. 실시간 효과 작업을 줄일 수 있지만, 성능 수정으로 유지하기 전에 같은 장면으로 비교해 보세요.
- 모션 줄이기: 이제는 손쉬운 사용 > 모션 패널이 따로 있습니다. Apple의 모션 가이드 에 따르면 앱 열기, 데스크톱 전환 같은 동작의 애니메이션이 바뀝니다.
- 기본 디스플레이 스케일 또는 더 낮은 주사율을 시험한 뒤 같은 작업량으로 비교합니다. 모든 스케일이 나쁘다는 가정으로 읽기 쉬운 텍스트를 포기하지 마세요.
- 쓰지 않는 창을 닫고 Spaces를 줄이며, 백그라운드에서 크게 다시 그리는 앱을 종료합니다.
- 화면 녹화, 원격 데스크톱, 애니메이션 배경화면, 가상 디스플레이를 하나씩 멈춰 원인을 찾습니다.
- 디스플레이 하나를 분리해 진단합니다. 기준 부하가 바뀌면 스케일, 주사율, 케이블, 어댑터를 따로 점검합니다.
증거를 모은 뒤에만 로그아웃했다가 다시 로그인합니다. 이렇게 하면 사용자 디스플레이 세션이 다시 시작됩니다. 재부팅은 다시 그리기 버그를 가릴 수 있고, 나중에 같은 증상을 다시 유발할 앱을 특정하지 못합니다.
순간 백분율만으로 판단하지 마세요. 활성 상태 보기에서 같은 유휴 장면을 몇 분 관찰하고, 애니메이션이나 캡처 작업을 한 번 재현한 뒤 의심 원인을 하나씩 제거합니다. WindowServer는 증상과 함께 봐야 합니다. 입력이 더 부드러워지고, 발열이 줄거나, 배터리 동작이 나아지는지가 기준입니다. 수치가 내려가도 체감이나 열 개선이 없다면 유용한 수정이 아닙니다.
내부 구조: 합성기, 그리고 스케일이 비용이 되는 이유
WindowServer는 합성기입니다. 각 앱은 자신의 오프스크린 버퍼, 즉 백킹 스토어에 그리고, WindowServer는 그 버퍼들을 디스플레이별 최종 이미지로 합치며 변환과 효과를 적용합니다. 장면이 바뀔 때마다 합성이 돌아가므로, 끊임없는 다시 그리기와 캡처는 CPU나 GPU를 계속 쓸 수 있습니다. 일부 스케일 모드는 더 큰 중간 표면을 쓰고 다운샘플링하지만, 이는 가능한 원인 중 하나일 뿐입니다. 픽셀 수, 주사율, 디스플레이 수, 다시 그리기 빈도는 각각 따로 시험해야 합니다.
모니터가 도움이 되는 지점
활성 상태 보기 또는 Mole의 Status 보기는 WindowServer, CPU, GPU 추세를 보여 주지만, 둘 다 합성 비용을 특정 앱에 자동으로 할당하지는 못합니다. 신뢰할 수 있는 방법은 통제된 격리입니다. 다시 그리기 원인 하나를 멈추거나 디스플레이 변수 하나를 바꾼 뒤, 유휴 및 작업 부하 기준선을 비교합니다.
반복 가능한 진단
유휴 상태와 문제 상황에서 WindowServer를 측정한 뒤, 애니메이션 콘텐츠, 캡처 도구, 디스플레이, 스케일, 주사율을 한 번에 하나씩 격리합니다. 지표와 사용자가 느끼는 증상이 모두 나아질 때만 그 변경을 유지합니다. WindowServer를 강제 종료하지 말고, 일반적인 Retina 스케일을 결함으로 다루지 마세요.