5.3. VDO 스레드 재배포


VDO는 요청을 처리할 때 다양한 작업에 다양한 스레드 풀을 사용합니다. 최적의 성능은 사용 가능한 스토리지, CPU 리소스 및 워크로드 유형에 따라 다른 풀의 올바른 스레드 수 설정에 따라 달라집니다. VDO 작업을 여러 스레드에 분배하여 VDO 성능을 향상시킬 수 있습니다.

VDO는 병렬 처리를 통한 성능을 극대화하는 것을 목표로 합니다. 사용 가능한 CPU 리소스 및 병목 현상과 같은 요인에 따라 병목 현상이 발생한 작업에 더 많은 스레드를 할당하여 개선할 수 있습니다. 스레드 사용률이 높은 경우 (70-80 % 이상) 지연이 발생할 수 있습니다. 따라서 이러한 경우 스레드 수를 늘리는 것이 도움이 될 수 있습니다. 그러나 과도한 스레드는 성능을 방해하고 추가 비용이 발생할 수 있습니다.

최적의 성능을 위해 다음 작업을 수행합니다.

  • 다양한 예상 워크로드로 VDO를 테스트하여 성능을 평가하고 최적화합니다.
  • 50% 이상의 사용률을 가진 풀의 스레드 수를 늘립니다.
  • 개별 스레드 사용률이 낮은 경우에도 전체 사용률이 50%를 초과하면 VDO에서 사용할 수 있는 코어 수를 늘립니다.

5.3.1. NUMA 노드 간에 VDO 스레드 그룹화

NUMA 노드 간에 메모리에 액세스하는 것은 로컬 메모리 액세스보다 느립니다. 코어가 노드 내에서 마지막 수준 캐시를 공유하는 Intel 프로세서에서 단일 노드 내에서 공유되는 것보다 노드 간에 데이터를 공유할 때 캐시 문제가 더 중요합니다. 많은 VDO 커널 스레드는 배타적 데이터 구조를 관리하지만 종종 I/O 요청에 대한 메시지를 교환합니다. VDO 스레드가 여러 노드에 분산되거나 스케줄러에서 노드 간에 스레드를 다시 할당하면 경합이 발생할 수 있으며, 이는 동일한 리소스에 대해 경쟁하는 여러 노드가 될 수 있습니다.

동일한 NUMA 노드에서 특정 스레드를 그룹화하여 VDO 성능을 향상시킬 수 있습니다.

하나의 NUMA 노드에서 서로 그룹 관련 스레드
  • I/O 승인(ackQ) 스레드
  • 상위 수준의 I/O 제출 스레드:

    • 직접 I/O 처리 사용자 모드 스레드
    • 커널 페이지 캐시 플러시 스레드
장치 액세스 최적화
  • 장치 액세스 타이밍이 NUMA 노드마다 다른 경우 스토리지 장치 컨트롤러에 가장 가까운 노드에서 bioQ 스레드를 실행합니다.
경합 최소화
  • logQ 또는 physQ 스레드와 동일한 노드에서 I/O 제출 및 스토리지 장치 인터럽트 처리를 실행합니다.
  • 동일한 노드에서 다른 VDO 관련 작업을 실행합니다.
  • 하나의 노드에서 모든 VDO 작업을 처리할 수 없는 경우 스레드를 다른 노드로 이동할 때 메모리 경합을 고려하십시오. 예를 들어 처리 및 bioQ 스레드를 중단하는 장치를 다른 노드로 이동합니다.

5.3.2. CPU 선호도 구성

VDO 스레드의 CPU 선호도를 조정하는 경우 특정 스토리지 장치 드라이버에서 VDO 성능을 향상시킬 수 있습니다.

스토리지 장치 드라이버의 인터럽트(IRQ) 처리기가 상당한 작업을 수행하고 드라이버가 스레드 IRQ 처리기를 사용하지 않는 경우, 시스템 스케줄러에서 VDO 성능을 최적화하는 기능을 제한할 수 있습니다.

최적의 성능을 위해 다음 작업을 수행합니다.

  • 코어가 과부하된 경우 특정 코어를 IRQ 처리로 전용하고 VDO 스레드 선호도를 조정합니다. %hi 값이 다른 코어보다 몇 퍼센트를 초과하면 코어가 과부하됩니다.
  • 사용 중인 IRQ 코어에서 kvdo:journalQ 스레드와 같은 싱글톤 VDO 스레드를 실행하지 않도록 합니다.
  • 개별 CPU 사용이 높은 경우에만 IRQs에서 다른 스레드 유형을 사용 중인 코어를 유지합니다.
참고

시스템 재부팅 시 구성이 유지되지 않습니다.

절차

  • CPU 선호도를 설정합니다.

    Copy to Clipboard Toggle word wrap
    # taskset -c <cpu-numbers> -p <process-id>

    & lt;cpu-numbers >를 프로세스를 할당하려는 쉼표로 구분된 CPU 번호 목록으로 바꿉니다. & lt;process-id >를 CPU 선호도를 설정하려는 실행 중인 프로세스의 ID로 바꿉니다.

    예 5.1. CPU 코어 1 및 2에서 kvdo 프로세스에 대한 CPU 유사성 설정

    Copy to Clipboard Toggle word wrap
    # for pid in `ps -eo pid,comm | grep kvdo | awk '{ print $1 }'`
    do
        taskset -c "1,2" -p $pid
    done

검증

  • 선호도 세트를 표시합니다.

    Copy to Clipboard Toggle word wrap
    # taskset -p <cpu-numbers> -p <process-id>

    & lt;cpu-numbers >를 프로세스를 할당하려는 쉼표로 구분된 CPU 번호 목록으로 바꿉니다. & lt;process-id >를 CPU 선호도를 설정하려는 실행 중인 프로세스의 ID로 바꿉니다.

추가 리소스

  • 시스템의 taskset(1) 도움말 페이지
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat, Inc.