위성 접시

백서

NVMe SSD 쓰기 성능

개요

비트웨어의 데이터 레코더 레퍼런스 디자인은 최대 200Gb/s의 고속 센서 데이터를 NVMe SSD(솔리드 스테이트 드라이브)로 캡처합니다. 이를 통해 사용자는 필요한 모든 데이터 레코더 시스템을 구축할 수 있는 개방형 아키텍처를 사용할 수 있지만, "주어진 데이터 속도를 유지하려면 몇 개의 드라이브가 필요한가?"라는 질문을 자주 듣게 됩니다.

SSD 공급업체의 쓰기 속도에 대한 드라이브 사양을 살펴보고 애플리케이션에 필요한 최대 지속 대역폭을 나누고 약간의 여유를 더하면 필요한 RAID0(스트라이프) 드라이브의 수를 알 수 있다고 생각하는 경우가 많기 때문에 이 문제를 해결하고자 합니다. 문제는 SSD 사양서의 쓰기 수치가 고성능 고객의 긴 기록 시간 동안 결코 지속 가능하지 않다는 것입니다.

일반적인 SSD 드라이브 유형을 사용한 몇 가지 실제 성능 수치를 살펴보고 지속적인 쓰기가 읽기 속도만큼 간단하지 않은 이유를 알아보겠습니다. 그런 다음 퓨어스토리지의 데이터 레코더 레퍼런스 디자인을 사용해 주어진 속도에 맞는 드라이브 어레이에 대한 몇 가지 권장 사항으로 마무리하겠습니다. 좋은 소식은 퓨어스토리지의 설계가 TeraBox 서버와 250-SoC FPGA 카드를 사용하여 필요에 따라 쉽게 확장할 수 있다는 것입니다.

이 백서의 PDF 버전

U2 모듈이 있는 서버

SSD 드라이브 평판

NVMe 인터페이스가 탑재된 솔리드 스테이트 드라이브는 매우 빠른 것으로 알려져 있습니다. 실제로 특정 워크로드에서 기존 하드 디스크 드라이브(HDD)보다 빠릅니다. 특히 SSD는 쓰기보다 읽기 및 랜덤 액세스가 훨씬 더 많은 작업에 최적화되어 있습니다. 물론 데이터 레코더의 경우 그 반대인 순차적 쓰기에 중점을 둡니다.

또 다른 문제는 NVMe SSD가 지속 쓰기 시 드라이브 용량의 일부로 제한되는 최대 "스트리밍 쓰기" 대역폭에 대한 사양을 가지고 있는 경우가 많다는 것입니다. 장시간 지속 쓰기의 대부분은 이 수치에 크게 미치지 못하며, 드라이브가 커질수록 성능은 더욱 악화됩니다. 그 이유를 알아보기 위해 SSD에 비트가 저장되는 방식을 간략히 살펴보겠습니다.

SSD가 클수록 지속적인 쓰기 성능이 저하되는 경향이 있습니다.

SSD 밀도가 높아진다는 것은 지속적인 쓰기 속도가 느려지는 최신 기술로 이동한다는 것을 의미합니다. 이러한 SSD 기술 세대는 시장에 출시된 순서대로 SLC, MLC, TLC, 마지막으로 QLC라고 불리며, 밀도가 가장 낮은 순서에서 가장 높은 순서대로도 불립니다. SSD 설계자들은 시간이 지남에 따라 스트리밍 쓰기 속도가 느려진다는 사실을 잘 알고 있습니다. 따라서 가장 최신의 고밀도 SSD라도 구형 SLC 모드에서 작동하도록 일부를 남겨두는 경우가 많습니다. 이렇게 하면 드라이브의 해당 부분이 가득 찰 때까지는 이전의 빠른 속도로 쓰기 스트리밍이 가능합니다. 그 이후에는 쓰기 스트리밍 속도가 나머지 드라이브에서 지원하는 속도로 느려집니다.

SSD 드라이브 성능 저하 임계값

처음 세 가지 임계값은 벤치마크 섹션에서 자세히 살펴봅니다.

  • 최고 성능은 SLC 캐시가 가득 찰 때까지만 제공됩니다. 다양한 드라이브에서 이러한 현상이 발생하는 시점에 대한 자세한 내용은 벤치마크 섹션을 참조하세요.
  • 그런 다음 드라이브가 용량 임계값에 도달하여 SLC 캐시 크기를 줄이기 시작할 때까지 성능이 저하되는 것을 볼 수 있습니다.
  • SLC 캐시를 축소하려면 백그라운드 복사본이 필요하므로 속도가 더욱 느려집니다.

레코더가 이전 데이터를 최신 데이터로 덮어쓰기 시작할 때 발생하는 또 다른 감소가 있습니다. 이에 대해서는 다음 섹션에서 다루겠습니다.

데이터 덮어쓰기 성능 저하

데이터 덮어쓰기가 성능을 저하시키는 이유

  • SSD는 쓰기 전에 페이지를 제로화해야 합니다.
  • 따라서 한 바이트만 변경하면 SSD 컨트롤러는 과거에 제로화했던 페이지를 찾은 다음 그 한 바이트가 변경된 상태로 전체 페이지를 복사합니다.
  • SSD는 단일 페이지를 제로화할 수 없습니다. 이 작업은 페이지 블록을 사용합니다.
    • SSD마다 다르지만, 예를 들어 삼성 840 EVO의 경우 2048Kb 페이지가 있습니다. 한 블록에 256개의 페이지가 있습니다.
  • 페이지 제로화는 NVMe 트림 명령이 특정 블록이 더 이상 사용되지 않음을 SSD에 알릴 때 백그라운드에서 발생하는 비교적 느린 작업입니다.
  • 디스크 레코더에서 데이터는 디스크가 가득 차면 감싸는 링 데이터 구조로 캡처되는 경우가 많습니다.
    • 이 경우 미리 트리밍할 기회가 없습니다. 또한 애플리케이션에서 트림이 발생하더라도 SSD 레코더가 너무 바빠서 제로화를 수행할 여유 시간을 찾지 못할 수도 있습니다.
    • 몇 페이지를 쓸 때마다 다른 페이지 블록이 0이 되는 동안 일시 중지하면 성능이 크게 저하됩니다.

FPGA에서 이를 방지하는 방법

  • 디스크가 가득 차면 애플리케이션이 멈출 수 있습니다.
  • 또는 트림 명령을 실행하고 각 드라이브가 블록을 0으로 만들 수 있을 만큼 충분한 성능을 확보할 수 있도록 충분한 NVMe 드라이브를 제공할 수 있습니다.

SSD 드라이브 벤치마크

드라이브 벤치마킹 방법론

  • SPDK를 사용하여 NVMe 드라이브 성능을 벤치마킹합니다.
  • 파일 시스템 오버헤드 제거
  • 버퍼를 캐시 라인에 정렬하여 DMA 효율성 극대화
  • 빈 드라이브는 전용 스레드를 사용하여 가능한 한 빨리 완전히 채워지고 NVME DMA 컨트롤러에 항상 처리할 쓰기 명령이 있는지 확인합니다.

테스트 카테고리

특정 드라이브를 벤치마킹하기보다는 소비자 및 엔터프라이즈 시장의 사례를 선택하는 것이 목표였습니다:

  • 소비자 시장: TLC와 SLC
  • 소비자 시장: SLC가 없는 MLC
  • 엔터프라이즈 시장: SLC가 없는 TLC
  • 엔터프라이즈 마켓: 3D XPoint

소비자 시장: TLC와 SLC

테스트한 드라이브 예시: 삼성 970 Plus, 1TB

이것은 SLC 캐시가 있는 일반적인 TLC 소비자용 드라이브입니다.

  • 데이터시트에는 스트리밍이 "최대 3.3GB/초"의 속도로 쓰여진다고 나와 있습니다.
  • SLC 캐시가 가득 찰 때까지 초당 2.7-2.8GB를 측정했습니다.
  • 그 후 초당 약 1.6GB로 떨어졌습니다.
  • 오래된 데이터를 덮어쓰기 시작했을 때 드라이브는 동일한 속도로 계속 쓰기 작업을 수행했습니다.

100G 레코더 성능 달성:

RAID 0 구성에는 최소 8개의 드라이브가 필요합니다.

970 Plus 1TB 비어 있음

전체 드라이브 다시 쓰기

970 Plus 1TB---전체 드라이브 다시 쓰기

소비자 시장: SLC가 없는 MLC

테스트한 드라이브 예시: 삼성 970 Pro, 512GB

SLC 캐시가 없는 소비자 시장을 타깃으로 하는 MLC 드라이브입니다.

  • 데이터시트에는 스트리밍이 "최대 2.3GB/초"의 속도로 쓰여진다고 나와 있습니다.
  • 이 드라이브에는 SLC 캐시가 없습니다. 속도 저하 없이 초당 약 2.2GB를 측정했습니다.
  • 오래된 데이터를 덮어쓰기 시작했을 때 드라이브는 동일한 속도로 계속 쓰기 작업을 수행했습니다.

100G 레코더 성능 달성:

RAID 0 구성에는 최소 6개의 드라이브가 필요합니다.

970 Pro 512GB

엔터프라이즈 시장: SLC가 없는 TLC

테스트된 드라이브 예시: 삼성 1725b, 1.6 TBM

SLC 캐시가 없는 소비자 시장을 타깃으로 하는 MLC 드라이브입니다.

  • 데이터시트에는 스트리밍이 "초당 2.0GB"의 속도로 쓰여진다고 나와 있습니다.
  • 대부분의 경우 이 드라이브는 초당 1.7GB를 제공했지만, 가끔 초당 1.3GB로 떨어지기도 했습니다.
  • 이 드라이브는 엔터프라이즈 시장을 타깃으로 하는 TLC 드라이브로, SLC 캐시가 없는 것으로 보이며, Dell에서 "NVMe 혼합 사용 익스프레스 플래시"로 판매했습니다. "엔터프라이즈" 라벨은 수명이 더 긴 사양을 의미합니다.

100G 레코더 성능 달성:

RAID 0 구성에는 최소 10개의 드라이브가 필요합니다.

삼성 1752b 1.6TB

엔터프라이즈 마켓: 3D XPoint

테스트한 드라이브 예시: 인텔 옵테인, 480GB

옵테인 드라이브는 3D XPoint 메모리 기술을 사용하며 기존 SSD 드라이브보다 내구성이 훨씬 뛰어납니다. 하지만 기존 NVMe 드라이브 기술과 같은 고용량으로 제공되지는 않습니다.

  • 데이터시트에는 2.2GB/s 순차 쓰기 대역폭이 명시되어 있습니다.
  • 일관되게 2.2GB/s 이상 제공

100G 레코더 성능 달성:

RAID 0 구성에는 최소 6개의 드라이브가 필요합니다.

인텔 옵테인 480GB

엔터프라이즈 시장: 4세대 3D TLC

테스트한 드라이브 예시: 인텔 SSD D7-P5510 3.84TB

PCIe Gen4를 사용하는 드라이브는 성능이 크게 향상되었습니다. 최적화된 데이터 이동 엔진을 활용하기 위해 256KB 이상의 대용량 버퍼 크기를 사용했습니다.

  • 데이터시트에는 3.3GB/s 순차 쓰기 대역폭이 명시되어 있습니다.
  • 일관되게 3.2GB/s 이상 제공

100G 레코더 성능 달성:

RAID 0 구성에는 최소 5개의 드라이브가 필요합니다.

NVMe 성능 차트

벤치마크 요약

드라이브 크기를 늘리기 위해 멀티셀 아키텍처를 사용하면 장시간 쓰기를 지속해야 하는 대가가 따릅니다. 이는 소비자용 SSD에 가장 큰 영향을 미칩니다. 청구된 최대 수치와 일치하는 최고의 실제 스트리밍 쓰기 속도는 인텔 옵테인 드라이브에서 제공되지만, 이 또한 드라이브 크기가 가장 제한적입니다.

지속 쓰기를 위해 시스템을 지정하는 경우, 대상 드라이브에서 실제 벤치마크를 확보하거나 수행하는 것이 핵심입니다. 100Gb/s에서 지속 쓰기에 대한 위의 권장 사항은 이러한 실제 테스트 데이터를 기반으로 합니다.

그럼에도 불구하고 SSD에 기록할 때 고려해야 할 몇 가지 추가 고려 사항이 있으며, 이에 대해서는 다음에서 다룰 예정입니다.

드라이브 수명

쓰기 성능에서 마지막으로 고려해야 할 사항은 드라이브의 수명입니다. SSD에 쓰기를 하면 드라이브가 마모되며, 특히 데이터 레코더 애플리케이션은 드라이브 수명에 잠재적으로 스트레스를 줄 수 있습니다.

  • SSD 수명은 보증 기간 동안 하루 드라이브 쓰기 횟수(DWPD)로 지정됩니다.
    • SSD 수명에는 큰 차이가 있지만, 기대치를 설정하기 위해 1 DWPD 등급의 드라이브는 1,800회 덮어쓸 수 있다는 점에 유의하세요.

'엔터프라이즈' SSD에는 추가 플래시 셀(오버 프로비저닝)이 포함되어 있어 수명이 길어집니다(더 큰 DWPD).

  • 100GbE 디스크 레코더는 초당 최대 12.5GB의 패킷 데이터를 생성할 수 있습니다.
    • 여기에는 메타데이터(PcapNg 패킷 헤더)가 포함되지 않습니다.
  • 패킷 레코더가 고가의 30TB 엔터프라이즈 SSD 12개를 사용한다면, 어레이가 약 8시간 동안 100GbE 트래픽을 저장할 수 있다는 뜻입니다. DWPD가 1인 경우 어레이는 1.5년이 조금 넘으면 마모됩니다.

그러나 이 예는 예시일 뿐 현실적인 예는 아닙니다.

  • 100GbE 링크는 연중무휴 트래픽으로 포화 상태로 운영되지 않습니다.
  • 상업용 사이버 보안 설치는 8시간이 아니라 7~10일 동안 트래픽을 유지해야 합니다.

결론

SSD는 기존 하드 디스크 드라이브에 비해 인상적인 성능을 제공하지만, 애플리케이션에 따라 개선 사항이 다르며 경우에 따라 성능이 저하될 수 있습니다.

데이터 캡처 및 레코더 프로젝트의 대상과 같이 지속적인 쓰기가 필요한 애플리케이션의 경우, 최대 지속 쓰기 사양 외에도 고려해야 할 여러 요소가 있습니다.

스토리지 가속 및 센서 처리 제품 및 솔루션에 대해 자세히 알아보려면 BittWare에 문의하세요.