Azure Native Qumulo 이제 EU, 영국 및 캐나다에서 사용 가능 – 자세히 알아보기

올플래시로 가는 길 (2부)

작성자 :

다니엘 페후시와 군터 징크

미션: 우리가 선택한 엔진

In 이 시리즈의 마지막 게시물, 우리는 우리 팀이 기성 구성 요소를 사용하여 가능한 가장 높은 대역폭의 올 플래시 노드를 구축하기 시작한 방법에 대해 이야기했습니다. 하드웨어 기술이 마침내 우리의 소프트웨어 정의 비전을 위한 준비가 되었을 때 고려해야 할 몇 가지 사항이 있었습니다.

사용 가능한 CPU를 분석한 후 인텔 제온 골드 6126 CPU, 12GHz 기본 및 24GHz 최대 터보에서 2.6코어/3.7스레드, 125와트의 TDP가 있습니다. 이것은 더 높은 주파수, 더 낮은 코어 수 및 전력 등급을 위해 선택되었습니다.

다음 핵심은 대역폭, 프런트엔드 네트워크 대역폭, 백엔드 네트워크 대역폭 및 로컬 디스크 IO 대역폭 측면에서 설계의 균형을 맞추는 것이었습니다. 모두 최적화 Qumulo 소프트웨어 아키텍처.

Qumulo 75노드 클러스터에서 주어진 클라이언트 시스템은 NFS 또는 SMB를 통해 노드 중 하나에 연결합니다. 이 연결 체계를 사용하면 이 클라이언트에 대한 읽기의 25%가 백엔드 네트워크를 통해 클러스터의 다른 노드에서 발생하고 데이터의 XNUMX%는 해당 클라이언트가 연결된 노드의 디스크에서 발생합니다.

클라이언트가 단일 노드에 쓸 때 해당 데이터는 삭제 코드 백엔드 네트워크를 통해 클러스터의 다른 세 노드에 배포됩니다. 백엔드에 필요한 대역폭은 프론트엔드 네트워크와 같은 경향이 있습니다(대용량 쓰기 가정). 많은 클라이언트가 클러스터의 모든 노드에 연결되어 있을 때 이상적으로는 동일한 프론트 엔드 네트워크, 백엔드 네트워크 및 로컬 디스크 IO 대역폭이 있습니다.

구성 요소를 살펴보고 성능 병목 현상이 발생할 위치를 예측할 때 쉬운 대상은 네트워크였습니다.

우리는 단일 서버에 XNUMX개의 듀얼 포트 NIC를 넣는 것을 고려했습니다! 프론트엔드 또는 백엔드 트래픽에 대해 네트워크 균형이 고르지 않은 상자를 생성하고 필요한 네트워크 파이프에 따라 트래픽을 세 번째 NIC로 이동하는 소프트웨어를 개발해야 했기 때문에 그 아이디어는 약간 있었습니다. . 그러나 이것이 소프트웨어 개발 노력의 가치가 없다는 것이 분명해졌으며 아이디어로 빠르게 폐기되었습니다.

우리는 매우 빠르게 결정했습니다. 올 플래시 플랫폼 듀얼 포트 100GbE PCIe x16 NIC XNUMX개가 필요했습니다. 이는 초기의 빠른 릴리스에 충분할 뿐만 아니라 소프트웨어가 향후 최적화되어 하드웨어가 플랫폼의 대역폭 제한자가 되는 것을 방지함으로써 성능 여유를 허용했습니다.

숫자로 보는 성능

이제 몇 가지 유용한 하드웨어 성능 수치를 살펴보겠습니다.

PCIe Gen3 레인의 경우 이론상 최대값은 8GT/s 또는 985MB/s이고 NIC는 x16 너비 Gen3 카드, 총 물리적 레인 16개이며 이론상 최대값은 15,760MB/s입니다. 이중 포트 100GbE NIC의 경우 각 포트는 100MB/s에 해당하는 12,500Gbps를 처리할 수 있습니다. 총 대역폭이 25,000MB/s인 두 개의 포트가 있습니다. 이것이 이더넷 대역폭입니다. PCIe 측에서 NIC는 x16 너비 Gen3 카드이며 이론상 최대값은 15,760MB/s입니다. 이것들은 분명히 일치하지 않지만 PCIe Gen4가 널리 보급되기 전에 시장에서 사용할 수 있는 것 중 최고입니다. 따라서 NIC 카드에 대한 PCIe 대역폭은 여기에서 진정한 병목 현상입니다.

소프트웨어 및 프로토콜의 일부 오버헤드로 인해 단일 PCIe3 Gen 레인의 이론상 최대값을 각 수신 및 전송 쌍당 985MB/s에서 800MB/s로 내렸습니다.

오버헤드를 설명하기 위해 반올림된 숫자를 사용하면 NIC에 대한 PCIe 대역폭은 12.8GB/s입니다. 소프트웨어에서 백엔드 트래픽과 프런트엔드 트래픽을 분할하여 클라이언트 연결에 대한 프런트엔드 대역폭 제한이 12.8GB/s이고 클러스터 내 연결 대역폭에 대한 백엔드 네트워크가 12.8GB/s가 되도록 합니다.

그렇다면 NVMe 드라이브 IO 대역폭은 얼마입니까?

우리는 고객에게 스토리지 밀도 선택을 제공하기 위해 12개의 SKU를 만들기로 결정했습니다. 모든 슬롯을 활용하는 24개의 드라이브가 있는 드라이브입니다. 각 NVMe SSD에는 PCIe Gen3의 3.6개 레인이 있습니다. 즉, 반올림된 대역폭은 2GB/s입니다. 현재 시장에 나와 있는 각 드라이브는 이 버스를 포화시킬 수 없지만 U.3.6 장치 연결 표준은 미래에 더 빠른 NVMe SSD를 사용할 수 있도록 합니다. 각 드라이브가 제공할 수 있는 것은 XNUMXGB/s이지만, 우리가 선택한 마더보드에는 CPU에 대한 전체 대역폭에서 모든 드라이브를 처리할 수 있는 PCIe 레인이 없습니다.

이것이 PCIe 스위치가 들어오는 곳입니다.

마더보드에서 우리는 4개의 온보드 occulink 포트를 활용했습니다. x8 카드인 4포트 PCIe 스위치 3개와 x8 카드인 8포트 PCIe 스위치 6.4개입니다. 이러한 장치 중 하나의 각 포트는 NVMe 장치용 PCIe GenXNUMX의 xXNUMX 레인이므로 이러한 장치는 데이터 저장 장치에 전체 대역폭으로 연결됩니다! 반대편의 이야기는 그렇게 단순하게 연결되어 있지 않습니다. occulink 포트는 CPU에 직접 연결되어 있으며 CPU에서 NVMe SSD까지의 전체 대역폭입니다. XNUMX포트 스위치는 xXNUMX 레인이고 XNUMX포트 스위치는 XNUMXGB/s를 제공하는 xXNUMX 레인입니다.

12개 드라이브 버전의 경우 배선 방식은 다음과 같습니다.

  • NVMe SSD 3.6개의 대역폭은 XNUMXGB/s입니다.
  • 14.4개의 NVMe SSD의 대역폭은 XNUMXGB/s입니다.
  • 8개의 x6.4 PCIe 스위치는 CPU에 XNUMXGB/s의 대역폭을 다시 제공할 수 있습니다.

스위치보다 스토리지 장치에 더 많은 대역폭이 있으므로 스위치가 대역폭을 제한합니다.

12개 드라이브 구성:

  • 8개의 NVME 드라이브가 있는 x4 PCIe 스위치 XNUMX개
  • 8개의 NVME 드라이브가 있는 x4 PCIe 스위치 XNUMX개
  • 8개의 NVME 드라이브가 있는 x4 PCIe 스위치 XNUMX개
  • 최대 IO 대역폭: 3 x 6.4GB/s = 19.2GB/s

24개 드라이브 구성:

  • 4개의 NVMe SSD에 대한 Occulink의 XNUMX개 포트
  • 8개의 NVMe SSD가 있는 x4 PCIe 스위치 XNUMX개
  • 8개의 NVMe SSD가 있는 x8 PCIe 스위치 XNUMX개
  • 8개의 NVMe SSD가 있는 x8 PCIe 스위치 XNUMX개
  • 최대 IO 대역폭: 19.2GB/s

위의 구성을 사용하여 수학을 수행하는 경우 하드웨어 대역폭이 24개 드라이브 구성보다 12개 드라이브 구성에 대해 더 높다는 것을 확인할 수 있습니다. 이것이 사실이지만 당사 소프트웨어는 드라이브를 고르게 활용합니다. CPU PCIe 대역폭에 대한 x8 6.4포트 스위치는 대역폭의 XNUMXGB/s이므로 제한 요소입니다.

12개 드라이브 구성에서 모든 NVMe 장치에 사용할 수 있는 최대 대역폭은 1.6GB/s입니다. 1.6GB/s 수치는 x8 스위치가 6.4개의 NVMe 장치(4/6.4 = 4)로 분할된 1.6GB/s의 CPU에 대한 대역폭 값을 갖는다는 사실에서 비롯됩니다. 드라이브를 동등하게 활용하는 동일한 원칙은 24개 드라이브 구성에서도 적용되지만 이제 6.4개 드라이브에 8GB/s가 분할되므로 드라이브당 800MB/s가 됩니다. 따라서 소프트웨어는 하드웨어 대역폭을 제한하고 최대 IO 대역폭은 결국 12개 드라이브 구성과 24개 드라이브 구성에 대해 동일하게 됩니다.

올 플래시의 두 구성 모두 16GbE NIC로 가는 PCIe Gen3의 x100 레인으로 제한됩니다. 이것이 오늘날 x86 기반 플랫폼에 대한 하드웨어 기술의 상태입니다.

이 시리즈의 XNUMX부를 기대해주세요!

관련 게시물

위쪽으로 스크롤