Mac에서 mds와 mdworker 높은 CPU 고치기
mds, mds_stores, mdworker라는 이름의 프로세스는 Spotlight 메타데이터와
검색 인덱싱을 담당합니다. 업데이트, 마이그레이션, 복원, 대량 파일 변경 직후의
일시적 부하는 정상이지만, mdutil -s만으로는 재구축이 진행 중인지 알 수 없고
고정된 한 시간 한도도 없습니다. 재구축하거나 데이터를 제외하기 전에 원인과
진행 상황을 먼저 확인하세요.
mds와 mdworker란
이들은 Spotlight 인덱싱 엔진입니다. mds(metadata server)는 인덱스를 조율하고, mds_stores는 데이터베이스를 관리하며, mdworker 프로세스가 실제 파일을 스캔해 내용과 메타데이터를 검색 가능하게 만듭니다. 인덱스가 최신 상태이면 대기합니다. 인덱스가 낡아지면 깨어나 파일을 처리하고, 그때 보이는 CPU 사용량이 바로 그 작업입니다.
왜 급증하는가
Spotlight는 많은 파일이 한꺼번에 바뀔 때 재인덱싱합니다.
- macOS 업데이트나 마이그레이션 후, 디스크의 많은 부분이 새로워졌을 때.
- 대량 데이터를 이동·복사한 후, 파일 복원이나 드라이브 복제 같은 경우.
- 아직 인덱싱되지 않은 새 외장 또는 네트워크 볼륨을 연결했을 때.
- 파일이 많은 폴더가 빠르게 바뀔 때, 대용량 다운로드가 끝난 직후 등.
인덱싱이 켜져 있는지 확인하세요.
mdutil -s /
"Indexing enabled"는 정상 상태이며 진행률 보고가 아닙니다. 지속되는
mdworker CPU를 Activity Monitor의 디스크 활동과 최근 파일 변경과
맞춰 보세요. 작업이 진행 중이면 Mac 전원을 유지하고 끝나도록 두세요.
큰 소스 트리, 메일 저장소, 외장 볼륨, 느린 저장 장치, 반복되는 동기화
변동은 작업을 더 길게 만들 수 있습니다.
가라앉지 않을 때
활동이 전혀 잦아들지 않으면, 먼저 파일을 다시 쓰는 앱을 멈추고 의심되는 외장 볼륨 하나를 분리하세요. System Settings > Spotlight > Search Privacy에서 폴더를 제외하면 인덱싱 비용은 줄지만 그 폴더의 Spotlight 결과도 사라집니다. 생성되는 빌드 트리, 가상 디스크, 정말 검색하지 않을 아카이브에만 쓰고, Home이나 시동 디스크에 대한 일괄 제외로 쓰지 마세요.
검색 결과가 빠지거나 인덱스가 분명히 멈춘 경우에만, Apple 문서대로 같은 개인정보 목록으로 재구축하세요. 해당 디스크나 폴더를 추가하고 잠시 기다린 뒤 제거합니다. 현재 Spotlight rebuild guide는 macOS 버전에 따라 버튼을 Search Privacy 또는 Spotlight Privacy로 부릅니다. 목록에서 제거하면 Spotlight가 해당 항목을 다시 인덱싱합니다. 재구축은 의도적으로 비싼 작업을 다시 하므로, 평소 CPU 활동에 대한 첫 대응이 아니라 수리 단계입니다.
내부 구조: 인덱스, 그리고 재구축을 유발하는 것
Spotlight는 각 볼륨의 숨김 .Spotlight-V100 저장소에 역인덱스, 즉 단어와
메타데이터를 해당 파일에 매핑한 지도를 둡니다. 파일이 바뀌면 커널의
FSEvents 메커니즘이 mds에 알리고, mds는 파일을 mdworker에 넘기며,
mdworker는 해당 파일 형식의 importer 플러그인(.mdimporter)을 로드해
텍스트와 메타데이터를 추출합니다. 일반 편집은 저렴합니다. 전체 재구축은
대상 파일을 다시 가져와야 해서 비쌉니다. 일부 업데이트, 마이그레이션,
복원은 상당한 재인덱싱을 유발하지만 범위는 달라집니다. 개인정보 제외는
그 하위 트리의 검색을 포기하는 대가로만 작업을 줄이므로, 좁고 의도적으로
써야 합니다.
모니터가 도움이 되는 지점
Activity Monitor나 Mole의 Status 보기로 Spotlight가 CPU와 디스크를 점유하는지 확인할 수 있습니다. 더 어려운 질문은 그 작업이 유한한 변경 때문인지, 계속 바뀌는 디렉터리 때문인지입니다. 최근 활동과 통제된 분리가 답을 주며, worker를 강제 종료하는 것은 답이 아닙니다.
반복 가능한 진단
인덱싱이 켜져 있는지 확인하고, CPU를 디스크 활동·최근 파일 변경과 맞춘 뒤, 진행이 타당하면 기다리세요. 활동이 지속되면 반복적으로 바뀌는 폴더나 볼륨을 분리하세요. 검색이 필요 없는 데이터만 제외하고, 결과나 인덱스 동작이 필요를 증명할 때만 Search Privacy로 재구축하세요. worker를 정리 전략으로 종료하지 마세요.