2026-05-06 iOS Simulator 런타임 디스크 예산、선택적 설치、CI 정리(임대 Apple Silicon 클라우드 Mac、HK / JP / KR / SG / US)
홍콩, 도쿄, 서울, 싱가포르, 미국에서Mac mini M4렌탈xcodebuild test돌리는 팀은 즉시 두 번째 청구를 깨닫습니다.Simulator 런타임무료는 아니고,Library/Developer/CoreSimulator부하에수 GB 규모슬라이스를 잡고,DerivedData와 NVMe 대역을 빼앗아, watchOS 컴패니언이 행렬에 들어가면 한층 더 배증합니다. 이2026-05-06가이드는 세 가지 운영 질문에 대답합니다 : 무엇이 포함되어 있는지재고하는 방법, Destinations 정말 요청 OS 패밀리선택방법, 야간 UI 테스트가 아직 시작 런타임을 지우지 않고깎다방법입니다.헤드리스 Simulator 테스트확장하고,디스크 청소 janitor와 결합하여 동일한 호스트에서병렬 레인달릴 때DerivedData 분리를 참조하십시오.
2026년의 CI가 아직 「Xcode를 넣었다=Simulator 준비OK」와 혼동하는 이유
Xcode.app는 툴체인을 묶지만,런타임는 주문형으로 떨어지는 판형 페이로드입니다. 반복 세 가지 오류:
- destination 드리프트— YAML은
아이폰 15그래도 Xcode 업데이트 후 호스트는아이폰 16이미지만 준비했다. - 조용한 watch 페어링- 로컬에서는 Xcode가 watch 런타임을 자동으로 얻었지만 CI는 없습니다.
- janitor 과잉— cron이 '오래된' 런타임을 지우고 QA가 App Store 충돌 재현에 여전히 필요했습니다.iOS 17.6잃어버린다.
런타임 풋프린트: 기가바이트가 숨어 있는 곳
Apple Silicon 호스트는 장치 데이터, dyld 공유 캐시 및 런타임별 슬라이스를 유지합니다. 주요 iOS 런타임 쌍(단말+연도에 의한 watch 이미지)로 대략7–14GB. UI 스크린샷 레인에서 언어 팩을 넣었다면3–6GB. 중요한 것은 정확한 바이트가 아니고, 다섯 명의 엔지니어가 같은 공유 빌더로 「일단 최신 beta 런타임」을 넣었을 때의미분입니다.
런타임 증가큐 지연와 상관시켜주세요. 여유 공간이12%아래로 떨어지면 첫 증상은 즉시 실패하지 않습니다.xctestfixture 복사가 지연되는 경향이 있습니다. APFS가 연속 익스텐트 탐색에 어려움을 겪기 때문입니다.
새로운 Xcode 측정를 채택할 때 런타임 획득은 단일 체크박스가 아닌용량 마이그레이션입니다. 다중 플랫폼 팩을 촉구하고 CoreSimulator 캐시 재구성, 초기 녹색 빌드 후24–48시간에 걸친 암묵적인 웜 팽창이 일어난다. 임대 호스트에 명시적인 유지 보수 창을 확보하고 PR 트래픽과 첫 번째 일괄 다운로드를 겹치지 마십시오. 무시한 팀은 코드 변경 없이 빨간색 빌드가 다음날 사라지는 플라키를 봅니다. 그 창에서df를 매시간 기록하고 지난 분기의 정상 곡선과 비교합니다. 기울기가 역사의2×를 초과하면, 동일한 레인에 beta 와 GA 의 겹치는 슬라이스를 올렸을 가능성이 높습니다.
마지막으로누가 런타임을 넣을 수 있는지를 문서화하십시오. 개인 sudo 설치가 공유 키에 "수수께끼의 6GB"를 낳는 전형적입니다. 인프라 티켓과 CI 이미지 태그로 변경 사항을 집계하고,ssh세션을 감사 가능 - 특히 서명 자료 저장싱가포르가미동규제가 묶는 경우입니다.
레인 매트릭스: 어떤 호스트가 어떤 런타임을 유지하는지
책임을 명시적으로 분할하고 모든 런너가 교환 가능하다고 가정하지 마십시오.
| 레인 라벨 | 런타임 정책 | 청소의 소유자 |
|---|---|---|
ios-current |
최신 GA iOS와 App Store 매칭의 N-1 1개 | 주차 깎기 + 티켓 |
watch-heavy |
watchOS 이미지 + 페어 터미널 전용 | 월별; 품질 보증 승인없이 N-1을 지우지 않음 |
archive-only |
Simulator 최소; 실제 기계 Archive 우선 | Simulator에 aggressive, 열쇠에는 gentle |
운영자가 runbook에 붙이는 재고 명령
비파괴 프로브로 시작하여 단계적으로 에스컬레이션합니다.
xcrun simctl list runtimes
df -h/
du -sh ~/Library/Developer/CoreSimulator/* 2>/dev/null | sort -h | tail -n 20
Finder와 숫자가 서로 다른 경우 CI 사용자가 실행했습니다.du신뢰 ——launchd 작업은 빌더 계정으로 이동합니다. 다른 볼륨이라면/Volumes/builds하지만 반복합니다.
선택적 설치 runbook (해피 패스)
- 큐를 동결하거나 호스트에 묶는 라벨을 드레인.
- 다음 스프린트의 destination 행렬에 실제로 필요한 런타임 번들 만다운로드.
- 런타임 당
xcrun simctl 부팅에서 훈제하고,sysctl hw.model가 Apple Silicon으로 남아 있는지 확인. - 이미지 버전 태그를 올려 CI YAML과 현실을 일치시킵니다.대기열 재개.
- 설치된 집합을 인프라 저장소에기록(고립 wiki 하지 않습니다).
2단계와 3단계 사이에 티켓으로체크섬또는 Apple 버전 문자열을 남겨두고 깨진 미러로 잘린 런타임이라면 롤백이 명확해집니다.
깎는 방침 : 무엇을 지울 수 있습니까?
좋은 janitor 는파생물aggressive로 지우고,런타임는 준정적 인프라로 취급합니다. 2단계 정책:
| 아티팩트 | 안전한 빈도 | 너무 깎는 위험 |
|---|---|---|
| 미시작 시뮬레이터 터미널 | 매일 | 낮음——템플릿에서 재작성 |
오래된.xcresult번들 |
오브젝트 스토어에 업로드 후 | 보통 — 법률 유지에 30–90일 오프 호스트가 필요한 경우 |
| 런타임 번들 본체 | 분기 + QA 목록 | 높음——크래시 재현의 재현성을 깨뜨린다 |
병렬 레인과 통합 메모리 압력
병렬xcodebuild는 Simulator 시작의 장을 증폭합니다. 대기열 레이블로 호스트당 동시 시작 수를 줄이십시오——병렬 죠의 기사참조. 메모리 압력이 뾰족하면 스왑보다동시 대상 줄이기우선, 통합 메모리에서는 XCTest가 스왑에 매우 약합니다.
sysdiagnose슬라이스를 얻으십시오 - 디스크 압력은 먼저 SpringBoard watchdog로 나타납니다.Xcode 업그레이드 창: 런타임 검색 및 Archive 순서
따뜻한 두 번째 노드가없는 한,런타임 대용량 다운로드그리고TestFlight 제출 동결 밤같은 밤에 넣지 마십시오. MacXCode 호스트에서 가장 안전한 것은블루/그린 빌더: 후보 이미지에서xcodebuild test그리고 가벼운xcodebuild archive -archivePath /tmp/Smoke.xcarchive둘 다 녹색으로 된 다음 이미지 태그를 승격. 이중 노드를 살 수 없다면 범위를 축소 : 유지보수 시간당 추가 런타임은 하나씩 5개 동시에 넣지 않는다. 각 다운로드의벽시계 분기록하고 재무가 다른1TB빌더를 빌리거나 주말 릴리스를 태우거나 비교할 수 있습니다.
업그레이드 후 YAMLdestination 문자열를 다시 확인하십시오. Apple은 시뮬레이터 하드웨어 프로파일 이름을 변경할 수 있습니다. 불일치는 'destination not found'로 보입니다.simctl list가 묻혀있는 것처럼 보입니다 - 많은 사람들이 깎아 내린 지워진 하드웨어 문자열을 작업이 가리키기 때문입니다.simctl list devices available기계 판독 가능 내보내기를 인프라 리포트에서 diff하십시오.
Grafana에 넣을 수있는 수치 목표
- 지속 디스크 이용률은 페이징 운영 전에85%상한.
- 16GB머신에서 프로파일에 여유가 증명되지 않는 한 시작된 Simulator는 최대4받침대.
- 「런타임 취득+기동+단일 XCTest」의 콜드 수용 상한22분; 업그레이드 후 초과하면 경고.
거대한 폴더를 지우기 전에 9 단계
- 비행중인 Archive 작업이 없는지 확인합니다.
- 현재
simctl listGitOps 스냅샷. - 과거30일작업 제로 런타임을 식별.
- 품질보증에 명시적인 삭제 날짜로 알림.
- 한 번에 한 레인만 드레인.
- 지원되는 UI/CLI 경로에서만 런타임 삭제.
- 나머지 대상에서 훈제 재실행.
- 삭제 전후
df비교 차이를 티켓에 첨부. - 건전 호스트만으로 태그를 전진.
FAQ: 베타, Apple Silicon, 넘어 지역 호스트
| 질문 | 실무적인 대답(2026-05-06) |
|---|---|
| 베타 런타임을 프로덕션 CI에 넣어야 합니까? | canary 레이블이 지정된 호스트에 격리; App Store 제출 차선과 섞지 마십시오. |
| 싱가포르와 미국 호스트는 동일한 집합이 필요합니까? | 최소 공통 집합으로 정렬한다.지역 고유의 추가는 YAML 로 encode 되어 있으면 가능. |
Simulator 편중 CI에서 1-2TB Mac mini M4가 이기는 이유
Simulator 로드는랜덤 리드가까이입니다. MacXCode 노드의 베어 메탈Mac mini M4NVMe는 동일한 PR 행렬에서 4 차선이 다른 OS 세대를 시작해도 부팅 시간을 예측 가능하게 유지합니다. 그 예측 가능성은 수치 예산을 규율로 바꾸고 노이지 네이버 뒤에있는 수수께끼의 "대용량 클라우드 디스크"를 구입하는 것보다 낫습니다. 용량 계획이 두 번째JPcanary를 요구하면지역별 요금누가 런타임을 지웠다는 증거를 보안해야합니다.SSH/VNC 액세스 가이드를 붙이십시오.