31.3. 데이터 효율성 테스트 작업
VDO의 성공적인 검증은 잘 구조화된 테스트 절차에 따라 다릅니다. 이 섹션에서는 평가에 참여할 때 고려할 테스트의 예로 예상 결과와 함께 수행할 일련의 단계를 제공합니다.
테스트 환경
다음 섹션의 테스트 사례를 통해 테스트 환경에 대해 다음과 같은 가정을 수행합니다.
- 하나 이상의 Linux 물리적 블록 장치를 사용할 수 있습니다.
- 대상 블록 장치(예:
/dev/sdb
)는 512GB보다 큽니다. - 유연한 I/O Tester(
fio
) 버전 2.1.1 이상이 설치되어 있습니다. - VDO가 설치되어 있어야 합니다.
테스트 환경이 완전히 이해되도록 각 테스트 시작 시 다음 정보를 기록해야 합니다.
- 커널 빌드 번호를 포함하여 사용된 Linux 빌드입니다.
- rpm -qa 명령에서 얻은 전체 설치된 패키지 목록입니다.
- 전체 시스템 사양:
- CPU 유형 및 양(
/proc/cpuinfo
에서 사용 가능). - 기본 OS가 실행된 후 사용 가능한 메모리 및 양(
/proc/meminfo
에서 사용 가능) - 사용된 드라이브 컨트롤러의 유형입니다.
- 사용된 디스크 유형 및 수량이 있습니다.
- 실행 중인 프로세스( ps aux 또는 유사한 목록)의 전체 목록입니다.
- VDO와 함께 사용하기 위해 생성된 물리 볼륨 이름 및 볼륨 그룹 이름(pvs 및 vgs 목록).
- VDO 볼륨을 포맷할 때 사용되는 파일 시스템(있는 경우).
- 마운트된 디렉토리에 대한 권한입니다.
/etc/vdoconf.yaml
콘텐츠.- VDO 파일의 위치입니다.
sosreport 를 실행하여 필요한 많은 정보를 캡처할 수 있습니다.
워크로드
VDO를 효과적으로 테스트하려면 실제 워크로드를 시뮬레이션하는 데이터 세트를 사용해야 합니다. 데이터 세트는 서로 다른 조건에서 성능을 시연하기 위해 중복되거나 압축 및/또는 압축될 수 있는 데이터 간의 균형을 제공해야 합니다.
반복 가능한 특성을 사용하여 데이터를 합성할 수 있는 여러 도구가 있습니다. 특히 두 개의 유틸리티인 VDbench 및
fio
를 테스트 중에 사용하는 것이 좋습니다.
이 가이드는
페오를 사용합니다
. 인수를 이해하면 성공적인 평가에 중요합니다.
인수 | 설명 | 값 |
---|---|---|
--size | 데이터 fio의 수량은 작업당 대상으로 보냅니다(아래 numjobs 참조). | 100GB |
--bs | fio에서 생성된 각 읽기/쓰기 요청의 블록 크기입니다. Red Hat은 VDO의 4KB 기본값과 일치하도록 4KB 블록 크기를 권장합니다. | 4k |
--numjobs |
벤치마크를 실행하기 위해 fio가 생성할 작업 수입니다.
각 작업은
--size 매개변수에서 지정한 데이터 양을 전송합니다.
첫 번째 작업은
--offset 매개변수로 지정된 오프셋의 장치로 데이터를 전송합니다. 후속 작업은 --offset_increment 매개변수를 제공하지 않는 한 동일한 디스크 영역(덮어쓰기)을 작성합니다. 이 매개변수는 이전 작업이 해당 값으로 시작된 각 작업을 오프셋합니다. 적어도 두 개 이상의 작업에서는 플래쉬에서 최대 성능을 달성하는 것이 좋습니다. 한 작업은 일반적으로 회전 디스크(HDD) 처리량을 최소화하기에 충분합니다.
|
1 (HDD)
2 (SSD)
|
--thread | 포크가 아닌 스레드에서 fio 작업을 실행하도록 지시하여 컨텍스트 전환을 제한하여 더 나은 성능을 제공할 수 있습니다. | <N/A> |
--ioengine |
Linux에는 fio를 사용하여 테스트할 수 있는 여러 I/O 엔진을 사용할 수 있습니다. Red Hat 테스트는 버퍼 없는 비동기 엔진(
libaio )을 사용합니다. 다른 엔진에 관심이 있으시면 Red Hat 영업 엔지니어와 상의하십시오.
Linux
libaio 엔진은 하나 이상의 프로세스가 동시에 임의의 요청을 수행하는 워크로드를 평가하는 데 사용됩니다. libaio 여러 요청이 동기 엔진을 통해 여러 스레드에서 제공한 경우 필요한 컨텍스트 스위치 수를 제한하기 전에 단일 스레드에서 비동기적으로 여러 요청을 수행할 수 있습니다.Allows multiple requests to be made asynchronously from a single thread before any data has been retrieved, which limits the number of context switches that would be required if the requests were provided by manythreads via a synchronous engine.
| libaio |
--direct |
설정된 경우 직접 Linux 커널의 페이지 캐시를 바이패스하는 장치에 요청을 전송할 수 있습니다.
libaio Engine:
libaio 는 direct 활성화(=1)와 함께 사용해야 하며 커널이 모든 I/O 요청에 대해 sync API를 사용할 수 있습니다.
| 1 (libaio) |
--iodepth |
언제든지 비행 중 I/O 버퍼 수입니다.
iodepth 가 높으면 특히 임의의 읽기 또는 쓰기의 경우 성능이 향상됩니다. 깊이가 높아 컨트롤러에 항상 배치 요청이 있는지 확인합니다. 그러나 iodepth 너무 높은 (일반적으로 1K 이하)을 설정하면 바람직하지 않은 대기 시간이 발생할 수 있습니다. Red Hat은 iodepth 에서 128~512 사이를 권장하지만 최종 값은 절충 시점이며 애플리케이션이 대기 시간을 허용하는 방법에 따라 다릅니다.
| 128 (최소) |
--iodepth_batch_submit | iodepth 버퍼 풀이 비어 있을 때 생성할 I/O 수입니다. 이 매개변수는 테스트 중 I/O에서 버퍼 생성으로 작업을 제한합니다. | 16 |
--iodepth_batch_complete | 배치를 제출하기 전에 완료해야 하는 I/O 수(iodepth_batch_complete ). 이 매개변수는 테스트 중 I/O에서 버퍼 생성으로 작업을 제한합니다. | 16 |
--gtod_reduce | 대기 시간을 계산하는 일별 호출을 비활성화합니다. 이 설정은 활성화된 경우 처리량이 감소하므로 대기 시간 측정이 필요하지 않는 한 (=1) 활성화되어야 합니다. | 1 |
31.3.1. VDO 테스트 볼륨 구성
31.3.1.1. 1. 512GB 물리 볼륨에 논리 크기가 1TB인 VDO 볼륨 만들기
- VDO 볼륨을 생성합니다.
- 동기 스토리지 상단에서 VDO
async
모드를 테스트하려면--writePolicy=async
옵션을 사용하여 비동기 볼륨을 생성합니다.# vdo create --name=vdo0 --device=/dev/sdb \ --vdoLogicalSize=1T --writePolicy=async --verbose
- 동기 스토리지 상단에서 VDO
동기화
모드를 테스트하려면--writePolicy=sync
옵션을 사용하여 동기 볼륨을 생성합니다.# vdo create --name=vdo0 --device=/dev/sdb \ --vdoLogicalSize=1T --writePolicy=sync --verbose
- XFS 또는 ext4 파일 시스템으로 새 장치를 포맷합니다.
- XFS의 경우:
# mkfs.xfs -K /dev/mapper/vdo0
- ext4의 경우:
# mkfs.ext4 -E nodiscard /dev/mapper/vdo0
- 포맷된 장치를 마운트합니다.
# mkdir /mnt/VDOVolume # mount /dev/mapper/vdo0 /mnt/VDOVolume && \ chmod a+rwx /mnt/VDOVolume