Amazon EFS 성능 - Amazon Elastic File System

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EFS 성능

다음 섹션에서는 Amazon EFS 성능에 대한 개요와 파일 시스템 구성이 주요 성능 차원에 미치는 영향을 설명합니다. 또한 파일 시스템의 성능을 최적화하기 위한 몇 가지 중요한 팁과 권장 사항도 제공합니다.

성능 요약

파일 시스템 성능은 일반적으로 지연 시간, 처리량, 초당 입출력 작업 처리량(IOPS)의 차원을 사용하여 측정됩니다. 이러한 차원에서의 Amazon EFS 성능은 파일 시스템의 구성에 따라 달라집니다. 다음 구성은 Amazon EFS 파일 시스템 성능에 영향을 미칩니다.

  • 파일 시스템 유형 - Regional 또는 One Zone

  • 성능 모드 - 범용 또는 최대 I/O

    중요

    최대 I/O 성능 모드는 범용 성능 모드보다 작업당 지연 시간이 더 깁니다. 더 빠른 성능을 위해 항상 범용 성능 모드를 사용하는 것이 좋습니다. 자세한 정보는 성능 모드을 참조하세요.

  • 처리량 모드 - 탄력적, 프로비저닝 또는 버스팅

다음 표에는 범용 성능 모드를 사용하는 파일 시스템의 성능 사양과 파일 시스템 유형 및 처리량 모드의 가능한 다양한 조합이 요약되어 있습니다.

범용 성능 모드를 사용하는 파일 시스템의 성능 사양
스토리지 및 처리량 구성 지연 시간 최대 IOPS 최대 처리량

파일 시스템 유형

처리량 모드

읽기 작업

쓰기 작업

읽기 작업

쓰기 작업

파일 시스템별 읽기1

파일 시스템별 쓰기1

클라이언트별 읽기/쓰기

리전

탄력적

최저 250마이크로초(µs)

최저 2.7밀리초 (ms) 9만 — 25만 2 50,000

초당 3~20기가바이트 () GiBps

1—5 GiBps

초당 1,500메가바이트 (3) MiBps

리전

프로비저닝됨

최저 250µs

최저 2.7밀리초 55,000 25,000

3—10 GiBps

1—3.33 GiBps

500 MiBps

리전

Bursting

최저 250µs

최저 2.7밀리초 35,000 7,000

3—5 GiBps

1—3 GiBps

500 MiBps

One Zone

엘라스틱, 프로비저닝, 버스팅

최저 250µs

최저 1.6ms

35,000 7,000

3 GiBps 4

1 GiBps 4

500 MiBps
참고

각주:

  1. 최대 읽기 및 쓰기 처리량은 AWS 리전에 따라 달라집니다. 처리량이 AWS 리전의 최대 처리량을 초과하는 경우 처리량 할당량을 늘려야 합니다. Amazon EFS 서비스 팀은 모든 추가 처리량 요청을 고려합니다. case-by-case 승인은 워크로드 유형에 따라 달라질 수 있습니다. 할당량 증가 요청에 대해 자세히 알아보려면 아마존 EFS 할당량 섹션을 참조하세요.

  2. 탄력적 처리량을 사용하는 파일 시스템은 자주 액세스하지 않는 데이터에 대해 최대 90,000 읽기 IOPS를, 자주 액세스하는 데이터에 대해 최대 250,000 읽기 IOPS를 구동할 수 있습니다. 최대 IOPS를 달성하기 위한 추가 권장 사항이 적용됩니다. 자세한 정보는 높은 처리량과 IOPS를 요구하는 워크로드 최적화을 참조하세요.

  3. 탄력적 처리량을 사용하고 Amazon EFS 클라이언트 (버전) 또는 Amazon EFS CSI 드라이버 (aws-efs-csi-driver) amazon-efs-utils 버전 2.0 이상을 사용하여 마운트한 파일 시스템의 경우 최대 읽기 및 쓰기 처리량은 MiBps 1,500입니다. 다른 모든 파일 시스템의 경우 처리량 한도는 500입니다. MiBps Amazon EFS 클라이언트에 대한 자세한 내용은 을 참조하십시오. Amazon EFS 도구 설치

  4. 버스팅 처리량을 사용하는 One Zone 파일 시스템은 버스팅 처리량을 사용하는 지역 파일 시스템과 동일한 per-file-system 읽기 및 쓰기 처리량을 제공할 수 있습니다 (최대 읽기 5개 GiBps , 쓰기 최대 3개 GiBps ).

스토리지 클래스

Amazon EFS 스토리지 클래스는 사용 사례에 따라 가장 효과적인 스토리지를 제공하도록 설계되었습니다.

  • EFS Standard 스토리지 클래스에서 솔리드 스테이트 드라이브(SSD) 스토리지를 사용하여 자주 액세스하는 파일에 대해 최저 수준의 지연 시간을 제공합니다. 이 스토리지 클래스는 읽기의 경우 250마이크로초, 쓰기의 경우 2.7밀리초의 낮은 첫 번째 바이트 지연 시간을 제공합니다.

  • EFS Inrequent Access (IA) 및 EFS Archive 스토리지 클래스는 자주 액세스하는 데이터에 필요한 지연 시간 성능이 필요하지 않은 자주 액세스하는 데이터를 저장합니다. 이러한 스토리지 클래스는 수십 밀리초의 첫 번째 바이트 지연 시간을 제공합니다.

EFS 스토리지 클래스에 대한 자세한 내용은 EFS 스토리지 클래스 섹션을 참조하세요.

성능 모드

Amazon EFS는 범용 및 최대 I/O라는 두 가지 성능 모드를 제공합니다.

  • 범용 모드는 작업당 지연 시간이 가장 낮으며 파일 시스템의 기본 성능 모드입니다. One Zone 파일 시스템은 항상 범용 성능 모드를 사용합니다. 더 빠른 성능을 위해 항상 범용 성능 모드를 사용하는 것이 좋습니다.

  • 최대 I/O 모드는 범용 모드보다 긴 지연 시간을 견딜 수 있는 고도로 병렬화된 워크로드용으로 설계된 이전 세대 성능 유형입니다. One Zone 파일 시스템 또는 탄력적 처리량을 사용하는 파일 시스템에서는 최대 I/O 모드가 지원되지 않습니다.

    중요

    최대 I/O에서는 작업당 지연 시간이 길어지기 때문에 모든 파일 시스템에 범용 성능 모드를 사용하는 것이 좋습니다.

범용 성능 모드를 사용하는 파일 시스템에 사용할 수 있는 IOPS 한도 내에서 워크로드가 유지되도록 하기 위해 PercentIOLimit CloudWatch 지표를 모니터링할 수 있습니다. 자세한 정보는 아마존 EFS용 아마존 CloudWatch 메트릭스을 참조하세요.

애플리케이션은 성능 모드와 관련된 한도까지 IOPS를 탄력적으로 확장할 수 있습니다. IOPS는 별도로 청구되지 않으며, IOPS는 파일 시스템의 처리량 계산에 포함됩니다. 모든 네트워크 파일 시스템(NFS) 요청은 4킬로바이트(KB) 의 처리량 또는 실제 요청 및 응답 크기 중 큰 쪽을 기준으로 계산됩니다.

처리량 모드

파일 시스템의 처리량 모드에 따라 파일 시스템에서 사용할 수 있는 처리량이 결정됩니다. Amazon EFS는 탄력적, 프로비저닝, 버스팅이라는 세 가지 처리량 모드를 제공합니다. 쓰기 처리량보다 높은 읽기 처리량을 제공할 수 있도록 읽기 처리량이 할인됩니다. 각 처리량 모드에서 사용할 수 있는 최대 처리량은 AWS 리전에 따라 달라집니다. 지역별 최대 파일 시스템 처리량에 대한 자세한 내용은 아마존 EFS 할당량을 참조하세요.

파일 시스템은 읽기 및 쓰기 처리량을 합쳐 100%를 달성할 수 있습니다. 예를 들어 파일 시스템이 읽기 처리량 한도의 33%를 사용하는 경우 그 파일 시스템은 동시에 쓰기 처리량 한도의 최대 67%까지 달성할 수 있습니다. 콘솔의 파일 시스템 세부 정보 페이지에 있는 처리량 사용률(%) 그래프에서 파일 시스템의 처리량 사용량을 모니터링할 수 있습니다. 자세한 정보는 CloudWatch 지표를 사용하여 처리량 성능을 모니터링합니다.을 참조하세요.

파일 시스템의 올바른 처리량 모드 선택

파일 시스템에 적합한 처리량 모드를 선택하는 것은 워크로드의 성능 요구 사항에 따라 달라집니다.

  • 탄력적 처리량 (권장) - 예측하기 어려운 워크로드 및 성능 요구 사항이 급증하거나 예측할 수 없는 경우 또는 애플리케이션이 처리량을 5% 이하로 높이는 경우에는 기본 탄력적 average-to-peak 처리량을 사용하십시오. 자세한 정보는 탄력적인 처리량을 참조하세요.

  • 프로비저닝된 처리량 — 워크로드의 성능 요구 사항을 알고 있거나 애플리케이션이 5% 이상의 비율로 처리량을 구동하는 경우 프로비저닝된 처리량을 사용하십시오. average-to-peak 자세한 정보는 프로비저닝된 처리량을 참조하세요.

  • 버스팅 처리량 - 파일 시스템의 스토리지 용량에 따라 처리량이 확장되는 경우 버스팅 처리량을 사용하십시오.

    버스팅 처리량을 사용한 후 애플리케이션의 처리량이 제한된 경우 (예: 허용 처리량의 80% 이상을 사용하거나 버스트 크레딧을 모두 사용한 경우) Elastic 또는 Provisioned 처리량을 사용해야 합니다. 자세한 정보는 처리량 버스트을 참조하세요.

CloudWatch Amazon을 사용하면 지표와 MeteredIOBytes 지표를 비교하여 워크로드의 average-to-peak 비율을 확인할 수 있습니다. PermittedThroughput Amazon EFS 지표에 대한 자세한 내용은 아마존 EFS용 아마존 CloudWatch 메트릭스 섹션을 참조하세요.

탄력적인 처리량

Elastic throughput (Elastic throughput) 을 사용하는 파일 시스템의 경우, Amazon EFS는 워크로드 활동의 요구에 맞게 처리량 성능을 자동으로 늘리거나 줄입니다. 탄력적 처리량은 성능 요구 사항을 예측하기 어려운 급증하거나 예측할 수 없는 워크로드 또는 평균 최대 처리량의 5% 이하 (비율) 로 처리량을 높이는 애플리케이션에 가장 적합한 처리량 모드입니다. average-to-peak

Elastic 처리량을 사용하는 파일 시스템의 처리량 성능은 자동으로 확장되므로 애플리케이션 요구 사항에 맞게 처리 용량을 지정하거나 프로비저닝할 필요가 없습니다. 읽거나 쓴 메타데이터와 데이터의 양만큼만 비용을 지불하고 Elastic throughput 사용 중에는 버스트 크레딧이 누적되거나 소비되지 않습니다.

참고

탄력적 처리량은 범용 성능 모드를 사용하는 파일 시스템에서만 사용할 수 있습니다.

지역별 탄력적 처리량 한도에 대한 자세한 내용은 을 참조하십시오늘릴 수 있는 Amazon EFS 할당량.

프로비저닝된 처리량

프로비저닝된 처리량을 사용하면 파일 시스템의 크기나 버스트 크레딧 밸런스에 관계없이 파일 시스템이 구동할 수 있는 처리량 수준을 지정합니다. 워크로드의 성능 요구 사항을 알고 있거나 애플리케이션이 처리량을 해당 비율의 5% 이상으로 제어하는 경우 프로비저닝된 처리량을 사용하십시오. average-to-peak

프로비저닝된 처리량을 사용하는 파일 시스템의 경우 파일 시스템에 설정된 처리량에 따라 요금이 부과됩니다. 한 달에 청구되는 처리량은 Standard 스토리지에서 파일 시스템에 포함된 기준 처리량을 초과하여 프로비저닝된 처리량을 기준으로 하며, AWS 리전의 일반적인 버스팅 기준 처리량 한도까지 초과하여 청구됩니다.

파일 시스템의 기준 처리량이 프로비저닝된 처리량을 초과하는 경우 파일 시스템에 허용된 버스팅 처리량 (해당 기준선 처리량 한도인\ 버스팅 기준 처리량까지) 을 자동으로 사용합니다. AWS 리전

처리량당 제한에 대한 자세한 내용은 을 참조하십시오. RegionProvisioned 늘릴 수 있는 Amazon EFS 할당량

처리량 버스트

파일 시스템의 스토리지 용량에 따라 처리량이 확장되어야 하는 워크로드에는 버스팅 처리량을 사용하는 것이 좋습니다. 버스팅 처리량의 경우 기본 처리량은 Standard 스토리지 클래스의 파일 시스템 크기에 비례하며 스토리지의 KiBps 각 GiB당 50입니다. 버스트 크레딧은 파일 시스템이 기본 처리량 이하로 소비할 때 누적되고, 처리량이 기본 속도를 초과하면 차감됩니다.

버스트 크레딧을 사용할 수 있는 경우 파일 시스템은 스토리지 MiBps TiB당 최대 100개까지 처리량을 높일 수 있으며, 최대 100개까지 AWS 리전 처리할 수 있습니다. MiBps 버스트 크레딧을 사용할 수 없는 경우 파일 시스템은 MiBps TiB당 최대 50개 (최소 1개) 의 스토리지를 구동할 수 있습니다. MiBps

지역별 버스팅 처리량에 대한 자세한 내용은 을 참조하십시오. General resource quotas that cannot be changed

Amazon EFS 버스트 크레딧에 대한 이해

버스팅 처리량을 사용하면 각 파일 시스템은 EFS Standard 스토리지 클래스에 저장된 파일 시스템의 크기에 따라 결정되는 기준 속도에 따라 시간이 지남에 따라 버스트 크레딧을 획득합니다. 기본 속도는 스토리지의 테비바이트 [TiB] MiBps 당 50입니다 (스토리지 KiBps GiB당 50에 해당). Amazon EFS는 쓰기 작업 속도의 최대 3분의 1까지 읽기 작업을 측정하므로 파일 시스템은 읽기 처리량 GiB당 최대 150개 또는 쓰기 처리량 KiBps GiB당 KiBps 50까지 기본 속도를 적용할 수 있습니다.

파일 시스템은 기준 측정 속도로 지속적으로 처리량을 높일 수 있습니다. 파일 시스템은 비활성 상태이거나 처리량이 기준 측정 속도 이하로 떨어질 때마다 버스트 크레딧을 누적합니다. 누적된 버스트 크레딧은 파일 시스템에 처리량을 기준 속도 이상으로 끌어올릴 수 있는 기능을 제공합니다.

예를 들어 표준 스토리지 클래스의 측정 데이터가 100GiB인 파일 시스템의 기준 처리량은 5입니다. MiBps 24시간 동안 사용하지 않는 동안 파일 시스템은 432,000MiB 상당의 크레딧 (5MiB × 86,400초 = 432,000MiB) 을 획득하며, 이 크레딧을 사용하여 72분 동안 100에서 MiBps 버스트하는 데 사용할 수 있습니다 (432,000MiB ÷ 100 = 72분). MiBps

1TiB보다 큰 파일 시스템은 나머지 50%의 시간 동안 비활성 상태이면 최대 50%의 시간 동안 항상 버스트할 수 있습니다.

다음 표는 버스팅 동작의 예를 보여 줍니다.

파일 시스템 크기 버스트 처리량 기준 처리량
Standard 스토리지에 있는 100GiB의 측정된 데이터
  • 하루 최대 72분 동안 읽기 전용으로 300 () 까지 버스트하거나 MiBps

  • 하루 최대 72분 동안 MiBps 쓰기 전용으로 100까지 버스트할 수 있습니다.

  • 최대 15개의 읽기 전용으로 연속 구동 MiBps

  • 최대 5개까지 연속 MiBps 쓰기 전용 드라이브

Standard 스토리지에 있는 1TiB의 측정된 데이터
  • 하루 12시간 동안 MiBps 읽기 전용으로 300까지 버스트하거나

  • 하루 12시간 동안 MiBps 쓰기 전용 100개로 버스트할 수 있습니다.

  • 150 드라이브 (연속 읽기 전용) MiBps

  • 드라이브 50 (연속 MiBps 쓰기 전용)

Standard 스토리지에 있는 10TiB의 측정된 데이터
  • 하루 12시간 동안 GiBps 읽기 전용으로 3번까지 버스트하거나

  • 하루 12시간 동안 GiBps 쓰기 전용 1회로 버스트

  • 1.5 연속 읽기 전용 드라이브 GiBps

  • 드라이브 500 연속 MiBps 쓰기 전용

일반적으로 규모가 더 큰 파일 시스템
  • 하루 12시간 동안 스토리지 TiB당 300개의 MiBps 읽기 전용으로 버스트하거나

  • 하루 12시간 동안 스토리지 MiBps TiB당 쓰기 전용 100개로 버스트

  • 스토리지 TiB당 MiBps 읽기 전용으로 연속 150개 드라이브

  • 스토리지 TiB당 MiBps 쓰기 전용 50개를 지속적으로 드라이브

참고

Amazon EFS는 기준 요금이 더 낮더라도 모든 파일 시스템에 1의 MiBps 측정된 처리량을 제공합니다.

기준 속도 및 버스트 속도를 결정할 때 사용되는 파일 시스템 크기는 DescribeFileSystems API 작업을 통해 사용 가능한 ValueInStandard로 측정된 크기와 동일합니다.

파일 시스템이 획득할 수 있는 최대 크레딧 잔고는 1TiB보다 작은 파일 시스템의 경우 2.1TiB이고, 1TiB보다 큰 파일 시스템의 경우 저장된 TiB당 2.1TiB입니다. 즉, 파일 시스템은 최대 12시간 동안 연속으로 버스트하는 데 충분한 크레딧을 축적할 수 있습니다.

처리량 전환 및 프로비저닝량 변경에 대한 제한

기존 파일 시스템의 처리량 모드를 전환하고 처리량을 변경할 수 있습니다. 하지만 처리량 모드를 프로비저닝된 처리량으로 전환하거나 프로비저닝된 처리량을 변경한 후에는 24시간 동안 다음 작업이 제한됩니다.

  • 프로비저닝된 처리량 모드에서 엘라스틱 또는 버스팅 처리량 모드로 전환.

  • 프로비저닝된 처리량 감소.

Amazon EFS 성능 팁

Amazon EFS를 사용할 때는 다음 성능 팁을 명심하세요.

평균 I/O 크기

Amazon EFS의 분산 특성 덕분에 높은 수준의 가용성, 내구성 및 확장성을 구현할 수 있습니다. 이러한 분산 아키텍처로 인해 각 파일 작업에서 약간의 지연 오버헤드가 생기는데, 이렇게 작업당 지연 시간이 있으므로 평균 I/O 크기가 늘어남에 따라 전체 처리량도 대개 증가합니다. 대량의 데이터에 대해 오버헤드가 분할 사용되기 때문입니다.

높은 처리량과 IOPS를 요구하는 워크로드 최적화

높은 처리량과 IOPS가 필요한 워크로드의 경우 범용 성능 모드 및 탄력적 처리량으로 구성된 지역 파일 시스템을 사용하십시오.

참고

자주 액세스하는 데이터에 대해 최대 250,000 읽기 IOPS를 달성하려면 파일 시스템에서 탄력적 처리량을 사용해야 합니다.

최고 수준의 성능을 달성하려면 다음과 같이 애플리케이션 또는 워크로드를 구성하여 병렬화를 활용해야 합니다.

  1. 최소한 사용 중인 클라이언트 수와 동일한 수의 디렉터리를 사용하여 모든 클라이언트와 디렉터리에 워크로드를 균등하게 분배하십시오.

  2. 개별 스레드를 별개의 데이터 세트 또는 파일에 맞게 조정하여 경합을 최소화합니다.

  3. 단일 탑재 대상에서 클라이언트당 최소 64개의 스레드를 사용하여 10개 이상의 NFS 클라이언트에 워크로드를 분산합니다.

동시 연결

Amazon EFS 파일 시스템을 최대 수천 개의 Amazon EC2 및 기타 AWS 컴퓨팅 인스턴스에 동시에 마운트할 수 있습니다. 더 많은 인스턴스에서 병렬화할 수 있는 애플리케이션인 경우, 인스턴스 간 집계를 통해 파일 시스템의 처리량을 더 높은 수준으로 끌어올릴 수 있습니다.

요청 모델

파일 시스템에 대한 비동기 쓰기를 활성화하면, 보류 중인 쓰기 작업은 Amazon EC2 인스턴스에서 버퍼링된 다음 Amazon EFS에 비동기식으로 기록됩니다. 비동기 쓰기는 일반적으로 지연 시간이 더 짧습니다. 비동기 쓰기를 수행하는 경우 커널은 캐싱에 추가 메모리를 사용합니다.

비동기 쓰기를 활성화한 파일 시스템 또는 캐시 우회 옵션(예: O_DIRECT)을 사용하여 파일을 여는 파일 시스템에서는 Amazon EFS에 비동기 요청을 생성합니다. 모든 작업은 클라이언트와 Amazon EFS를 왕복합니다.

참고

선택한 요청 모델은 일관성(여러 Amazon EC2 인스턴스를 사용하는 경우)과 속도를 절충합니다. 동기 쓰기를 사용하면 다음 요청을 처리하기 전에 각 쓰기 요청 트랜잭션을 완료하여 데이터 일관성을 높일 수 있습니다. 비동기 쓰기를 사용하면 보류 중인 쓰기 작업을 버퍼링하여 처리량을 높일 수 있습니다.

NFS 클라이언트 탑재 설정

EFS 파일 시스템 탑재추가 탑재 고려 사항에 설명된 대로 권장 탑재 옵션을 사용하고 있는지 확인하세요.

Amazon EC2 인스턴스에 파일 시스템을 탑재하는 경우, Amazon EFS에서는 네트워크 파일 시스템 버전 4.0 및 4.1(NFSv4) 프로토콜을 지원합니다. NFSv4.1은 NFSv4.0(초당 파일 1,000개 미만)에 비해 소규모 파일 병렬 읽기 작업(초당 파일 10,000개 이상)에서 더 나은 성능을 제공합니다. macOS Big Sur를 실행하는 Amazon EC2 macOS 인스턴스의 경우 NFSv4.0만 지원됩니다.

다음 탑재 옵션은 사용하지 마세요.

  • noac, actimeo=0, acregmax=0, acdirmax=0 - 이 옵션은 성능에 매우 큰 영향을 미치는 속성 캐시를 비활성화합니다.

  • lookupcache=pos, lookupcache=none - 이 옵션은 성능에 매우 큰 영향을 미치는 파일 이름 조회 캐시를 비활성화합니다.

  • fsc- 이 옵션은 로컬 파일 캐싱을 활성화하지만 NFS 캐시 일관성을 변경하지 않으며 지연 시간을 줄이지 않습니다.

참고

파일 시스템을 탑재할 때 NFS 클라이언트의 읽기 및 쓰기 버퍼 크기를 1MB로 늘리는 것을 고려 해 보세요.

소규모 파일 성능 최적화

파일 다시 열기를 최소화하고, 병렬 처리를 증가시키고, 가능한 경우 참조 파일을 번들링하여 소규모 파일의 성능을 개선할 수 있습니다.

  • 서버로의 왕복 횟수를 최소화하세요.

    나중에 워크플로에서 필요할 경우 파일을 불필요하게 닫지 마세요. 파일 설명자를 열어 두면 캐시에 있는 로컬 사본에 직접 액세스할 수 있습니다. 파일 열기, 닫기 및 메타데이터 작업은 일반적으로 비동기적으로 또는 파이프라인을 통해 수행할 수 없습니다.

    소규모 파일을 읽거나 쓸 때는 두 번의 추가 왕복이 중요합니다.

    각 왕복(파일 열기, 파일 닫기)에는 메가바이트 단위의 대량 데이터를 읽거나 쓰는 시간만큼 걸릴 수 있습니다. 컴퓨팅 작업을 시작할 때 입력 또는 출력 파일을 한 번 열고 전체 작업 기간 동안 열어 두는 것이 더 효율적입니다.

  • 병렬 처리를 사용하면 왕복 시간이 미치는 영향을 줄일 수 있습니다.

  • 참조 파일을 .zip 파일로 번들링합니다. 일부 애플리케이션은 크기가 작고 대부분 읽기 전용인 참조 파일을 대량으로 사용합니다. 이러한 파일을 하나의 .zip 파일로 번들링하면 한 번의 열고 닫기 왕복으로 여러 파일을 읽을 수 있습니다.

    .zip 형식을 사용하면 개별 파일에 무작위로 액세스할 수 있습니다.

디렉터리 성능 최적화

동시에 수정되는 매우 큰 디렉터리(10만 개 이상의 파일)에 대해 목록(ls) 작업을 수행하는 경우 Linux NFS 클라이언트가 응답을 반환하지 않고 중단될 수 있습니다. 이 문제는 Amazon Linux 2 커널 4.14, 5.4, 5.10으로 이식된 커널 5.11에서 수정되었습니다.

가능하면 파일 시스템의 디렉터리 수를 10,000개 미만으로 유지하는 것이 좋습니다. 중첩된 하위 디렉터리를 최대한 많이 사용하세요.

디렉터리를 목록을 작성할 때 필요하지 않은 파일 특성은 디렉터리 자체에 저장되지 않으므로 가져오지 마세요.

NFS read_ahead_kb 크기 최적화

NFS read_ahead_kb 속성은 Linux 커널이 순차적 읽기 작업 중에 미리 읽거나 이리 가져올 킬로바이트 수를 정의합니다.

Linux 커널 버전 5.4.* 이전의 경우 read_ahead_kb 값은 값 rsize(탑재 옵션에 설정된 클라이언트 구성 읽기 버퍼 크기)에 NFS_MAX_READAHEAD를 곱하여 설정됩니다. 권장 탑재 옵션을 사용할 경우 이 공식은 read_ahead_kb을 15MB로 설정합니다.

참고

리눅스 커널 버전 5.4.*부터 리눅스 NFS 클라이언트는 read_ahead_kb 기본값인 128KB를 사용합니다. 이 값을 15MB로 늘리는 것이 좋습니다.

amazon-efs-utils 버전 1.33.2 이상에서 사용할 수 있는 Amazon EFS 탑재 도우미는 파일 시스템을 탑재한 후 자동으로 read_ahead_kb 값을 15* rsize 또는 15MB로 수정합니다.

Linux 커널 5.4 이상의 경우 탑재 도우미를 사용하여 파일 시스템을 탑재하지 않는 경우 성능 향상을 위해 수동으로 read_ahead_kb를 15MB로 설정하는 것이 좋습니다. 파일 시스템을 탑재한 후 다음 명령을 사용하여 read_ahead_kb 값을 재설정할 수 있습니다. 이 명령을 사용하기 전에 다음 값을 교체하세요.

  • read-ahead-value-kb를 원하는 크기(킬로바이트)로 교체합니다.

  • efs-mount-point를 파일 시스템의 탑재 포인트를 교체합니다.

device_number=$(stat -c '%d' efs-mount-point) ((major = ($device_number & 0xFFF00) >> 8)) ((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00))) sudo bash -c "echo read-ahead-value-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"

다음 예제는 read_ahead_kb 크기를 15MB로 설정합니다.

device_number=$(stat -c '%d' efs) ((major = ($device_number & 0xFFF00) >> 8)) ((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00))) sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"