인스턴스 성능 테스트

이 페이지에서는 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개를 사용합니다.

  1. 모든 클라이언트 VM에서 fio 서버를 시작합니다. Fio는 8765 포트를 사용하여 통신하므로 방화벽 정책에서 이 포트를 열어야 합니다.

    fio --server
    
  2. 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
    
  3. fio 클라이언트 VM의 IP 주소 또는 DNS 이름이 포함된 hosts.list 파일을 만듭니다.

    cat << EOL > /tmp/hosts.list
    <Client 1 IP/DNS>
    <Client 2 IP/DNS>
    ...
    <Client N IP/DNS>
    EOL
    
  4. 작업 파일을 만든 클라이언트 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
    
  5. 작업 파일을 만든 클라이언트 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
    
  6. 테스트가 완료되면 모든 클라이언트 VM에서 fio 서버를 중지하고 임시 디렉터리를 삭제합니다.

    rm -rf ${TMP_DIR}