이 페이지에서는 Cloud Storage FUSE 성능을 개선하는 방법을 안내합니다.
읽기 및 쓰기 성능 개선
읽기 및 쓰기 성능을 개선하려면 다음을 따르는 것이 좋습니다.
캐싱 사용 설정: Cloud Storage FUSE는 성능을 개선하기 위해 특정 유형의 데이터와 메타데이터를 로컬에 저장하는 네 가지 클라이언트 측 캐시 유형 옵션을 제공합니다.
파일 캐싱: 자주 액세스하는 파일의 사본을 저장합니다.
통계 캐싱: 파일 메타데이터를 저장합니다.
유형 캐싱: 파일 유형 정보를 저장합니다.
목록 캐싱: 디렉터리 목록을 저장합니다.
Cloud Storage FUSE 캐싱은 사용자가 선택한 스토리지에서 지원하는 모든 사용자 지정 디렉터리에서 작동합니다. Cloud Storage FUSE 캐시 성능은 최소한의 오버헤드로 캐시에서 사용하는 기본 스토리지와 일치합니다.
동시 다운로드 사용 설정으로 읽기 속도 향상: 동시 다운로드를 사용 설정하여 크기가 1GB를 초과하는 대용량 파일 읽기 속도를 높입니다. 자세한 내용은 동시 다운로드를 사용하여 읽기 성능 개선을 참조하세요.
가능한 경우 순차 읽기 워크로드 실행: Cloud Storage FUSE는 임의의 읽기 워크로드에 비해 순차적 읽기 워크로드에서 더 나은 성능을 제공합니다. Cloud Storage FUSE는 휴리스틱을 사용해서 파일의 순차적 읽기를 인식해서 Cloud Storage FUSE가 동일한 TCP 연결을 사용해서 Cloud Storage에 대해 더 적은 수의 더 큰 읽기 요청을 발행할 수 있게 합니다.
읽기 유형에 따라 파일 크기 조정: 순차 읽기 성능을 최적화하려면 크기가 5MB~200MB인 파일을 업로드하고 읽는 것이 좋습니다. 임의 읽기 성능을 최적화하려면 2MB 정도 크기로 파일을 업로드하고 읽는 것이 좋습니다.
계층적 네임스페이스가 사용 설정된 버킷 마운트: 읽기 및 쓰기 성능 속도를 높이고 초기 초당 쿼리 수(QPS) 작업의 원자성을 보장하려면 계층적 네임스페이스가 사용 설정된 버킷을 마운트하는 것이 좋습니다. 계층적 네임스페이스가 사용 설정된 버킷이 Cloud Storage FUSE 성능을 개선하는 방법에 관한 자세한 내용은 계층적 네임스페이스가 사용 설정된 버킷 마운트를 참조하세요.
최초 읽기 성능 개선
워크로드를 실행하기 전에 먼저 마운트된 버킷의 파일을 재귀적으로 나열하여 더 빠른 일괄 처리 메서드로 통계 및 유형 캐시를 미리 채우고 최초 실행 시 성능을 개선하는 것이 좋습니다.
ls -R MOUNT_POINT > /dev/null
파일 캐싱을 사용하여 처리량 개선
Cloud Storage FUSE는 로컬 파일 시스템보다 지연 시간이 높습니다. 한 번에 하나씩 작은 파일을 읽거나 쓰면 처리량이 감소되어 개별 API 호출이 여러 번 수행됩니다. 여러 큰 파일을 한 번에 읽거나 쓰면 처리량이 늘어날 수 있습니다. Cloud Storage FUSE 파일 캐시 기능을 사용하여 소규모 및 임의 I/O의 성능을 개선합니다. 파일 캐싱 및 이 기능을 사용 설정하는 방법에 관한 자세한 내용은 Cloud Storage FUSE 파일 캐싱 사용을 참조하세요.
계층적 네임스페이스가 사용 설정된 버킷 마운트
체크포인트 및 디렉터리 이름 바꾸기 또는 변경과 같은 더 많은 초기 초당 쿼리 수 (QPS) 작업의 원자성을 보장하려면 계층적 네임스페이스가 사용 설정된 버킷을 마운트하는 것이 좋습니다. 계층적 네임스페이스는 데이터를 계층적 파일 시스템 구조로 구성하여 버킷 내 작업을 더 효율적으로 만듭니다. 목록 객체 호출(BucketHandle.Objects
)이 폴더 가져오기 호출로 대체되어 응답 시간이 더 빨라지고 모든 작업에 대한 전체 목록 호출 수가 줄어듭니다.
대규모 읽기 처리량을 개선하기 위해 선행 읽기 크기 늘리기
로컬 머신에서 read_ahead_kb
Linux 커널 매개변수를 사용하여 각 읽기 요청과 함께 미리 가져오는 데이터의 양을 늘리면 대규모 읽기 처리량을 개선할 수 있습니다. 대부분의 Linux 배포에서 설정된 기본값인 128KB 대신 read_ahead_kb
커널 매개변수를 1MB로 늘리는 것이 좋습니다. 커널 매개변수를 성공적으로 늘리려면 sudo
또는 root
권한이 필요합니다.
특정 Cloud Storage FUSE 마운트 디렉터리의 read_ahead_kb
커널 매개변수를 1MB로 늘리려면 다음 명령어를 사용하세요. 여기서 /path/to/mount/point
는 Cloud Storage FUSE 마운트 포인트입니다. 명령어를 실행하기 전에 버킷을 Cloud Storage FUSE에 마운트해야 합니다. 그러지 않으면 커널 매개변수가 증가하지 않습니다.
export MOUNT_POINT=/path/to/mount/point
echo 1024 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb
최대 처리량 달성
최대 처리량을 달성하려면 처리량을 구동하고 네트워크 인터페이스 카드(NIC)를 포화시킬 수 있는 충분한 CPU 리소스가 있는 머신을 사용하세요. CPU 리소스가 부족하면 Cloud Storage FUSE가 제한될 수 있습니다.
Google Kubernetes Engine을 사용하는 경우 워크로드에 더 높은 처리량이 필요한 경우 Cloud Storage FUSE 사이드카 컨테이너에 대한 CPU 할당을 늘립니다. 사이드카 컨테이너에서 사용하는 리소스를 늘리거나 리소스를 무제한으로 할당할 수 있습니다.
초당 쿼리 수를 기준으로 IOPS 요구사항 평가
Filestore는 Cloud Storage에서 초당 쿼리 수라고도 하는 높은 초당 입출력 작업 수(IOPS)가 필요한 워크로드에 Cloud Storage FUSE보다 더 나은 옵션입니다. Filestore는 짧은 지연 시간의 단일 파일 시스템에서 매우 높은 IOPS를 얻을 수 있는 더 효과적인 옵션입니다.
또는 Cloud Storage FUSE 파일 캐시 기능을 사용하여 기본 캐시 미디어의 성능 특성을 활용할 수 있습니다(단, 높은 IOPS와 짧은 지연 시간을 제공하는 경우에만 해당).
부하 테스트 실행
Cloud Storage FUSE에서 부하 테스트를 수행하는 방법은 GitHub에서 성능 벤치마크 문서를 참조하세요.
다음 단계
- Cloud Storage FUSE 캐싱 알아보기
- GitHub의 Cloud Storage FUSE 시맨틱스 및 문제 해결 자세히 알아보기