검색

4.4. VDO 성능에서 I/O 깊이의 영향 테스트

download PDF

이 테스트에서는 최적의 처리량과 VDO 구성에 가장 낮은 대기 시간을 생성하는 I/O 깊이를 결정합니다. I/O 깊이는 fio 툴이 한 번에 제출하는 I/O 요청 수를 나타냅니다.

VDO는 4KiB 섹터 크기를 사용하기 때문에 테스트에서는 4KiB I/O 작업과 1, 8, 16, 32, 64, 128, 256, 512, 1024의 I/O 깊이를 테스트합니다.

4.4.1. 순차적 100%에서 I/O 깊이의 효과를 VDO에서 테스트

이 테스트에서는 다양한 I/O 깊이 값에서 VDO 볼륨에서 순차적으로 100% 읽기 작업을 수행하는 방식을 결정합니다.

절차

  1. 새 VDO 볼륨을 만듭니다.

    자세한 내용은 4.2절. “성능 테스트를 위한 VDO 볼륨 생성” 의 내용을 참조하십시오.

  2. 테스트 볼륨에서 쓰기 fio 작업을 수행하여 테스트에서 액세스할 수 있는 모든 영역을 미리 채웁니다.

    # fio --rw=write \
          --bs=8M \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --thread \
          --direct=1 \
          --scramble_buffers=1
  3. 순차적 100% 읽기에 대해 보고된 처리량 및 대기 시간을 기록합니다.

    # for depth in 1 2 4 8 16 32 64 128 256 512 1024 2048; do
      fio --rw=read \
          --bs=4096 \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --numjobs=1 \
          --thread \
          --norandommap \
          --runtime=300 \
          --direct=1 \
          --iodepth=$depth \
          --scramble_buffers=1 \
          --offset=0 \
          --size=100g
      done
  4. VDO 테스트 볼륨을 제거합니다.

    자세한 내용은 4.3절. “VDO 성능 테스트 볼륨 정리” 의 내용을 참조하십시오.

4.4.2. VDO에서 순차적 100% 쓰기에서 I/O 깊이의 효과 테스트

이 테스트는 다른 I/O 깊이 값에서 VDO 볼륨에서 순차적으로 100% 쓰기 작업을 수행하는 방식을 결정합니다.

절차

  1. 새 VDO 테스트 볼륨을 만듭니다.

    자세한 내용은 4.2절. “성능 테스트를 위한 VDO 볼륨 생성” 의 내용을 참조하십시오.

  2. 쓰기 fio 작업을 수행하여 테스트에서 액세스할 수 있는 모든 영역을 미리 채웁니다.

    # fio --rw=write \
          --bs=8M \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --thread \
          --direct=1 \
          --scramble_buffers=1
  3. 순차적 100% 쓰기에 대해 보고된 처리량 및 대기 시간을 기록합니다.

    # for depth in 1 2 4 8 16 32 64 128 256 512 1024 2048; do
      fio --rw=write \
          --bs=4096 \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --numjobs=1 \
          --thread \
          --norandommap \
          --runtime=300 \
          --direct=1 \
          --iodepth=$depth \
          --scramble_buffers=1 \
          --offset=0 \
          --size=100g
      done
  4. VDO 테스트 볼륨을 제거합니다.

    자세한 내용은 4.3절. “VDO 성능 테스트 볼륨 정리” 의 내용을 참조하십시오.

4.4.3. VDO에서 임의의 100% 읽기에서 I/O 깊이의 효과 테스트

이 테스트에서는 다양한 I/O 깊이 값에서 VDO 볼륨에서 임의의 100% 읽기 작업을 수행하는 방식을 결정합니다.

절차

  1. 새 VDO 테스트 볼륨을 만듭니다.

    자세한 내용은 4.2절. “성능 테스트를 위한 VDO 볼륨 생성” 의 내용을 참조하십시오.

  2. 쓰기 fio 작업을 수행하여 테스트에서 액세스할 수 있는 모든 영역을 미리 채웁니다.

    # fio --rw=write \
          --bs=8M \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --thread \
          --direct=1 \
          --scramble_buffers=1
  3. 임의 100% 읽기에 대해 보고된 처리량 및 대기 시간을 기록합니다.

    # for depth in 1 2 4 8 16 32 64 128 256 512 1024 2048; do
      fio --rw=randread \
          --bs=4096 \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --numjobs=1 \
          --thread \
          --norandommap \
          --runtime=300 \
          --direct=1 \
          --iodepth=$depth \
          --scramble_buffers=1 \
          --offset=0 \
          --size=100g
      done
  4. VDO 테스트 볼륨을 제거합니다.

    자세한 내용은 4.3절. “VDO 성능 테스트 볼륨 정리” 의 내용을 참조하십시오.

4.4.4. VDO에서 임의의 100% 쓰기에서 I/O 깊이의 영향 테스트

이 테스트에서는 다양한 I/O 깊이 값의 VDO 볼륨에서 임의 100% 쓰기 작업이 수행하는 방식을 결정합니다.

중요

각 I/O 심층 테스트 실행 간에 VDO 볼륨을 다시 생성해야 합니다.

절차

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048의 I/O 깊이 값에 대해 다음 일련의 단계를 별도로 수행합니다.

  1. 새 VDO 테스트 볼륨을 만듭니다.

    자세한 내용은 4.2절. “성능 테스트를 위한 VDO 볼륨 생성” 의 내용을 참조하십시오.

  2. 쓰기 fio 작업을 수행하여 테스트에서 액세스할 수 있는 모든 영역을 미리 채웁니다.

    # fio --rw=write \
          --bs=8M \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --thread \
          --direct=1 \
          --scramble_buffers=1
  3. 임의 100% 쓰기에 대해 보고된 처리량 및 대기 시간을 기록합니다.

    # fio --rw=randwrite \
          --bs=4096 \
          --name=vdo \
          --filename=/dev/mapper/vdo-test \
          --ioengine=libaio \
          --numjobs=1 \
          --thread \
          --norandommap \
          --runtime=300 \
          --direct=1 \
          --iodepth=depth-value
          --scramble_buffers=1 \
          --offset=0 \
          --size=100g
      done
  4. VDO 테스트 볼륨을 제거합니다.

    자세한 내용은 4.3절. “VDO 성능 테스트 볼륨 정리” 의 내용을 참조하십시오.

4.4.5. 다른 I/O 깊이에서의 VDO 성능 분석

다음 예제에서는 다양한 I/O 깊이 값에 기록된 VDO 처리량 및 대기 시간을 분석합니다.

I/O 깊이가 증가하여 처리량이 감소하는 변동 지점과 범위 전반에 걸친 동작을 확인합니다. 순차적 액세스와 임의 액세스는 서로 다른 값에서 최고치일 수 있지만 모든 유형의 스토리지 구성에서는 피크 시간이 다를 수 있습니다.

예 4.1. I/O 깊이 분석

그림 4.1. VDO 처리량 분석

VDO 처리량 분석

각 성능 곡선에서 "knee"를 확인합니다.

  • 마커 1은 지점 X 에서 최대 순차적 처리량을 식별합니다. 이 특정 구성은 X 보다 큰 순차 4 KiB I/O 깊이에서 혜택을 받지 않습니다.
  • 마커 2는 지점 Z 에서 최대 임의 4KiB 처리량을 식별합니다. 이 특정 구성은 Z 보다 큰 임의의 4 KiB I/O 깊이를 사용할 수 없습니다.

XZ 의 I/O 깊이를 넘어 대역폭 증가는 줄어들고 평균 요청 대기 시간이 추가 I/O 요청에 대해 1:1 증가합니다.

다음 이미지는 이전 그래프에서 곡선의 "knee" 뒤의 임의 쓰기 대기 시간의 예를 보여줍니다. 이러한 시점에서 응답 시간이 가장 적은 최대 처리량을 테스트해야 합니다.

그림 4.2. VDO 대기 시간 분석

VDO 대기 시간 분석

최적의 I/O 깊이

Z 는 최적의 I/O 깊이를 표시합니다. 테스트 계획은 Z 와 동일한 I/O 깊이를 사용하여 추가 데이터를 수집합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.