이 페이지에서는 Filestore 인스턴스의 성능 테스트를 설명합니다.
개요
Linux를 사용하는 경우 Flexible IO Tester (fio) 도구를 사용하여 기본, 리전, 영역, 엔터프라이즈 등급 인스턴스의 읽기 처리량, 쓰기 처리량, 읽기 IOPS, 쓰기 IOPS를 벤치마킹할 수 있습니다.
단일 클라이언트 VM을 사용하여 기본 인스턴스의 성능을 테스트할 수 있습니다. 확장 서비스 등급은 여러 클라이언트 VM에 맞게 성능이 최적화되어 있고 단일 클라이언트는 일반적으로 최대 클러스터 IOPS 또는 처리량을 달성할 수 없으므로 단일 클라이언트 VM을 사용하여 지역, 영역 또는 엔터프라이즈 인스턴스를 테스트하는 것은 권장하지 않습니다.
자세한 내용은 단일 및 다중 클라이언트 VM 성능을 참고하세요.
시작하기 전에
모든 클라이언트 VM에서 테스트할 Filestore 파일 공유를 마운트합니다. 서비스 등급에 따라 하나 또는 여러 개의 클라이언트 VM이 될 수 있습니다. 자세한 안내와 마운트 옵션은 Compute Engine 클라이언트에 파일 공유 마운트를 참고하세요.
NFS 성능을 높이려면 nconnect
마운트 옵션을 지정해야 합니다. 특정 서비스 등급의 경우 클라이언트와 서버 간의 연결 수를 다음과 같이 지정하는 것이 좋습니다.
등급 | 용량 | 연결 수 |
---|---|---|
지역, 영역 | 1~9.75TiB | nconnect=2 |
지역, 영역 | 10~100TiB | nconnect=7 |
Enterprise | - | nconnect=2 |
대규모 SSD | - | nconnect=7 |
단일 클라이언트 VM으로 성능 테스트
다음 시나리오를 사용하여 기본 인스턴스에서 테스트를 실행하세요. 명령줄에서 직접 명령어를 실행할 수 있습니다.
1TiB 미만의 기본 인스턴스의 최대 쓰기 처리량:
fio --ioengine=libaio --filesize=4G --ramp_time=2s --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 --group_reporting --directory=/mnt/nfs --name=write --blocksize=1m --iodepth=64 --readwrite=write
최대 읽기 처리량:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
최대 쓰기 처리량:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=write --blocksize=1m --iodepth=64 --readwrite=write
최대 읽기 IOPS:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
최대 쓰기 IOPS:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
여러 클라이언트 VM으로 성능 테스트
영역, 리전, 엔터프라이즈 인스턴스의 최대 성능을 달성하려면 여러 클라이언트 VM을 사용하세요.
1~9.75TiB의 인스턴스에는 TiB당 클라이언트 VM 8개를 사용하는 것이 좋습니다. 10~100TiB 인스턴스의 경우 10TiB당 클라이언트 VM 8개를 사용합니다.
모든 클라이언트 VM에서 fio 서버를 시작합니다. Fio는
8765
포트를 사용하여 통신하므로 방화벽 정책에서 이 포트를 열어야 합니다.fio --server
fio 실행을 조정할 클라이언트 VM을 하나 선택합니다. 해당 클라이언트 VM에 fio 작업 파일을 만듭니다.
cat << EOL > /tmp/fio_job.conf [global] ioengine=libaio ramp_time=2s runtime=3m time_based direct=1 verify=0 randrepeat=0 group_reporting buffer_compress_percentage=50 directory=\${TMP_DIR} create_only=\${CREATE_ONLY} [read-throughput] blocksize=1048576 numjobs=8 readwrite=read filesize=100M [write-throughput] blocksize=1048576 numjobs=8 readwrite=write filesize=100M [read-iops] blocksize=4k iodepth=64 readwrite=randread filesize=1GB [write-iops] blocksize=4k iodepth=64 readwrite=randwrite filesize=1GB EOL
fio 클라이언트 VM의 IP 주소 또는 DNS 이름이 포함된
hosts.list
파일을 만듭니다.cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOL
작업 파일을 만든 클라이언트 VM의 임시 디렉터리에 다음 데이터 세트를 만듭니다.
export TMP_DIR=$(mktemp -d MOUNT_POINT_DIRECTORY/XXXXX) chmod 777 ${TMP_DIR} export CREATE_ONLY=1 fio --client=/tmp/hosts.list \ --section=read-throughput --section=read-iops /tmp/fio_job.conf
작업 파일을 만든 클라이언트 VM을 사용하여 벤치마크를 실행합니다.
- 최대 읽기 처리량
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- 최대 쓰기 처리량
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- 최대 읽기 IOPS
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- 최대 쓰기 IOPS
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
테스트가 완료되면 모든 클라이언트 VM에서 fio 서버를 중지하고 임시 디렉터리를 삭제합니다.
rm -rf ${TMP_DIR}