이 페이지에서는 예상 평균 성능과 Filestore에 권장되는 성능 설정을 설명합니다. 또한 Filestore 인스턴스의 성능을 테스트하는 방법도 보여줍니다.
예상 성능
각 Filestore 서비스 등급은 성능 수준에 차이가 있습니다. 인스턴스의 성능은 캐싱 사용, 클라이언트 VM의 수, 클라이언트 VM의 머신 유형 및 테스트 중인 워크로드와 같은 다양한 요인으로 인해 내보낸 수치와 다를 수 있습니다.
다음 표에서는 서비스 등급 및 구성된 용량에 따른 Filestore 인스턴스의 예상 성능을 보여줍니다.
성능 | 용량(TiB ) |
읽기/쓰기 IOPS | 읽기/쓰기 처리량(MiB/초) |
---|---|---|---|
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 |
ZONAL (영역, 저용량 대역) |
1 | 9,200/2,600 | 260/88 |
ZONAL (영역, 저용량 대역) |
9.75 | 89,700/25,350 | 2,535/858 |
HIGH_SCALE_SSD (현재 영역, 고용량 대역) |
10 | 92,000/26,000 | 2,600/880 |
HIGH_SCALE_SSD (현재 영역, 고용량 대역) |
100 | 920,000/260,000 | 26,000/8,800 |
ENTERPRISE |
1 | 12,000/4,000 | 120/100 |
ENTERPRISE |
10 | 120,000/40,000 | 1,200/1,000 |
위 표에서는 고용량 대역 영역 등급(이전의 대규모 SSD) 및 엔터프라이즈 등급의 최대 및 최소 용량에서 예상되는 성능을 보여줍니다. 이러한 한도 내에서 성능은 용량 증감에 따라 선형적으로 확대/축소됩니다. 예를 들어 엔터프라이즈 인스턴스 용량을 1TiB에서 2TiB로 두 배로 늘릴 경우 인스턴스의 예상되는 성능은 12,000/4,000 읽기/쓰기 IOPS에서 24,000/8,000 읽기/쓰기 IOPS로 두 배로 늘어납니다.
단일 및 소수의 클라이언트 시나리오에서는 최대 NFS 성능을 달성하기 위해 nconnect
마운트 옵션을 사용하여 TCP 연결 수를 늘려야 합니다. 영역 서비스 등급의 경우 연결을 최대 7
개까지, 엔터프라이즈 등급의 경우 연결을 최대 2
개까지 지정하는 것이 좋습니다. 일반적으로 파일 공유 용량이 크고 연결하는 클라이언트 VM의 수가 적을수록 nconnect
와의 추가 연결을 지정하여 더 많은 성능을 얻을 수 있습니다.
권장 클라이언트 머신 유형
16Gbps
이그레스 대역폭을 제공하는 n2-standard-8
과 같은 Compute Engine 머신 유형을 사용하는 것이 좋습니다. 이 이그레스 대역폭을 사용하면 클라이언트는 캐시에 적합한 워크로드에서 약 16Gbps
의 읽기 대역폭을 달성할 수 있습니다. 추가 컨텍스트는 네트워크 대역폭을 참조하세요.
Linux 클라이언트 마운트 옵션
Linux 클라이언트 VM 인스턴스에서 최상의 성능을 얻으려면 다음 NFS 마운트 옵션, 특히 hard
마운트, async
, rsize
및 wsize
옵션을 사용하는 것이 좋습니다. NFS 마운트 옵션에 대한 자세한 내용은 nfs를 참조하세요.
기본 옵션 | 설명 |
---|---|
hard |
NFS 클라이언트는 NFS 요청을 무제한으로 시도합니다. |
timeo=600 |
NFS 클라이언트는 600데시초(60초) 간격으로 NFS 요청을 다시 시도합니다. |
retrans=3 |
NFS 클라이언트는 NFS 요청을 3회 시도한 후 추가 복구 작업을 수행합니다. |
rsize=262144 |
NFS 클라이언트는 NFS 서버로부터 READ 요청당 최대 262,144바이트를 수신할 수 있습니다. 참고: 기본 등급 인스턴스의 경우 rsize 값을 1048576 으로 설정합니다. |
wsize=1048576 |
NFS 클라이언트는 WRITE 요청당 NFS 서버에 최대 1,048,576바이트(1MiB)를 보낼 수 있습니다. |
resvport |
NFS 클라이언트는 이 마운트 지점에 대해 NFS 서버와 통신할 때 권한이 있는 소스 포트를 사용합니다. |
async |
NFS 클라이언트는 특정 조건이 충족될 때까지 NFS 서버에 대한 애플리케이션 쓰기 전송을 지연합니다. 주의: sync 옵션을 사용하면 성능이 크게 저하됩니다. |
단일 및 다중 클라이언트 VM 성능
Filestore의 확장 가능한 서비스 등급은 단일 클라이언트 VM이 아닌 여러 클라이언트 VM에 맞춰 성능이 최적화되어 있습니다.
엔터프라이즈 및 영역 등급 인스턴스의 경우 전체 성능을 활용하려면 최소 4개의 클라이언트 VM이 필요합니다. 그래야 기본 Filestore 클러스터의 모든 VM이 완전히 활용됩니다.
추가 컨텍스트를 제공하자면 확장 가능한 가장 작은 Filestore 클러스터에는 4개의 VM이 있습니다. 각 클라이언트 VM은 nconnect
마운트 옵션을 사용하여 지정된 클라이언트당 NFS 연결 수에 관계없이 하나의 Filestore 클러스터 VM과만 통신합니다. 단일 클라이언트 VM을 사용하는 경우, 읽기 및 쓰기 작업은 단일 Filestore 클러스터 VM에서만 수행됩니다.
Google Cloud 리소스 간 성능 개선
gsutil
을 사용하여 Cloud Storage에서 Filestore 인스턴스로 데이터를 복사하는 등 여러 Google Cloud 리소스의 작업은 느려질 수 있습니다. 성능 문제를 완화하려면 다음을 시도해 보세요.
Cloud Storage 버킷, 클라이언트 VM, Filestore 인스턴스가 모두 동일한 리전에 있는지 확인합니다.
이중 리전은 Cloud Storage에 저장된 데이터에 대해 성능이 가장 우수한 옵션을 제공합니다. 이 옵션을 사용하는 경우 다른 리소스가 이중 리전을 구성하는 단일 리전 중 하나에 있어야 합니다. 예를 들어 Cloud Storage 데이터가
us-central1,us-west1
에 있는 경우 클라이언트 VM과 Filestore 인스턴스가us-central1
에 있는지 확인합니다.참고용으로 PD 연결 VM의 성능을 확인하고 Filestore 인스턴스의 성능과 비교합니다.
Filestore 인스턴스와 비교할 때 PD 연결 VM의 성능이 비슷하거나 느리면 Filestore와 관련 없는 성능 병목 현상이 나타날 수 있습니다. Filestore가 아닌 리소스의 기준 성능을 개선하려면 다음을 시도해 보세요.
Filestore 인스턴스의 성능이 PD 연결 VM보다 상당히 느리면 작업을 여러 VM에 분산해 보세요.
이는 Cloud Storage에서 읽기 작업의 성능을 향상시키는 데 도움이 됩니다.
엔터프라이즈 및 영역 등급 인스턴스의 경우 전체 성능을 활용하려면 최소 4개의 클라이언트 VM이 필요합니다. 그래야 기본 Filestore 클러스터의 모든 VM이 완전히 활용됩니다. 자세한 내용은 단일 및 다중 클라이언트 VM 성능을 참조하세요.
성능 테스트
Linux를 사용하는 경우 fio 도구를 사용하여 기본 등급 인스턴스의 읽기 및 쓰기 처리량과 IOPS를 벤치마킹할 수 있습니다. 엔터프라이즈 및 영역 등급 인스턴스에는 이 성능 벤치마킹 방법을 사용하지 않는 것이 좋습니다.
이 섹션의 예시는 일반적으로 실행되는 벤치마크를 보여줍니다. 성능을 극대화하려면 여러 클라이언트 VM 인스턴스에서 fio를 실행해야 할 수 있습니다.
다음 예는 최대 쓰기 처리량을 벤치마킹합니다.
fio --ioengine=libaio --filesize=32G --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
다음 예는 최대 쓰기 IOPS를 벤치마킹합니다.
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
다음 예는 최대 읽기 처리량을 벤치마킹합니다.
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
다음 예는 최대 읽기 IOPS를 벤치마킹합니다.
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
다음 단계
- Filestore의 성능 관련 문제 해결