성능

이 페이지에서는 예상 평균 성능과 Filestore에 권장되는 성능 설정을 설명합니다. 또한 Filestore 인스턴스의 성능을 테스트하는 방법도 보여줍니다.

예상 성능

각 Filestore 서비스 등급은 성능 수준에 차이가 있습니다. 기본 등급은 10TB 인스턴스 용량 이상으로 일관된 성능을 제공합니다. 대규모 등급 인스턴스의 경우 용량이 확장되거나 축소됨에 따라 성능이 선형적으로 증가하거나 감소합니다.

인스턴스의 성능은 클라이언트 또는 서버의 캐싱 사용, 클라이언트 VM 인스턴스에 사용되는 Compute Engine 머신 유형, 테스트 중인 워크로드와 같은 다양한 요인으로 인해 보고된 수치와 다를 수 있습니다.

다음 표에서는 서비스 등급 및 구성된 용량에 따른 Filestore 인스턴스의 예상 성능을 보여줍니다.

성능 용량(TB) 읽기/쓰기 IOPS 읽기/쓰기 처리량(MB/s)
BASIC_HDD 1-10 600/1,000 100/100
BASIC_HDD 10-63.9 1,000/5,000 180/120
BASIC_SSD 2.5-63.9 60,000/25,000 1,200/350
HIGH_SCALE_SSD 60 90,000/30,000 3,000/660
HIGH_SCALE_SSD 320 480,000/160,000 16,000/3,520

대규모 SSD 등급 성능 확장 및 클라이언트별 성능

대규모 등급 인스턴스의 성능은 10TB 단위로 할당된 용량에 따라 선형적으로 확장됩니다. 다음 표는 각 10TB의 용량에서 얻은 성능의 수준을 보여줍니다.

사양 최대 지속 IOPS1 최대 지속 처리량2(MB/초)
10TB당 읽기 15,000 500
10TB당 쓰기 5,000 110

이러한 성능 수치는 각 인스턴스의 클라이언트당 성능 한도에 해당합니다. 예를 들어 60의 상위 확장 등급 인스턴스를 사용해도 용량의 TB은 3,000/660MB/s의 최대 총 지속 읽기/쓰기 처리량을 보유하며 클라이언트당 달성할 수 있는 최대 처리량은 500/110MB/s입니다. 기본 등급 인스턴스에는 클라이언트별 성능 한도가 없습니다.

권장 클라이언트 머신 유형

클라이언트 VM 인스턴스에 n1-standard-8 또는 그 이상의 Compute Engine 머신 유형을 사용하는 것이 좋습니다. 이렇게 하면 클라이언트는 캐시에 적합한 워크로드에서 약 16Gbps의 읽기 대역폭을 달성할 수 있습니다.

Linux 클라이언트 마운트 옵션

Linux 클라이언트 VM 인스턴스에서 최고 성능을 달성하려면 기본 NFS 마운트 옵션, 특히 hard 마운트인 async를 사용하고 rsizewsize 옵션을 1MB로 설정하는 것이 좋습니다. NFS 마운트 옵션에 대한 자세한 내용은 nfs를 참조하세요.

클릭하여 펼치기 - 기본 NFS mount 옵션

기본 옵션 설명
hard NFS 클라이언트는 NFS 요청을 무제한으로 시도합니다.
timeo=600 NFS 클라이언트는 600데시초(60초) 간격으로 NFS 요청을 다시 시도합니다.
retrans=3 NFS 클라이언트는 NFS 요청을 3회 시도한 후 추가 복구 작업을 수행합니다.
rsize=1048576 NFS 클라이언트는 READ 요청당 NFS 서버에서 최대 1048576바이트(1MiB)를 수신할 수 있습니다.
wsize=1048576 NFS 클라이언트는 WRITE 요청당 NFS 서버에서 최대 1048576바이트(1MiB)를 수신할 수 있습니다.
resvport NFS 클라이언트는 이 마운트 지점에 대해 NFS 서버와 통신할 때 권한이 있는 소스 포트를 사용합니다.
async NFS 클라이언트는 특정 조건이 충족될 때까지 NFS 서버에 대한 애플리케이션 쓰기 전송을 지연합니다.
주의: sync 옵션을 사용하면 성능이 크게 저하됩니다.

성능 테스트

Linux를 사용하는 경우 fio 도구를 사용하여 기본 등급 인스턴스의 읽기 및 쓰기 처리량과 IOPS를 벤치마킹할 수 있습니다. 이 섹션의 예시는 일반적으로 실행되는 벤치마크를 보여줍니다. 성능을 극대화하려면 여러 클라이언트 VM 인스턴스에서 fio를 실행해야 할 수 있습니다. 벤치마킹 성능을 위한 이 메서드는 높은 상위 확장 등급 인스턴스의 결과를 정확하게 제공하지 못합니다.

다음 예시는 최대 쓰기 처리량을 벤치마킹합니다.

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqwrite --rw=write \
--bs=1m --size=20G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/gcfs --loops=10

다음 예는 최대 쓰기 IOPS를 벤치마킹합니다.

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randwrite --rw=randwrite \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=80 \
--sync=1 --directory=/mnt/standard --loops=10

다음 예는 최대 읽기 처리량을 벤치마킹합니다.

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqread --rw=read \
--bs=1m --size=240G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/ssd --invalidate=1 --loops=10

다음 예시는 최대 읽기 IOPS를 벤치마킹합니다.

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randread --rw=randread \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=20 \
--sync=1 --invalidate=1 --directory=/mnt/standard  --loops=10

  1. 숫자는 4K 읽기/쓰기 IO를 기준으로 측정됩니다. 

  2. 숫자는 1백만 읽기/쓰기 IO를 기준으로 측정됩니다.