가장 반복 가능한 최악의 워크로드를 기준으로 충분한 CPU 여유를 확보해 이벤트 발생부터 동작 실행까지의 시간과 재시작 목표를 충족하세요. 모든 Home Assistant 스택에 적용되는 보편적인 비율을 정당하게 제시할 수는 없습니다.
4코어 호스트는 평균 사용률이 낮아 보여도 한 코어가 포화될 수 있으며, 실제 병목은 스토리지 대기, 메모리 압박 또는 열 스로틀링인데 CPU 병목처럼 보일 수도 있습니다. 현실적으로 가장 바쁜 동시 작업을 정의하고, 제어 지연 시간과 코어별 동작을 측정한 다음, 일반적인 보조 서비스를 중단하지 않고 반복적으로 통과할 수 있는 최소 리소스 여유를 유지하세요.
피크와 사용자 체감 한계 정의하기
가장 바쁜 일반 자동화 작업과 대시보드 사용, 그리고 백업·데이터베이스 유지 관리·음성 처리·선택한 카메라 처리 같은 예정된 백그라운드 작업을 하나의 워크로드로 구성하세요. 사용률을 측정하기 전에 허용 가능한 이벤트-동작 지연 시간, 대시보드 응답 시간, 재시작 후 준비 완료 시간을 정의하세요.
인위적인 전체 코어 스트레스 테스트만 피크로 사용하지 마세요. 이 테스트는 하드웨어 용량은 측정하지만, 실제 사용자가 경험하는 스케줄링·데이터베이스·통합·애드온 간의 동시 작업은 측정하지 못합니다.
유효한 기준선은 동일한 디바이스 수, 통합 구성, 데이터베이스 상태 및 주변 서비스를 사용해 세 번 실행해야 합니다. 워크로드를 반복할 수 없다면, 그 결과에서 산출한 어떤 비율도 신뢰할 수 있는 여유 용량이 아닙니다.
대조군으로 한산한 시간대의 실행 결과도 기록하세요. 한산한 상태와 피크 상태의 차이를 통해 워크로드 민감도를 알 수 있지만, 피크 비율만으로는 시스템이 포화 상태에 가까운 상태에서 시작했는지 알 수 없습니다.
코어별 포화와 대기 상태를 따로 확인하기
사용자 체감 지연 시간과 함께 코어별 사용률, 부하, 가상 머신의 steal time, I/O 대기, 주파수, 온도 및 Home Assistant 프로세스를 기록하세요. 모든 측정값을 동일한 타임스탬프에 맞추세요.
한 코어가 포화되면 전체 시스템 평균이 훨씬 낮게 보일 수 있으므로, 전체 사용률이 사용 가능한 여유를 나타낸다고 가정하지 말고 프로세스 분포를 확인하세요.
한 코어가 100%에 도달하면서 지연 시간이 증가한다면 CPU의 싱글 스레드 성능 또는 블로킹 작업이 원인일 수 있습니다. I/O 대기가 먼저 증가한다면 스토리지 또는 데이터베이스 동작을 개선하세요. 온도 상승과 함께 주파수가 낮아진다면 명목 용량을 더 확보하기 전에 냉각 문제를 해결하세요.
스케줄링과 격리로 여유 확보하기
선택적 작업을 가장 바쁜 제어 시간대 외부로 옮기고, 과도한 부하를 유발하는 보조 컨테이너를 제한하며, 카메라·AI·미디어 작업이 실행 가능한 모든 코어를 소비하지 않도록 하세요. 이러한 피크 상황에서도 Home Assistant와 필수 브로커가 계속 작업을 진행할 수 있어야 합니다.
현재 시스템의 제한 요인을 측정한 후에만 워크로드 기반 프로세서 여유를 비교하세요. 더 빠른 제품을 구매해도 제한 없는 작업이나 스토리지 대기 문제는 해결되지 않습니다.
스케줄링 또는 제한을 변경할 때마다 다시 테스트하세요. 하드웨어를 변경하지 않고 지연 시간 기준을 통과했다면 회복된 여유는 운영상의 여유 용량입니다. 동일한 코어가 계속 포화된다면 동일한 워크로드를 기준으로 더 강력한 CPU를 비교하세요.
반복 테스트 결과로 여유 용량 설정하기
깨끗하게 반복 실행한 결과 중 관측된 가장 높은 피크를 사용한 다음, 예상되는 통합 구성 증가와 한 번의 유지 관리 작업 동시 실행을 위한 추가 용량을 확보하세요. 결과는 보편적인 유휴 상태 목표가 아니라 테스트를 통해 검증된 서비스 범위로 표현하세요.
리소스 여유 용량 벤치마크의 절차는 CPU, 메모리, 스토리지 및 네트워크를 아우르는 기준선을 제공합니다.
연속 실행에서 원래의 피크가 열 스로틀링이나 강제 서비스 중단 없이 지연 시간 및 재시작 목표를 충족하면 통과입니다. 스케줄링, 통합 구성 및 I/O 원인을 제외한 후에도 동일한 CPU 특화 포화 상태가 남아 있다면 확장하거나 업그레이드하세요.
지원 및 팁
더 읽어보기

여러 컨테이너에서 동시 실행할 때 Immich 데이터베이스 연결을 최적화하는 방법
먼저 max_connections를 늘리지 마세요. Immich 세션을 측정하고, 모든 컨테이너의 요구량을 합산하며, 관리용 여유 공간을 확보한 뒤, 실제로 확인된 병목만 조정하세요.

Immich에서 중복 작업 또는 가져오기를 방지하는 방법
반복 작업과 중복 자산을 분리하세요. 하나의 표준 수집 경로를 사용하고, 재시도와 경로 변경을 제어한 다음, 소규모 코호트에서 재진입을 테스트하세요.

데이터베이스 볼륨이 가득 찬 후 Immich를 복구하는 방법
공간을 확보하기 위해 PostgreSQL WAL을 절대 삭제하지 마세요. Immich 쓰기를 중지하고, 데이터베이스 상태를 보존한 뒤, 안전하게 용량을 추가하고 PostgreSQL을 복구한 다음 재발을 방지하세요.

