
CPU 뼛속까지 써먹고, Milvus 사이징 기준을 만들기까지
두줄요약
Milvus 벡터 검색에서 HNSW_SQ8과 NUMA 배치를 최적화해 품질을 유지하며 QPS를 41% 높였습니다. 검색 조건과 자원 측정값을 연결해 서버 사이징 기준을 만들었습니다.
문제 상황
- 온프레미스 Milvus 환경에서 검색 품질·응답 속도·처리량을 만족하는 CPU·메모리·서버 규모 산정 필요
- 벡터 차원, top-k, recall 목표, 데이터 갱신 빈도에 따른 자원 요구량 차이
해결 방법
- LAION-100M 기반으로 recall@10 0.95 이상 조건에서 HNSW, DISKANN, IVF_SQ8, HNSW_SQ8 비교
- HNSW_SQ8과 ef48 구성 선택 후 QueryNode의 CPU와 인덱스 메모리를 단일 NUMA 노드에 공동 배치
- Kubernetes CPU Manager·Memory Manager·Topology Manager 정책과 Guaranteed Pod 적용
성능/운영 포인트
- remote DRAM 비율 약 50%에서 0.8%로 감소, IPC 0.37에서 0.55로 상승
- 동일 recall 0.9541에서 3대 합산 QPS 405에서 572로 41% 향상, p99 측정 구간 최댓값 48% 감소
- 검색 설정·벡터 차원·데이터 건수·목표 QPS·메모리 요구량을 반영한 서버 규모 시뮬레이터 구성
적용해볼 점
- CPU 사용률뿐 아니라 IPC와 local·remote DRAM 접근 지표를 통한 병목 확인
- 실제 서비스 데이터와 검색 조건에서 recall·QPS·지연시간 재검증 및 장애·점검 여유 용량 반영
