2019년 10월 HPC 및 AI Innovation Lab의 Mario Gallegos가 작성한 문서
클라이언트 노드 수 |
16 |
클라이언트 노드 |
C6320 |
클라이언트 노드당 프로세서 수 |
인텔(R) 제온(R) Gold E5-2697v4 18코어 @ 2.30GHz 2개 |
클라이언트 노드당 메모리 |
16GiB 2400 MT/s RDIMM 12개 |
BIOS |
2.8.0 |
OS 커널 |
3.10.0-957.10.1 |
GPFS 버전 |
5.0.3 |
./iozone -i0 -c -e -w -r 8M -s 128G -t $Threads -+n -+m ./threadlist
./iozone -i1 -c -e -w -r 8M -s 128G -t $Threads -+n -+m ./threadlist
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -w -s 1 -t 8m -b 128G
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -r -s 1 -t 8m -b 128G
./iozone -i2 -c -O -w -r 4K -s 32G -t $Threads -+n -+m ./threadlist
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F
스레드 수 |
스레드당 디렉토리 수 |
총 파일 수 |
1 |
2048 |
2,097,152 |
2 |
1024 |
2,097,152 |
4 |
512 |
2,097,152 |
8 |
256 |
2,097,152 |
16 |
128 |
2,097,152 |
32 |
64 |
2,097,152 |
64 |
32 |
2,097,152 |
128 |
16 |
2,097,152 |
256 |
8 |
2,097,152 |
512 |
4 |
2,097,152 |
1024 |
2 |
2,097,152 |
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F -w 4K -e 4K
그림 6: 메타데이터 성능 - 소규모 파일(4K)
이 시스템은 통계 및 제거 작업에 대해 각각 7.7M op/s 및 1M op/s로 128스레드에서 피크 값에 도달하는 매우 좋은 결과를 얻습니다. 제거 작업은 최대 37.3K op/s에 도달했고 Create 작업은 모두 512개 스레드에서 55.5K op/s로 최고조에 도달했습니다. 스탯 및 제거 작업에는 더 많은 변동성이 있지만, 일단 피크 값에 도달하면 성능이 스탯의 경우 4M op/s, 제거의 경우 200K op/s 미만으로 떨어지지 않습니다. 생성 및 읽기는 가변성이 적고 스레드 수가 증가함에 따라 계속 늘어납니다.
이 수치는 단일 ME4024가 있는 메타데이터 모듈에 대한 것이므로 ME4024 어레이가 추가될 때마다 성능이 향상되지만 각 작업에 대한 선형 증가를 가정할 수는 없습니다. 전체 파일이 그러한 파일의 inode 안에 맞지 않는 한, ME4084의 데이터 타겟은 4K 파일을 저장하는 데 사용되며 성능이 어느 정도 제한됩니다. Inode 크기는 4KiB이고 메타데이터를 저장해야 하기 때문에 내부에 약 3KiB의 파일만 들어갈 수 있으며 이보다 큰 파일은 데이터 타겟을 사용합니다.
이 테스트는 3KiB의 작은 파일이 사용되었다는 점을 제외하고는 이전 테스트와 거의 동일합니다. 주요 차이점은 이러한 파일이 inode 내부에 완전히 맞는다는 것입니다. 따라서 스토리지 노드와 해당 ME4084가 사용되지 않습니다. 스토리지에 SSD 미디어만 사용하고 네트워크 액세스를 줄여 전반적인 속도를 향상시킵니다.
벤치마크를 실행하는 데 다음 명령이 사용되었습니다. 여기서 Threads는 사용된 스레드 수가 포함된 변수입니다(1부터 512까지 2의 거듭제곱으로 증가). my_hosts.$Threads는 라운드 로빈을 사용하여 16개의 컴퓨팅 노드에 균일하게 분산시키는 방식으로 각 스레드를 다른 노드에 할당한 해당 파일입니다.
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F -w 3K -e 3K
그림 7: 메타데이터 성능 - 소규모 파일(3K)
이 시스템은 통계 및 읽기 작업에서 매우 우수한 결과를 얻어 각각 8.29M op/s 및 5.06M op/s로 256개 스레드에서 피크 값에 도달합니다. 제거 작업은 128개 스레드에서 최대 609K op/s에 도달했으며 Create 작업은 512개 스레드에서 최대 78K op/s에 도달했습니다. 통계 및 읽기 작업은 생성 및 제거보다 변동성이 더 큽니다. 제거 시 두 개의 더 높은 스레드 포인트에서 성능이 약간 저하됩니다. 이는 128개 스레드 후 지속적인 성능이 400K op/s를 약간 넘을 것임을 시사합니다. 생성은 최대 512 스레드까지 계속 증가하지만 정체기에 도달 한 것처럼 보이므로 최대 성능은 여전히 100K op/s 미만일 수 있습니다.
이와 같은 작은 파일은 SSD 기반 메타데이터 모듈에 완전히 저장되므로 뛰어난 소형 파일 성능이 필요한 애플리케이션에서는 하나 이상의 선택적 고수요 메타데이터 모듈을 사용하여 소형 파일의 성능을 높일 수 있습니다. 그러나 inode에 맞는 파일은 현재 표준에 따라 작습니다. 또한 메타데이터 타겟은 상대적으로 작은 SSD(최대 크기 19.2TB)와 함께 RAID1을 사용하므로 스토리지 노드에 비해 용량이 제한됩니다. 따라서 불필요한 오류 및 기타 문제를 일으킬 수 있는 메타데이터 타겟이 채워지지 않도록 주의해야 합니다.
PixStor 기능 중 고급 분석을 통한 파일 시스템 모니터링은 관리를 크게 간소화하여 문제 또는 잠재적 이슈를 사전 예방적 또는 사후 대응적으로 찾는 데 필수적일 수 있습니다. 다음으로, 이러한 기능 중 일부를 간략하게 살펴보겠습니다.
그림 8은 파일 시스템 용량에 따른 유용한 정보를 보여 줍니다. 왼쪽에는 사용된 파일 시스템 총 공간과 사용된 파일 시스템 용량 기준 상위 10명의 사용자가 표시됩니다. 오른쪽에는 여러 해 동안 사용된 용량이 포함된 기간별 보기와 사용된 용량 기준 상위 10개 파일 형식 및 상위 10개 파일 세트가 Pareto 차트와 유사한 형식으로 표시됩니다(누적 합계에 대한 선 제외). 이 정보를 통해 파일 시스템에서 공정한 몫 이상을 차지하는 사용자, 향후 용량 증가에 대한 결정을 지원하는 용량 사용 추세, 대부분의 공간을 사용하는 파일 또는 대부분의 용량을 차지하는 프로젝트를 쉽게 찾을 수 있습니다.
그림 8: PixStor 분석 - 용량 보기
그림 9에서는 문제를 찾는 데 매우 유용한 두 가지 방법을 보여 주는 파일 개수 보기를 보여 줍니다. 화면의 전반부에는 원형 차트의 상위 10명의 사용자와 상위 10개의 파일 형식 및 상위 10개의 파일 세트(예: 프로젝트)가 파레토 차트와 유사한 형식(누적 합계에 대한 선 제외)으로 표시되며, 모두 파일 수를 기준으로 합니다. 이 정보는 몇 가지 중요한 질문에 답하는 데 사용할 수 있습니다. 예를 들어, 너무 많은 파일을 생성하여 파일 시스템을 독점하는 사용자, 메타데이터 악몽을 일으키는 파일 유형 또는 대부분의 리소스를 사용하는 프로젝트.
아래쪽 절반에는 다양한 파일 크기에 대해 5개의 범주를 사용하는 파일 크기에 대한 파일 수(빈도)가 포함된 히스토그램이 있습니다. 이는 파일 시스템 전체에서 사용되는 파일 크기에 대한 아이디어를 얻는 데 사용할 수 있으며, 파일 형식과 조정하여 압축이 유용한지 여부를 결정하는 데 사용할 수 있습니다.
그림 9: PixStor Analytics - 파일 개수 보기
현재 솔루션은 상당히 우수한 성능을 제공할 수 있었으며, 표 4에서 볼 수 있듯이 사용된 공간(시스템이 분산 모드로 포맷되었기 때문에)에 관계없이 안정적일 것으로 예상됩니다. 또한 솔루션은 스토리지 노드 모듈이 더 추가됨에 따라 용량과 성능이 선형적으로 확장되며, High Demand Metadata Module 옵션에서도 비슷한 성능 향상을 기대할 수 있습니다. 이 솔루션은 HPC 고객에게 다수의 상위 500개 HPC 클러스터에서 사용되는 매우 안정적인 병렬 파일 시스템을 제공합니다. 또한 탁월한 검색 기능, 고급 모니터링 및 관리를 제공하며 선택적 게이트웨이를 추가하면 NFS, SMB 등과 같은 유비쿼터스 표준 프로토콜을 통해 필요한 만큼 많은 클라이언트에 파일을 공유할 수 있습니다.
표 4 최고의 성능 및 지속적인 성능
|
최고 성능 |
지속적인 성능 |
||
쓰기 |
읽기 |
쓰기 |
읽기 |
|
대규모 순차적 N 클라이언트-N 파일 |
16.7 기가바이트/s |
23GB/s |
16.5 기가바이트/s |
20.5 기가바이트/s |
대규모 순차적 N 클라이언트-단일 공유 파일 |
16.5 기가바이트/s |
23.8GB/s |
16.2 기가바이트/s |
20.5 기가바이트/s |
랜덤 작은 블록 N 클라이언트-N 파일 |
15.8KIOps |
20.4KIOps |
15.7KiOps |
20.4KIOps |
메타데이터 생성 빈 파일 |
169.4K IOPS |
127.2K IOps |
||
메타데이터 통계 빈 파일 |
1,120만 IOPS |
330만 IOPS |
||
메타데이터 읽기 빈 파일 |
480만 IOPS |
2.4M IOPS |
||
메타데이터 제거 빈 파일 |
194.2K IOps |
144.8K IOPS |
||
메타데이터 생성 4KiB 파일 |
55.4K IOps |
55.4K IOps |
||
메타데이터 통계 4KiB 파일 |
6.4M IOPS |
4M IOPS |
||
메타데이터 읽기 4KiB 파일 |
37.3K IOps |
37.3K IOps |
||
메타데이터 제거 4KiB 파일 |
1M IOPS |
219.5K IOPS |
이 솔루션은 Cascade Lake CPU 및 더 빠른 RAM과 함께 릴리스될 예정이며 시스템의 최종 구성이 완료되면 일부 성능 부분 검사가 수행될 것입니다. 또한 데이터 타겟이 포함될 때 메타데이터 성능이 어떻게 확장되는지 자세히 문서화하기 위해 최소 2개의 ME4024 및 4KiB 파일과 함께 High Demand Metadata Module 옵션을 테스트해야 합니다. 그뿐 아니라 게이트웨이 노드의 성능은 부분 검사 결과와 함께 측정되어 새 블로그나 백서를 통해 보고됩니다. 마지막으로, 더 많은 기능을 제공하기 위해 추가 솔루션 구성 요소를 테스트하고 릴리스할 계획입니다.