Amazon FSx for Lustre 파일 시스템의 성능을 개선하고 싶습니다.
해결 방법
파일 시스템 크기 늘리기
FSx for Lustre 파일 시스템이 지원하는 처리량은 스토리지 용량에 비례합니다.
처리량 용량 = 스토리지 용량 (TiB) * 단위 스토리지당 처리량(MBps)
예를 들어 단위 스토리지당 스토리지 용량이 4.8TiB이고 TiB당 처리량이 50MBps인 영구 파일 시스템의 경우 다음과 같습니다.
- 집계 기준 디스크 처리량 240MBps
- 버스트 디스크 처리량 1.152GiBps
Object Storage Target(OST)이 거의 가득 차면 파일 시스템을 읽거나 쓸 때 파일 시스템이 멈추거나 중단될 수 있습니다. 이 경우 파일 시스템의 크기를 늘리십시오.
불균형한 OST의 문제 해결
FSx for Lustre는 파일 시스템에 데이터를 저장하는 OST로 구성된 분산 파일 시스템입니다. OST 수와 각 OST의 크기를 보려면 클라이언트에서 다음 명령을 실행합니다.
$lfs df -h
불균형한 파일 시스템인 경우 다음과 비슷한 출력을 볼 수 있습니다.
UUID bytes Used Available Use% Mounted on
testfs-MDT0000_UUID 4.4G 214.5M 3.9G 4% /mnt/testfs[MDT:0]
testfs-MDT0001_UUID 4.4G 144.5M 4.0G 4% /mnt/testfs[MDT:1]
testfs-OST0000_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:0]
testfs-OST0001_UUID 2.0T 755.3G 1.1G 37% /mnt/testfs[OST:1]
testfs-OST0002_UUID 2.0T 1.9T 55.1M 99% /mnt/testfs[OST:2] <-
testfs-OST0003_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:3]
testfs-OST0004_UUID 2.0T 747.3G 1.1G 37% /mnt/testfs[OST:4]
testfs-OST0005_UUID 2.0T 743.3G 1.1G 36% /mnt/testfs[OST:5]
filesystem summary: 11.8T 5.5T 5.7T 46% /mnt/lustre
단일 OST의 사용 가능한 스토리지가 나머지 스토리지보다 상대적으로 작거나 클 수 있습니다. 이는 다음 조건 중 하나로 인해 발생합니다.
- 새 OST가 추가되었으나 최적화가 완료되지 않았습니다.
- 기본 스트라이프 개수인 1이 파일을 단일 OST에 배치합니다.
여러 OST가 가득 차면 파일 시스템의 스토리지 용량을 늘립니다. OST가 몇 개만 가득 차면 OST를 재조정합니다.
또한 스트라이핑 구성을 조정하여 공간을 확보하고 성능을 향상합니다. 크기에 따라 파일 레이아웃을 변경할 수 있는 Progressive File Layout(PFL) 구성을 설정할 수 있습니다. 예를 들어 레이아웃 구성을 지정하려면 lfs setstripe 명령과 -E 옵션을 사용하여 다양한 크기의 파일에 대한 레이아웃 구성 요소를 지정합니다.
lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 /mountname/directory
참고:
- PFL은 작은 파일에는 도움이 되지 않을 수 있습니다.
- lfs setstripe 명령을 사용하여 새 파일 및 폴더에 대해서만 스트라이프 구성을 설정할 수 있습니다. 기존 파일 또는 폴더를 제거하려면 lfs migrate 명령을 사용해야 합니다.
- 순차 읽기에는 스트라이핑의 이점이 없을 수 있습니다.
컴퓨팅 집약적인 워크로드에 더 큰 인스턴스 사용
집약적인 워크로드에는 메모리 또는 컴퓨팅 용량이 더 큰 인스턴스를 선택하십시오.
다음은 몇 가지 튜닝 모범 사례입니다.
1. 최적의 성능을 위해 대규모 클라이언트 인스턴스를 조정합니다.
메모리가 64GiB를 초과하는 클라이언트 인스턴스 유형에 다음 튜닝을 적용합니다.
lctl set_param ldlm.namespaces.*.lru_max_age=600000
CPU 코어가 64개가 넘는 클라이언트 인스턴스 유형에 다음 튜닝을 적용합니다.
echo "options ptlrpc ptlrpcd_per_cpt_max=32" >> /etc/modprobe.d/modprobe.conf
echo "options ksocklnd credits=2560" >> /etc/modprobe.d/modprobe.conf
# reload all kernel modules to apply the above two settings
sudo reboot
2. 클라이언트가 마운트된 후 다음 튜닝을 적용합니다.
sudo lctl set_param osc.*OST*.max_rpcs_in_flight=32
sudo lctl set_param mdc.*.max_rpcs_in_flight=64
sudo lctl set_param mdc.*.max_mod_rpcs_in_flight=50
참고:
lctl set_param 명령은 재부팅 시 지속되지 않습니다. 이러한 매개 변수는 클라이언트 측에서 영구적으로 설정할 수 없습니다. 따라서 boot cron 작업을 구현하여 권장 튜닝으로 구성을 설정하는 것이 좋습니다.
관련 정보
집계 기준 및 버스트 처리량
성능 팁