R&D/Hypervisor

대규모 VM을 위한 스토리지 확장 전략: IOThread와 Virtqueue 매핑 최적화

sunshout1 2026. 3. 12. 14:37
반응형

최근 클라우드 네이티브 워크로드나 AI 추론용 가상 머신(VM)들은 수십 개의 vCPU를 사용하는 대형 인스턴스로 구성됩니다. 하지만 CPU가 많아진다고 해서 디스크 I/O 성능이 비례해서 늘어날까요?

오늘은 레드햇의 최신 가이드를 바탕으로, virtio-blk 성능 확장의 핵심인 IOThread와 Virtqueue 매핑 전략을 살펴보겠습니다.

1. 왜 대형 VM에서 I/O 병목이 발생하는가?

전통적인 가상화 방식에서는 모든 I/O 처리가 단일 IOThread에서 이루어집니다. 아무리 vCPU가 많아도 I/O를 처리하는 입구(Thread)가 하나라면, 여기서 병목이 발생하여 고성능 NVMe 스토리지의 성능을 100% 활용할 수 없게 됩니다.

2. 해결의 열쇠: IOThread와 Virtqueue

이 병목을 해결하기 위해 두 가지 핵심 개념이 결합됩니다.

  • IOThread: 호스트에서 게스트의 I/O를 실제 처리하는 작업자 스레드입니다.
  • Virtqueue: 게스트와 호스트 사이에서 I/O 요청을 주고받는 통로(Queue)입니다.

과거에는 1 IOThread : N Virtqueue 구조였지만, 이제는 N IOThread : N Virtqueue 매핑이 가능해졌습니다.

3. 성능 극대화를 위한 3가지 매핑 전략

레드햇은 워크로드 특성에 따라 다음 세 가지 매핑 방식을 제안합니다.

① 1:1 매핑 (The Dedicated Approach)

각 IOThread가 하나의 Virtqueue를 전담합니다.

  • 장점: 스레드 간 경합이 전혀 없으며, 특정 코어에 I/O 처리를 고정(Pinning)할 때 최상의 성능을 냅니다.
  • 적합한 곳: 초고성능 DB 서버, 로우 레이턴시가 필수인 워크로드.

② N:M 매핑 (The Balanced Approach)

여러 개의 IOThread가 Virtqueue 그룹을 나누어 관리합니다.

  • 장점: 리소스 사용 효율과 성능 사이의 균형을 맞춥니다.
  • 적합한 곳: 일반적인 고사양 애플리케이션 서버.

③ Share-everything (The Shared Approach)

모든 IOThread가 모든 Virtqueue를 처리할 수 있도록 동적으로 할당합니다.

  • 장점: 특정 큐에 부하가 쏠릴 때 유연하게 대처할 수 있습니다.

참고

https://developers.redhat.com/articles/2024/09/05/scaling-virtio-blk-disk-io-iothread-virtqueue-mapping#

728x90
반응형