Zu den Hauptinhalten
  • Bestellungen schnell und einfach aufgeben
  • Bestellungen anzeigen und den Versandstatus verfolgen
  • Profitieren Sie von exklusiven Prämien und Rabatten für Mitglieder
  • Erstellen Sie eine Liste Ihrer Produkte, auf die Sie jederzeit zugreifen können.
  • Verwalten Sie mit der Unternehmensverwaltung Ihre Dell EMC Seiten, Produkte und produktspezifischen Kontakte.

Dell EMC Ready Solutions for HPC BeeGFS 고성능 스토리지

Zusammenfassung: HPC 및 AI 혁신 랩, BeeGFS 고성능 스토리지 솔루션, 순차적 읽기 및 쓰기 성능, 랜덤 읽기 및 쓰기 성능, PowerEdge R740xd, PowerEdge R640, PowerSwitch S3048-ON, Mellanox SB7890, BeeGFS v7.1.3, HPC and AI Innovation Lab, HPC, BeeGFS High Performance Storage Solution, IOzone, Sequential Read and Write Performance, Random Read and Write Performance ...

Dieser Artikel wurde möglicherweise automatisch übersetzt. Wenn Sie eine Rückmeldung bezüglich dessen Qualität geben möchten, teilen Sie uns diese über das Formular unten auf dieser Seite mit.

Artikelinhalt


Symptome

2019년 11월 Dell EMC HPC 및 AI 이노베이션 랩의 Nirmala Sundarajan이 작성한 문서

Ursache

Dell EMC Ready Solutions for HPC BeeGFS 고성능 스토리지

Lösung

목차

  1. 소개
  2. 솔루션 레퍼런스 아키텍처
  3. 하드웨어 및 소프트웨어 구성
  4. 솔루션 구성 세부 정보
  5. R740xd, 24x NVMe 드라이브, CPU 매핑 세부 정보
  6. 성능 특성화
  7. 결론 및 향후 작업
     

소개

Dell EMC HPC 팀은 HPC 스토리지 포트폴리오에 가장 최근에 추가된 "Dell EMC Ready Solutions for HPC BeeGFS Storage"의 릴리스를 자랑스럽게 발표합니다. 이 솔루션은 각각 24x 인텔 P4600 1.6TB NVMe, Mixed Use Express Flash 드라이브 및 Mellanox ConnectX-5 InfiniBand EDR 어댑터 2개가 장착된 R740xd 서버를 사용합니다. 이 24 NVMe 드라이브 구성에서 12x NVMe SSD는 PCIe 스위치에 연결되고 각 스위치는 x16 PCIe 확장 카드를 통해 하나의 CPU에 연결됩니다. 또한 각 IB 인터페이스는 하나의 CPU에 연결됩니다. 각 CPU가 하나의 InfiniBand 어댑터에 연결되고 12개의 NVMe SSD를 처리하는 이러한 균형 잡힌 구성은 NVMe 드라이브와의 I/O 요청을 처리하는 데 프로세서가 균등하게 사용되도록 함으로써 최대의 성능을 제공합니다.

이 솔루션은 고성능 I/O에 초점을 맞추고 있으며 고속 스크래치 솔루션으로 설계되었습니다.  이 솔루션의 핵심은 스케줄러를 제거하고 블록 계층에서 병목 현상을 대기시킴으로써 매우 높은 대역폭과 낮은 레이턴시를 제공하는 고속 NVMe SSD를 사용하는 것입니다. BeeGFS 파일 시스템도 높은 총 I/O 처리량을 지원합니다.

솔루션 레퍼런스 아키텍처

그림 1은 솔루션의 레퍼런스 아키텍처를 보여 줍니다. 관리 서버는 이더넷을 통해서만 메타데이터 및 스토리지 서버에 연결됩니다. 각 메타데이터 및 스토리지 서버에는 InfiniBand 링크가 2개 있으며 이더넷을 통해 전용 네트워크에 연결됩니다. 클라이언트에는 InfiniBand 링크가 하나 있으며 이더넷을 통해 전용 인터페이스에 연결됩니다.
Dell EMC Ready Solutions for HPC BeeGFS Storage - 레퍼런스 아키텍처
그림 1:  Dell EMC Ready Solutions for HPC BeeGFS Storage - 레퍼런스 아키텍처

하드웨어 및 소프트웨어 구성

표 1 및 2에서는 각각 관리 서버 및 메타데이터/스토리지 서버의 하드웨어 사양을 설명합니다. 표 3에는 솔루션에 사용되는 소프트웨어 버전이 설명되어 있습니다.

 

표 1 PowerEdge R640 구성(관리 서버)
서버 Dell EMC PowerEdge R640
프로세서 인텔 제온 Gold 5218 2.3 Ghz 2개, 16 코어
메모리 8GB DDR4 2666MT/s DIMM 12개 - 96GB
로컬 디스크 300GB 15K RPM SAS 2.5인치 HDD 6개
RAID 컨트롤러 PERC H740P 통합 RAID 컨트롤러
아웃오브밴드 관리 Lifecycle Controller가 포함된 iDRAC9 Enterprise
전원 공급 장치 이중 1100W 전원 공급 장치
BIOS 버전 2.2.11
운영 체제 CentOS™ 7.6
커널 버전 3.10.0-957.27.2.el7.x86_64

 

표 2 PowerEdge R740xd 구성(메타데이터 및 스토리지 서버)
서버 Dell EMC PowerEdge R740xd
프로세서 인텔 제온 Platinum 8268 CPU @ 2.90Ghz 2개, 24 코어
메모리 32GB DDR4 2933MT/s DIMM 12개 - 384GB
BOSS 카드 OS용 RAID 1의 240GB M.2 SATA SSD 2개
로컬 드라이브 24x Dell Express Flash NVMe P4600 MU 1.6TB 2.5" U.2
Mellanox EDR 카드 Mellanox ConnectX-5 EDR 카드 2개(슬롯 1 & 8)
아웃오브밴드 관리 Lifecycle Controller가 포함된 iDRAC9 Enterprise
전원 공급 장치 듀얼 2000W 전원 공급 장치

 

표 3 소프트웨어 구성(메타데이터 및 스토리지 서버)
BIOS 2.2.11
CPLD 1.1.3
운영 체제 CentOS™ 7.6
커널 버전 3.10.0-957.el7.x86_64
iDRAC 3.34.34.34
시스템 관리 툴 OpenManage Server Administrator 9.3.0-3407_A00
Mellanox OFED 4.5-1.0.1.0
NVMe SSD QDV1DP13
*인텔 ® 데이터 센터 툴  3.0.19
BeeGFS 7.1.3
Grafana 6.3.2
InfluxDB 1.7.7
IOzone 벤치마크 3.487
*인텔 P4600NVMe SSD의 관리 및 펌웨어 업데이트용

솔루션 구성 세부 정보

BeeGFS 아키텍처는 네 가지 주요 서비스로 구성됩니다.
  • 관리 서비스
  • 메타데이터 서비스
  • 스토리지 서비스
  • 클라이언트 서비스
커널 모듈인 클라이언트 서비스를 제외한 관리, 메타데이터 및 스토리지 서비스는 사용자 공간 프로세스입니다. 그림 2는 HPC BeeGFS Storage용 Dell EMC Ready Solutions의 레퍼런스 아키텍처가 BeeGFS 파일 시스템의 일반 아키텍처에 매핑되는 방식을 보여 줍니다.
NVMe SSD가 있는 PowerEdge R740xd의 BeeGFS 파일 시스템
그림 2:  NVMe SSD가 있는 PowerEdge R740xd의 BeeGFS 파일 시스템

관리 서비스

각 BeeGFS 파일 시스템 또는 네임스페이스에는 하나의 관리 서비스만 있습니다. 다른 모든 서비스를 구성할 때 관리 서비스로 등록해야 하기 때문에 관리 서비스를 먼저 설정해야 합니다.  PowerEdge R640은 관리 서버로 사용됩니다. 관리 서비스(beegfs-mgmtd.service)의 호스팅 외에도 시계열 데이터베이스 InfluxDB를 사용해 시스템에서 통계를 수집하여 사용자에게 제공하는 모니터링 서비스(beegfs-mon.service)를 호스팅합니다. 데이터 시각화를 위해 beegfs-mon은 즉시 사용할 수 있는 사전 정의된 Grafana 창을 제공합니다. 관리 서버에는 운영 체제 및 InfluxDB용으로 RAID 10에 구성된 6x 300GB HDD가 있습니다.

메타데이터 서비스

메타데이터 서비스는 스케일 아웃 서비스로, BeeGFS 파일 시스템에는 여러 메타데이터 서비스가 있을 수 있습니다. 그러나 각 메타데이터 서비스는 메타데이터를 저장할 정확히 하나의 메타데이터 타겟만을 갖습니다.  BeeGFS는 메타데이터 타겟에서 사용자가 생성한 파일당 하나의 메타데이터 파일을 생성합니다. BeeGFS 메타데이터는 디렉토리별로 배포됩니다. 메타데이터 서비스는 클라이언트에 데이터 스트라이핑 정보를 제공하며 파일 열기/닫기 사이의 데이터 액세스에는 관여하지 않습니다.

메타데이터 저장에는 24x 인텔 P4600 1.6TB NVMe가 장착된 PowerEdge R740xd 드라이브가 사용됩니다. BeeGFS 메타데이터에 요구되는 스토리지 용량이 매우 작아, 전용 메타데이터 서버를 사용하는 대신 NUMA 존 0의 12개 드라이브만 활용하여 MDT(META Data Target)를 호스팅하였으며, NUMA 존에 있는 나머지 12개의 드라이브로는 ST(Storage Target)를 호스팅하였습니다.

그림 3은 메타데이터 서버를 보여줍니다. 노란색 사각형으로 둘러싸인 12개 드라이브는 NUMA 존 0의 MDT이고 녹색 사각형으로 둘러싸인 12개 드라이브는 NUMA 존 1의 ST입니다. 이 구성은 NUMA 문제를 방지할 뿐만 아니라 필요에 따라 용량과 성능을 쉽게 확장할 수 있는 충분한 메타데이터 스토리지를 제공합니다.

메타데이터 서버

그림 3:  메타데이터 서버

그림 4는 메타데이터 서버의 RAID 구성을 보여 줍니다. 이 그림에서는 메타데이터 서버에서 NUMA 존 0의 드라이브가 MDT를 호스팅하고 NUMA 존 1의 드라이브가 스토리지 데이터를 호스팅하는 동시에 두 NUMA 존에서 스토리지 서버가 ST를 호스팅하는 방법을 중점적으로 조명합니다.

메타데이터 서버의 드라이브 구성

그림 4:  메타데이터 서버의 드라이브 구성

메타데이터에 사용되는 12개의 드라이브는 2개의 드라이브로 구성된 6x RAID 1 디스크 그룹으로 구성되며 각 디스크 그룹은 MDT의 역할을 합니다. 6개의 메타데이터 서비스가 실행되며 각 메타데이터 서비스는 하나의 MDT를 처리합니다. 나머지 12개의 스토리지 드라이브는 각각 4개의 드라이브로 구성된 3x RAID 0 디스크 그룹이 됩니다. NUMA 1 존에서는 ST당 하나씩 세 개의 스토리지 서비스가 실행됩니다. 따라서 메타데이터와 스토리지 타겟을 공동 호스팅하는 서버에는 6개의 MDT와 3개의 ST가 있게 됩니다. 또한 6개의 메타데이터 서비스와 3개의 스토리지 서비스가 실행됩니다. 각 MDT는 RAID 1 구성을 기반으로 하는 ext4 파일 시스템입니다. ST는 RAID 0에 구성된 XFS 파일 시스템을 기반으로 합니다.
 

스토리지 서비스

메타데이터 서비스와 마찬가지로 스토리지 서비스도 스케일 아웃 서비스입니다. BeeGFS 파일 시스템에는 스토리지 서비스의 인스턴스가 여러 개 있을 수 있습니다. 그러나 메타데이터 서비스와 달리 스토리지 서비스당 여러 개의 스토리지 타겟이 있을 수 있습니다.  스토리지 서비스는 데이터 청크 파일이라고도 하는 스트라이핑된 사용자 파일 내용을 저장합니다.

그림 5는 스토리지 서버로 사용되는 5x PowerEdge R740xd 서버를 보여 줍니다.
전용 스토리지 서버
그림 5:  전용 스토리지 서버

각 스토리지 서버는 각각 4개의 드라이브로 된 6x RAID 0 그룹으로 구성되므로, 아래 그림 6과 같이 서버당 6개의 ST(NUMA 존당 3개)를 호스팅합니다.
스토리지 서버의 드라이브 구성
그림 6:  스토리지 서버의 드라이브 구성

기본 레퍼런스 아키텍처 구성은 총 6개의 MDT와 33개의 ST를 호스트합니다. 5개의 전용 스토리지 서버를 보유하면 211TB의 물리적 용량과 190TiB의 가용 용량이 제공됩니다. TiB 단위의 예상 가용 용량 = 드라이브 수 x TB 내 드라이브당 용량 x 0.99(파일 시스템 오버헤드) x (10^12/2^40). 요구되는 용량이 증가함에 따라 더 많은 스토리지 서버를 쉽게 추가할 수 있도록 메타데이터 스토리지가 충분한 미드레인지 스크래치 솔루션으로 이상적입니다.

스토리지 타겟의 경우 다음 요소를 고려하여 RAID 10 대신 RAID 0 구성이 선택되었습니다.
  1. 쓰기 성능은 dd 명령을 사용하여 데이터에 대해 1MiB 블록 크기와 직접 I/O 기능을 갖는 10GiB 파일을 생성함으로써 측정했습니다. RAID 0 디바이스의 경우 각 디바이스의 평균이 5.1GB/s인 반면 RAID 10 디바이스의 경우 각 디바이스의 평균은 3.4GB/s였습니다.
  2. StorageBench 벤치마크 테스트 결과 RAID 0 구성의 경우 최대 처리량이 5.5GB/s인 반면 RAID 10 구성의 경우 3.4GB/s인 것으로 나타났습니다. 이러한 결과는 dd 명령을 사용하여 얻은 결과와 같습니다.
  3. RAID 10을 사용하면 디스크 용량의 50%를 활용할 수 있으며 쓰기 성능은 50% 감소합니다. RAID 10을 사용하면 스토리지 이중화를 확보하는 데 큰 비용이 소요됩니다.
  4. NVMe 드라이브는 비용이 많이 들 뿐만 아니라 RAID 0 구성에서 가장 잘 활용되는 속도를 제공합니다.
 

클라이언트 서비스

BeeGFS 클라이언트 모듈은 BeeGFSs 파일 시스템을 액세스할 필요가 있는 모든 호스트에 로드되어야 합니다. beegfs-client가 로드되면 /etc/fstab을 기반으로 하는 일반적인 접근 방식 대신 /etc/beegfs/beegfs-mounts.conf 파일에 정의된 파일 시스템을 마운트합니다.  이 방식을 채택하면 서비스 시작 스크립트를 통해 다른 Linux 서비스와 마찬가지로 beegfs-client가 시작됩니다. 또한 시스템 업데이트 후 BeeGFS 클라이언트 모듈을 자동으로 다시 컴파일할 수 있습니다. 

클라이언트 모듈이 로드되면 beegfs-mounts.conf에 정의된 파일 시스템이 마운트됩니다. 아래와 같이 동일한 클라이언트에 여러 beegfs 인스턴스를 마운트할 수 있습니다.

$ cat /etc/beegfs/beegfs-mounts.conf
/mnt/beegfs-medium /etc/beegfs/beegfs-client-medium.conf
/mnt/beegfs-small /etc/beegfs/beegfs-client-small.conf

위의 예에서는 동일한 클라이언트에 마운트된 두 개의 서로 다른 파일 시스템을 보여 줍니다. 이 테스트에서는 32x C6420 노드를 클라이언트로 사용했습니다.

R740xd, 24x NVMe 드라이브, CPU 매핑 세부 정보


PowerEdge R740xd 서버의 24xNVMe 구성에는 아래 그림 7과 같이 백플레인에 PCIe 스위치를 넣는 2개의 x16 NVMe 브리지 카드가 있습니다. 이 브리지 카드는 팬아웃되어 있으며 앞쪽에 드라이브(드라이브는 x4)를 장착할 수 있습니다.

R740xd, 24x NVMe CPU 매핑에 대한 세부 정보
그림 7:  CPU 매핑 시 R740xd, 24x NVMe 세부 정보

NUMA(Non-Uniform Memory Access)에서 시스템 메모리는 CPU 또는 소켓에 할당되는 노드라는 영역으로 나뉩니다. CPU에 로컬로 있는 메모리에 액세스하는 것이 시스템의 원격 CPU에 연결된 메모리보다 빠릅니다. 스레드로 된 애플리케이션은 일반적으로 스레드가 동일한 NUMA 노드의 메모리에 액세스할 때 최상의 성능을 발휘합니다. NUMA 비적중이 성능에 미치는 영향은 일반적으로 10% 이상으로 중요한 편입니다. 성능을 향상하기 위해 서비스는 UPI 크로스 소켓 링크의 불필요한 사용을 방지하여 레이턴시를 줄일 수 있도록 특정 NUMA 존을 사용하도록 구성됩니다. 각 NUMA 영역은 12개의 드라이브를 처리하며 서버에 있는 두 개의 InfiniBand EDR 인터페이스 중 하나를 사용합니다. 이러한 NUMA 분리는 사용자 지정 systemd 단위 파일을 생성하여 NUMA 밸런싱을 수동으로 구성하고 멀티호밍을 구성함으로써 이루어집니다. 따라서 자동 NUMA 밸런싱은 아래와 같이 비활성화됩니다.

# cat /proc/sys/kernel/numa_balancing
0

그림 8은 NUMA 존에 대한 InfiniBand 연결이 강조 표시된 테스트베드를 보여 줍니다.  각 서버에는 두 개의 IP 링크가 있으며 NUMA 0 존을 통한 트래픽은 인터페이스 IB0이 전달하고 NUMA 1 존을 통한 트래픽은 인터페이스 IB1이 처리합니다.
테스트베드 구성
그림 8:  테스트베드 구성
 

성능 특성화

이 섹션에서는 HPC BeeGFS 고성능 스토리지 솔루션용 Dell EMC Ready 솔루션의 특성을 파악하는 데 도움이 되는 성능 평가를 제공합니다. 자세한 내용 및 업데이트는 향후 게시될 백서를 참조하십시오. 시스템 성능은 IOzone 벤치마크를 사용하여 평가되었습니다. 이 솔루션은 순차적 읽기 및 쓰기 처리량과 랜덤 읽기 및 쓰기 IOPS 테스트를 거쳤습니다. 표 4에서는 이 블로그에 제시된 성능 연구를 위해 BeeGFS 클라이언트로 사용된 C6420 서버의 구성을 설명합니다.
 
표 4 클라이언트 구성
클라이언트 32x Dell EMC PowerEdge C6420 컴퓨팅 노드
BIOS 2.2.9
프로세서 2x 인텔 제온 골드 6148 CPU @ 2.40GHz(프로세서당 코어 20개)
메모리  16GB DDR4 2666 MT/s DIMMs 12개 - 192GB
BOSS 카드 OS용 RAID 1의 120GB M.2 부팅 드라이브 2개
운영 체제 Red Hat Enterprise Linux 서버 릴리스 7.6
커널 버전 3.10.0-957.el7.x86_64
상호 연결 Mellanox ConnectX-4 EDR 카드 1개
OFED 버전 4.5-1.0.1.0

순차적 쓰기 및 읽기 N-N

순차적 읽기/쓰기를 평가하기 위해 IOzone 벤치마크에서는 순차적 읽기/쓰기 모드를 사용했습니다. 이 테스트는 스레드 한 개에서 시작하여 2의 제곱(최대 1024 스레드)으로 증가하는 다중 스레드에서 수행했습니다. 이 테스트는 스레드당 파일 한 개 또는 N-N(N Clinet to N File) 케이스로 작동하므로 각 스레드 개수에서 동일한 수의 파일이 생성되었습니다. 요청이 균등하게 분배되고 로드 밸런싱이 이루어지도록 프로세스는 라운드 로빈 또는 순환 방식으로 32개의 물리적 클라이언트 노드에 분산되었습니다. 총 파일 크기로 8TB를 선택했으며, 이 크기는 주어진 테스트 내에서 스레드 수로 동일하게 구분됩니다. 집계 파일 크기는 서버와 BeeGFS 클라이언트의 캐싱 효과를 최소화할 수 있을 정도로 크게 선택되었습니다. IOzone은 작업 간의 경계를 조정할 수 있도록 쓰기 후 읽기(-i 0, -i 1)의 조합 모드로 실행되었습니다. 이 테스트와 결과를 위해 모든 실행에 1MiB의 레코드 크기를 사용했습니다. 순차적 N-N 테스트에 사용되는 명령은 다음과 같습니다.

순차적 읽기 및 쓰기: iozone -i 0 -i 1 -c -e -w -r 1m -I -s $Size -t $Thread -+n -+m /path/to/threadlist

OS 캐시는 다음 명령을 실행하여 클라이언트 노드의 반복 사이 또는 쓰기 및 읽기 사이에서 삭제하거나 정리할 수도 있습니다.

# sync && echo 3 > /proc/sys/vm/drop_caches

Beegfs의 기본 스트라이프 수는 4입니다. 그러나 파일당 청크 크기와 타겟 수는 디렉토리별로 구성할 수 있습니다. 이 모든 테스트에서는 아래와 같이 NUMA 존당 타겟이 세 개이므로 BeeGFS 스트라이프 크기를 2MB로 선택하고 스트라이프 수를 3으로 선택했습니다.

$ beegfs-ctl --getentryinfo --mount=/mnt/beegfs /mnt/beegfs/benchmark --verbose
EntryID: 0-5D9BA1BC-1
ParentID: root
메타데이터 노드: node001-numa0-4 [ID: 4]
스트라이프 패턴 세부 정보:
+ 유형: RAID0
+ 청크크기: 2M
+ 스토리지 타겟 수: 희망: 3

+ 스토리지 풀: 1(기본값)
inode 해시 경로: 7/5E/0-5D9BA1BC-1

투명한 대용량 페이지가 비활성화되었으며 메타데이터 및 스토리지 서버에 다음과 같은 튜닝 옵션이 적용되었습니다.

  • vm.dirty_background_ratio = 5 
  • vm.dirty_ratio = 20 
  • vm.min_free_kbytes = 262144 
  • vm.vfs_cache_pressure = 50
  • vm.zone_reclaim_mode = 2 
  • kernel.numa_balancing = 0

위의 사항 외에도 다음과 같은 BeeGFS 튜닝 옵션이 사용되었습니다. 

  • 메타데이터 구성 파일에서 tuneTargetChooser 매개변수가 "roundrobin"으로 설정되었습니다. 
  • tuneNumWorkers 매개변수가 메타데이터에 대해 24, 스토리지에 대해 32로 설정되었습니다. 
  • connMaxInternodeNum 매개변수가 메타데이터에 대해 32, 스토리지에 대해 12, 클라이언트에 대해 24로 설정되었습니다.

순차적 IOzone 총 파일 크기 8TB
그림 9:  순차적 IOzone 총 파일 크기 8TB


그림 9에서 최대 읽기 성능은 1024개 스레드에서 132GB/s이고 최대 쓰기 성능은 256개 스레드에서 121GB/s입니다. 각 드라이브는 3.2GB/s의 최고 읽기 성능과 1.3GB/s의 최고 쓰기 성능을 제공할 수 있으며, 이론적으로 최대 읽기 속도는 422GB/s, 쓰기 속도는 172GB/s입니다. 그러나 여기서 네트워크는 제한적 요소입니다. 설정에는 스토리지 서버에 대한 총 11개의 InfiniBand EDR 링크가 있습니다. 각 링크는 이론상 12.4GB/s의 최대 성능을 제공할 수 있으므로 이론상 최대 성능은 136.4GB/s입니다. 이론적 최대 성능에서 달성된 최대 읽기 및 쓰기 성능은 각각 97% 및 89%입니다.

단일 스레드의 쓰기 성능은 약 3GB/s, 읽기 속도는 약 3GB/s으로 관측됩니다. 쓰기 성능은 선형으로 증가해 256개 스레드에서 정점에 달한 후 감소하기 시작한다는 것을 발견했습니다. 그보다 스레드 수가 적으면 읽기 및 쓰기 성능은 동일합니다. 스레드가 8개일 때까지는 8개의 클라이언트가 24개의 타겟에 8개의 파일을 쓰게 되므로 모든 스토리지 타겟이 완전히 활용되지 않습니다. 시스템에는 33개의 스토리지 타겟이 있으므로 모든 서버를 완전히 활용하려면 최소 11개의 스레드가 필요합니다. 읽기 성능은 동시 스레드 수가 증가함에 따라 꾸준히 선형 증가를 기록하며 512개 및 1024개 스레드에서 거의 유사한 성능을 보입니다.

또한 스레드 수가 16개에서 128개인 경우 읽기 성능이 쓰기 성능보다 낮다가 그 후부터 증가하기 시작합니다. 이는 PCIe 읽기 작업이 요청과 완료가 모두 필요한 미게시 작업인 반면 PCIe 쓰기 작업은 자체 실행형 작업이기 때문입니다. 트랜잭션 레이어 패킷이 데이터 링크 레이어로 전달되면 작업이 완료됩니다. 쓰기 작업은 요청으로만 구성된 "게시" 작업입니다.

읽기 작업에는 같은 양의 데이터에 대해 쓰기 하나가 아닌 두 개의 트랜잭션이 필요하기 때문에 읽기 처리량은 일반적으로 쓰기 처리량보다 낮습니다. PCI Express는 읽기에 분할 트랜잭션 모델을 사용합니다. 읽기 트랜잭션에는 다음 단계가 포함됩니다.

  • 요청자가 MRR(Memory Read Request)를 전송합니다.
  • 완료자가 MRR로 확인 메시지를 보냅니다.
  • 완료자가 데이터를 완료해 돌려보냅니다.

읽기 처리량은 읽기 요청이 발행된 시간과 완료자가 데이터를 반환하는 데 걸린 시간 사이에 발생한 지연에 따라 달라집니다. 그러나 애플리케이션이 이 지연을 커버할 수 있을 만큼 충분한 수의 읽기 요청을 발행하면 처리량이 최대화됩니다. 따라서 16개 스레드에서 128개 스레드에서는 읽기 성능이 쓰기 성능보다 낮지만 요청 수가 증가함에 따라 처리량 증가를 측정합니다.  더 낮은 처리량은 요청자가 요청이 완료되기를 기다렸다가 다음 요청을 발행할 때 측정됩니다. 처리량은 첫 번째 데이터가 반환된 후 지연을 상각하기 위해 여러 요청이 실행될 때 더 높게 기록됩니다.


랜덤 쓰기 및 읽기 N-N

IO의 랜덤 성능을 평가하기 위해 IOzone이 랜덤 모드에서 사용되었습니다. 테스트는 스레드 수가 4개에서 최대 1024개까지 달할 때까지 수행되었습니다. IOzone 실행에는 모든 작업이 버퍼 캐시를 우회하여 디스크로 직접 이동하도록 직접 IO 옵션(-I)이 사용되었습니다. BeeGFS 스트라이프 3개와 2MB 크기의 청크가 사용되었습니다. IOzone에서는 4KiB 요청 크기가 사용됩니다. 성능은 IOPS(I/O Operations per Second)로 측정됩니다. BeeGFS 서버와 BeeGFS 클라이언트의 실행 사이에서 OS 캐시가 삭제되었습니다. 랜덤 쓰기 및 읽기를 실행하는 데 사용되는 명령은 다음과 같습니다.

랜덤 쓰기 및 읽기: iozone -i 2 -w -c -O -I -r 4K -s $Size -t $Thread -+n -+m /path/to/threadlist


총 파일 크기가 8TB인 IOzone을 사용한 랜덤 읽기 및 쓰기 성능
그림 10:  총 파일 크기가 8TB인 IOzone을 사용한 랜덤 읽기 및 쓰기 성능

그림 10에 나와 있는 것처럼 랜덤 쓰기는 512개 스레드에서 약 360만 IOPS로 정점을 기록하고 랜덤 읽기는 1024개 스레드에서 약 350만 IOPS로 정점을 기록합니다. I/O 요청 수가 많을 때 쓰기 및 읽기 성능이 모두 더 높습니다. 이는 NVMe 표준이 최대 64K I/O 대기열과 대기열당 최대 64K 명령을 지원하기 때문입니다. 이 대규모 NVMe 대기열 풀은 더 높은 수준의 I/O 병렬 처리를 제공하므로 IOPS가 3백만 개를 초과하는 것을 확인할 수 있습니다.


결론 및 향후 작업

이 블로그에서는 Dell EMC 고성능 BeeGFS 스토리지 솔루션의 릴리스를 발표하고 성능적 특성을 중점적으로 설명합니다. 이 솔루션의 순차적 읽기 및 쓰기 최대 성능은 각각 약 132GB/s 및 약 121GB/s이며 랜덤 쓰기는 약 360만 IOPS, 랜덤 읽기는 약 350만 IOPS에서 정점에 이릅니다.

이 블로그 문서는 고성능 스크래치 공간에 중점을 두고 설계된 "BeeGFS 스토리지 솔루션"의 1부입니다. 서버 수를 늘려 성능과 용량을 늘리는 방식으로 솔루션을 확장하는 방법을 설명하는 블로그 시리즈의 2부를 계속 지켜봐 주시기 바랍니다. 블로그 시리즈의 3부에서는 BeeGFS의 추가 기능에 대해 논의하고 BeeGFS의 기본 제공 스토리지 타겟 벤치마크인 "StorageBench"의 사용을 중점적으로 다룹니다.

다음 단계의 일환으로 메타데이터 성능과 1 파일 IOR 성능에 대한 N 스레드, 설계 고려 사항, 튜닝 및 구성에 대한 추가 세부 정보가 포함된 백서를 차후 게시할 예정입니다.


참조

[1] BeeGFS 설명서:  https://www.beegfs.io/wiki/
[2] 동일한 서브넷에서 두 인터페이스를 연결하는 방법:  https://access.redhat.com/solutions/30564

Artikeleigenschaften


Betroffenes Produkt

PowerSwitch S3048-ON, Mellanox SB7800 Series, PowerEdge R640, PowerEdge R740XD

Letztes Veröffentlichungsdatum

25 März 2024

Version

7

Artikeltyp

Solution