
CPU 뼛속까지 써먹고, Milvus 사이징 기준을 만들기까지
두줄요약
Milvus 벡터 검색의 품질·처리량 기준으로 HNSW_SQ8을 선택하고 NUMA 배치를 최적화했습니다.\n같은 자원에서 QPS를 41% 높이고 검색 조건 기반 서버 사이징 기준을 만들었습니다.
문제 상황
- 온프레미스 Milvus 환경에서 검색 품질·응답 속도·처리량을 만족하는 CPU·메모리 및 서버 규모 산정 필요
- 워크로드별 벡터 차원, top-k, recall 목표, 데이터 갱신 빈도 차이로 공개 QPS만으로 사이징 곤란
선택 이유
- 컴포넌트별 독립 확장 가능한 MPP 구조와 다양한 인덱스·GPU 검색 지원을 고려한 Milvus 선택
- LAION-100M, recall@10 0.95 이상, 300 QPS 이상 조건에서 HNSW_SQ8이 316 QPS·replica당 약 114GB로 목표 충족
구조와 흐름
- HNSW_SQ8의 후보 탐색 범위 ef와 recall·처리량을 함께 측정하고 QueryNode의 CPU·메모리 접근 분석
- CPU·메모리를 동일 NUMA node에 배치하고 kubelet CPU Manager·Memory Manager·Topology Manager 정책 조합
- 벡터 차원·건수·검색 설정·목표 QPS를 입력받아 처리량과 메모리 기준 중 큰 서버 대수를 선택하는 시뮬레이터 구성
성능/운영 포인트
- NUMA 배치로 remote DRAM 비율 약 50%에서 0.8%, IPC 0.37에서 0.55로 개선
- recall@10 0.9541 유지 상태에서 3노드 합산 QPS 405에서 572로 41% 향상, p99 측정 구간 최댓값 48% 감소
- 실제 서비스 데이터 기반 recall·QPS·지연시간 재검증 및 장애·점검 여유 용량 별도 반영 필요

