Multipass 마이그레이션(docs/VMware-to-Multipass-Cluster-Migration.md) 완료 후, "호스트에 남는 여유 메모리 자체를 최소화하고, 그만큼을 노드(VM)에 더 얹고 싶다"는 목표로 진행한 작업 기록. 즉 호스트 macOS가 불필요하게 들고 있는 메모리를 찾아 줄이고, 회수분을 워커 노드 스펙에 반영했다.

1. 목표와 제약

2. 조사 — 프로세스별 메모리 사용량

top -o mem으로 확인한 host 프로세스 상위 목록 (VM 자체인 qemu-system-aarch64 3개 제외):

프로세스 메모리 정체
WindowServer 310M GUI 세션(Aqua) 렌더링
chronod 289M Screen Time 데몬
Finder 119M GUI
VMware Fusion 79M VM은 이미 정지 상태인데 앱만 켜져 있음
Spotlight (앱) 79M 검색 인덱싱
loginwindow 78M 로그인 세션
syspolicyd 63M Gatekeeper
Dock 57M GUI
multipassd 56M Multipass 데몬 (필수)
Tailscale 54M 필수
NotificationCenter 52M GUI
Amphetamine 51M 절전 방지 — 절대 유지
ControlCenter 45M GUI
WallpaperImageExtension 44M 배경화면 렌더링
mds 35M 검색 인덱싱 데몬
sharingd 31M AirDrop/Handoff
StocksWidget / WeatherWidget 30M / 28M 알림센터 위젯
universalAccessAuthWarn 30M 손쉬운 사용 관련 에이전트
TextInputMenuAgent 30M 입력 메뉴
sirittsd 28M Siri TTS

3. 실행 — 무엇을 껐고, 무엇을 못 껐나

3.1 확실히 회수된 것

조치 방법 결과
VMware Fusion 앱 종료 osascript -e 'quit app "VMware Fusion"' 79MB 회수, VM 파일은 그대로 보존 (재실행 시 다시 사용 가능)
Spotlight 인덱싱 비활성화 sudo mdutil -a -i off (전체 볼륨) 인덱싱 중단. 기존 프로세스(Spotlight, mds)는 launchd가 즉시 재기동시키지만, 인덱싱 대상이 없어지므로 시간이 지나며 자원 사용이 서서히 줄어듦 (mds 35M → 23M로 확인)
유휴 알림센터 위젯/에이전트 종료 kill -9 <pid> (직접 프로세스 시그널, launchctl bootout 아님) sirittsd, universalAccessAuthWarn, StocksWidget, WeatherWidget — 재실행되지 않고 완전히 종료됨 (약 116MB)

합계 확정 회수량: 약 250~300MB (호스트 memory_pressure 기준 free 페이지가 약 62MB → 127MB로 증가, 대략 2배)

3.2 시도했지만 안 된 것 — SIP(System Integrity Protection)

Boot-out failed: 150: Operation not permitted while System Integrity Protection is engaged

chronod(Screen Time, 289M)와 sharingd(AirDrop/Handoff, 31M)는 launchctl bootout으로 시도했으나 SIP가 시스템 데몬 강제 종료를 막았다. sharingd는 kill -9로 직접 죽여도 launchd가 즉시 재기동시킴 (KeepAlive 정책). SIP를 끄려면 복구모드 재부팅이 필요한데, 원격 SSH 작업 중인 서버에서 이건 너무 위험한 작업이라 시도하지 않았다.

3.3 의도적으로 남긴 것 — GUI 세션(Aqua) 전체

WindowServer(310M) + Finder(119M) + loginwindow(78M) + Dock(57M) + NotificationCenter(52M) + ControlCenter(45M) ≈ 약 683MB는 로그인 GUI 세션을 유지하는 데 드는 비용이다.

완전 헤드리스(로그아웃 상태)로 전환하면 이 683MB를 거의 다 회수할 수 있지만, Amphetamine은 GUI 세션이 살아있어야 절전 방지 기능이 동작하므로 이 경로는 처음부터 배제했다. 이번 조사에서 회수 가능한 것과 회수 시도조차 하지 않은 것을 명확히 구분해서 기록해둔다.

4. 재배분 — 워커 노드 메모리 증설

회수된 약 250~300MB 중, 당시 available 메모리가 가장 빠듯했던 k3s-worker2(535Mi)에 256Mi를 반영했다.

multipass stop k3s-worker2
multipass set local.k3s-worker2.memory=1.75G   # 1.5G → 1.75G
multipass start k3s-worker2