토스증권, Milvus NUMA 배치 최적화로 검색 처리량 41% 향상
핵심 내용
remote DRAM 접근 비율을 50%에서 0.8%로 낮춰 같은 자원에서 성능을 높였다.
자세히 보기
토스증권 Data Infra 팀은 온프레미스 환경에서 Milvus 기반 벡터 검색 서비스를 운영하기 전, 필요한 서버 자원 규모를 산정하는 과정을 공개했습니다. 초기에는 HNSW 인덱스를 사용했으나 메모리 사용량이 과도하고 목표 처리량(QPS)을 충족하지 못해 HNSW_SQ8로 전환했습니다. 그러나 CPU 사용률이 높음에도 처리량 증가가 제한적인 문제를 발견하고, NUMA(Non-Uniform Memory Access) 구조를 분석해 최적화를 진행했습니다.
NUMA 배치 최적화
실험 결과, 검색 중 약 50%의 DRAM 읽기가 반대 소켓(Remote Access)에서 발생해 CPU가 데이터를 기다리는 시간이 길었습니다. 이를 해결하기 위해 Kubernetes의 CPU Manager, Memory Manager, Topology Manager를 활용해 QueryNode의 CPU와 메모리를 같은 NUMA 노드에 배치했습니다.
- Remote DRAM 비율: 약 50%에서 0.8%로 감소
- IPC(Instructions Per Cycle): 0.37에서 0.55로 향상
- 처리량(QPS): ef48 기준 405에서 572로 41% 증가
- 지연시간(p99): 3.94초에서 2.04초로 48% 단축
사이징 기준 수립
최적화된 구성을 바탕으로 벡터 차원, 건수, 검색 설정(ef 값)에 따른 노드당 처리량을 측정했습니다. 이를 통해 새로운 서비스가 요구하는 검색 조건을 입력하면 필요한 서버 대수를 계산할 수 있는 시뮬레이터를 개발했습니다. 벡터 차원이 두 배가 되면 처리량은 약 1/3로 줄어드는 경향을 보였으며, 메모리 용량과 QPS 중 더 큰 제약 조건을 반영해 서버 규모를 산정합니다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.