Software Defined Storage

Ceph Reef 성능 테스트 (RBD)

DaehanCNI 2024. 3. 18. 18:01

 

본 내용은 Ceph Blog에 OSD 성능 테스트 내용을 간략화 하였습니다. 

https://ceph.io/en/news/blog/2023/reef-osds-per-nvme/

 

Ceph Reef - 1 or 2 OSDs per NVMe? - Ceph

Hello Ceph community! It's time again for another blog post! One of the most common questions we've gotten over the years is whether or not users should deploy multiple OSDs per flash drive. This topic is especially complicated because our advice has chang

ceph.io

 

1. Overview

Ceph 구축에 있어서 하나의 Disk (NVMe) 당 몇개의 OSD을 사용하여야 하느냐는 고민은 항상 있습니다.

전통적으로 하나의 Disk 당 OSD 1개 또는 2개 라고 가이드를 합니다. 

 

Ceph의 Nautilus, Octopus 및 Pacific 을 거치면서 OSD 및 Bluestore 코드에 대한 크게 성능 향상이 이루어 졌습니다. 

다음은 Ceph Version 에 따른 성능 향사을 그래프로 나타내고 있습니다. 

 

 

또한 Pacific을 기준으로 하여 NVMe 당 OSD 1개일 때와 2개일 때의 성능 테스트에 대한 결과를 공유해 드립니다. 

 

1.1 클러스터 설정 

Node 10 x Dell PowerEdge R6515
CPU 1 x AMD EPYC 7742 64C / 128T
Memory 128GiB DDR4
Network 1 x 100GbE Mellanox ConnectX-6
NVMe 6 x 4TB Samsung PM983
OS Version CentOS Stream release 8
Ceph Version Reef v18.2.0 (built form source)

 

  • 10개의 Node 중, OSD 호스팅 노드 5대 + 클라이언트 노드 5대 
  • 모든 Node 동일한 Juniper QFX5200 스위치 + 100GbE QSFP28 Link
  • OS 최적화 TuneD Profile 은 "latency-performance" 또는 "network-latency" 모드

 

1.2 테스트 설정

각 OSD에 할당된 코어 수와 메모리 양은 일반적이나 테스트를 위해 다음과 같은 방식을 이용하여 설정

paste <(cat /proc/cpuinfo | grep "core id") <(cat /proc/cpuinfo | grep "processor") | sed 's/[[:blank:]]/ /g'

 

  • 테스트를 위해 NVMe 드라이브당 2 ~ 20개의 CPU Threads 로 설정
  • FIO를 위해 Write로 RBD(Block Volume)을 채우고 각각 60 초 동안 4MB 및  4KB IO 테스트 수행
  • Scrub, Deep Scrub, PG autoscaling, PG balancing 와 같은 백그라운드 프로세스 비활성화 

 

2. 테스트 결과 

2.1 4MB Throughput

 

 

 

 

2.2 4KB Random IOPS

 

 

 

 

2.3 4KB Random Latency

 

 

 

 

2.4 4KB Random 99% Tail Latency 

 

 

 

 

2.5 4KB Random CPU Usage

 

 

 

 

2.6 4KB Random IOPS / CPU Usage

 

 

 

 

2.7 4KB Random Memory Usage

 

 

 

 

 

3. 결론

NVMe 당 OSD 1개를 사용할 때와 2개를 사용할 때의 장단점이 명확하게 확인 할 수 있습니다. 

1 OSD per NVMe Pros  2 OSD per NVMe Pros
 + 더 간단한 구성  + 약간 더 나은 대용량 읽기 처리량
 + 더 나은 대용량 쓰기 처리량  + CPU 집약도가 높을 때, IOPS 향상
 + CPU 가 부족할 때 IOPS가 약간 향상 됨  + CPU 집약도가 높을 때, 지연 시간 개선
 + 더 나은 CPU 효율성  + 상당히 향상된 지연 시간
 + 약간 더 나은 Memory 사용량  

 

※ 하드웨어 구성에 따라 CPU, Memory 설정에 따라 다른 결과가 나올 수도 있습니다.