Seastore를 사용한 Classic과 Crimson OSD의 성능 비교

Ceph Blog(https://ceph.io/en/news/blog/)를 보다가 관심 가는 글이 보여서 AI번역+약간 교정해 보았습니다.
출처: https://ceph.io/en/news/blog/2025/crimson-seastore-vs-classic/

Crimson의 기본 객체 저장소인 Seastore

Crimson OSD 의 기본 객체 스토리지 엔진인 Seastore와 Classic OSD의 성능 비교를 소개하게 되어 매우 기쁩니다 .

Seastore가 4K 랜덤 읽기에서는 Classic OSD보다 성능이 우수하고, 64K 순차 읽기 및 쓰기에서는 동일한 성능을 보임을 보여줍니다. 4K 랜덤 쓰기에서만 Seastore의 성능이 약간 낮게 나타났으며, Samuel Just가 주도하는 최적화 작업을 진행하고 있습니다.

이러한 결과는 일관되게 유지되며 빌드 6aab5c07ae(2025년 5월, 내부 기술 보고서, Crimson 슬랙 채널 에서 사용 가능 ) 에서 표시된 결과와 관련하여 Seastore의 성능 측면에서 회귀가 없습니다 .

간단히 말해서, 비교에 대한 핵심 사항은 다음과 같습니다.

  • 모든 테스트 실행에 메인 브랜치(해시 785976e3179)의 동일한 Ceph 개발 빌드를 사용했습니다.
  • 단일 OSD, 각각 크기가 2GB인 32개의 RBD 볼륨, 볼륨당 4개의 FIO 작업.
  • Crimson의 모든 구성은 단일 NUMA 소켓에서 균형 OSD 알고리즘을 사용했습니다(이는 이전 테스트와 일관성을 유지하기 위한 것입니다).
  • 우리는 전통적인 워크로드(무작위 읽기 4k, 무작위 쓰기 4k, 순차 읽기 64k, 순차 쓰기 64k)를 사용했습니다.
  • Seastore에는 듀얼 리액터 구성 (NUMA 소켓 0에 최대 56개 CPU 코어 사용)을 사용했으며 , Classic OSD에도 이와 유사한 구성을 사용했습니다. 자세한 내용은 이전 블로그 게시물 을 참조하세요 .

Seastore vs Classic OSD – 최대 CPU 코어 구성

이 섹션에서는 듀얼 리액터 구성에서 OSD Classic과 Crimson/Seastore의 성능을 비교합니다. 이는 사용된 시스템의 NUMA 소켓 0(Intel(R) Xeon(R) Platinum 8276M CPU @ 2.20GHz)에 최대 56개의 CPU 코어를 사용하는 것을 기준으로 합니다. 이는 이전에 발표된 2025년 5월 29일 보고서에 사용된 CPU 구성과 동일합니다. 테스트는 동일한 하드웨어 및 소프트웨어 구성으로 수행되었으며, 자세한 내용은 아래 부록을 참조하십시오.

Randread 4k

Seastore vs Classic(듀얼 리액터 구성) - randread - IOPS vs 지연 시간

Seastore는 이 작업 부하에 대해 Classic보다 확실히 상당한 성능 향상을 보여주며, 최대 처리량은 각각 400K IOPS 대 130K IOPS입니다.

클래식씨스토어
클래식 랜드리드 OSD CPUseastore_randread_osd_cpu
  • 참고: 차트에 메모리 사용량을 표시하지 않는 이유는 메모리 사용량이 대부분 일정하게 유지되고 분석에 큰 도움이 되지 않기 때문입니다.다음 표에서는 각 워크로드에 대한 자세한 측정값을 보여줍니다. 소문자로 표시된 모든 열 이름은 벤치마크 FIO에서 제공되었으며, 대문자로 표시된 두 열, 즉 OSD CPU 사용률과 OSD 메모리 사용률은 top 명령을 사용하여 측정되었습니다.

클래식 OSD – rand4read k – 자세한 통계

아이오뎁스아이옵스총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
1108365.8732509868.000.290.111.411.26353.2053.66
2124779.6137434134.000.510.311.551.40426.7666.35
4130072.3339022090.000.980.861.591.44440.6266.60
8130657.6139197807.001.962.591.561.43442.4066.60
16131217.6239366729.003.908시 30분1.401.36437.5866.60
24132017.4639607879.005.8118.941시 30분1시 30분429.8366.60
32131567.9939477765.006.8127.081.371.42418.1266.60
40134032.4940220335.006.2226.811.781.87416.3566.60
52135246.3640576206.005.3424.462.572.71414.8666.60
64136637.7940993659.004.8523.903.323.44408.2366.60

Seastore OSD – randread 4k – 자세한 통계

아이오뎁스아이옵스총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
1126108.0537832541.000.250.071.751.624259.313479.04
2186270.3855881299.000.340.132.502.344792.023628.80
4272327.6081698825.000.470.203.563.185148.663628.80
8313378.5794014512.000.810.473.562.975258.813628.80
16396901.06119071509.001.290.894.363.185365.523628.80
24362284.30108688913.002.124.813.672.755362.523639.44
32387618.69116296461.002.6414시 40분4.363.235368.533645.60
40346395.63103929773.003.6918시 48분3.652.735354.853645.60
52371220.47111386558.004.4833.794.243.115349.683645.60
64328832.7898673511.006.2350.753.512.695328.603645.60

Randwrite 4k

Seastore 대 Classic - randwrite - IOPS 대 지연 시간

이 워크로드에 대해 Seastore의 성능을 개선할 수 있는 명확한 기회가 있습니다. Samuel Just가 이끄는 이 작업은 Seastore에 대한 여러 최적화 작업을 포함하여 매우 활발하게 진행되고 있습니다.

클래식씨스토어
클래식 랜드라이트 OSD CPUseastore_randwrite_osd_cpu

클래식 OSD – randwrite 4k – 자세한 통계

아이오뎁스아이옵스총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
165903.7019771176.000.481.001.361.01781.4175.73
286286.0725885995.000.730.522.031.50993.7057.47
496025.2228807854.001.330.702.511.911094.5374.25
8103263.4230979542.002.471.033.342.571158.5376.47
16103583.2331075901.004.945.422.231시 30분1158.3176.22
24103991.8131199311.007.3810.901.991.091143.3675.73
32104675.9831405724.009.7817.081.860.981145.6175.73
40104459.7731342317.0012시 25분23.811.810.891144.9676.47
52104192.4031264494.0015.9734.901.720.821142.1475.97
64104833.3031463618.0019.5347.701.640.791137.1076.22

Seastore OSD – randwrite 4k – 자세한 통계

아이오뎁스아이옵스총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
131367.499410655.001.012.370.620.493648.143941.28
242493.1712748376.001.503.970.750.594160.045390.00
458204.7317461826.002.193.760.950.734680.486027.28
865861.8919759489.003.885.341.060.794748.006194.16
1669801.8020942843.007.3329.561.110.814928.676199.20
2468240.3520477292.0011시 25분46.161.110.794815.886199.20
3271570.2021477716.0014시 31분60.141.160.82390.356199.20
4010710.193363.00354.63691.850.080.074281.696199.20
5216412.435810.00160.41334.380.250.174969.026199.20
647648.092608.00394.05527.430.080.164545.876199.20

Seqread 64k

Seastore 대 Classic - seqread - IOPS 대 지연 시간

이 작업 부하에 대해 Seastore의 성능은 Classic보다 10% 미만으로 낮지만, 실제적인 측면에서는 두 가지가 동일하다고 볼 수 있습니다.

클래식씨스토어
클래식_시퀀스_osd_cpuseastore_seqread_osd_cpu

클래식 OSD – seqread 64k – 자세한 통계

아이오뎁스브이총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
12259.5410591650.000.900.450.490.44244.6978.03
22252.2510557518.001.821.160.470.43264.2680.91
42226.4110436444.003.682.350.460.43260.6079.92
82229.9010453186.007.344.710.450.43258.8779.67
161867.488754162.0016.2826.080.400.40226.6378.19
241771.648304783.0016.6330.380.530.59224.7878.19
321686.787906337.0015.3224.540.720.84226.8778.44
401620.787597046.0015.3630.580.841.03215.5079.18
521537.757207264.0015.8140.050.961.27213.5979.18
641457.196829824.0014.7646.981.211.59215.7777.95

Seastore OSD – seqread 64k – 상세 통계

아이오뎁스브이총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
11473.666907887.001.380.780.420.382849.745953.20
21690.217923018.002.421.610.440.412957.456199.20
41780.628346807.004.603.250.450.433092.816199.20
81868.708759887.008.767.660.460.432992.766199.20
161957.459176207.0016.7415.610.480.443235.706199.20
242037.469552208.0024.1226.460.470.463335.786199.20
322130.589988723.0030.7635.760.490.483437.996199.20
402181.1910227339.0037.5549.960.490.483284.566199.20
522293.9310757006.0046.4259.170.520.503502.086199.20
642241.9710514348.0042.6561.720.630.653315.776199.20

Seqwrite 64k

Seastore 대 Classic - seqwrite - IOPS 대 지연 시간

이전 워크로드와 마찬가지로 Seastore의 성능은 Classic보다 10% 이내로 동일하다고 볼 수 있습니다.

클래식씨스토어
클래식_seqwrite_osd_cpuseastore_seqwrite_osd_cpu

클래식 OSD – seqwrite 64k – 자세한 통계

아이오뎁스브이총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
12413.6011313833.000.830.361.900.65597.7440.63
22629.7512326994.001.540.552.020.75684.4948.59
42679.7612561442.003.041.281.950.69698.0355.99
82688.7212603496.006.083.871.990.51716.5060.68
162701.1612661982.0012.1115시 45분2.330.43697.2661.17
242703.4312673303.0018.1734.592.480.41682.3361.91
322596.5812173046.0024.7657.192.540.41679.3761.91
402672.8312533910.0023.3455.863.290.49674.9261.91
522607.4912226048.0020.8647.364.620.69650.5562.16
642655.0112446451.0019.1042.896.060.88639.8461.67

Seastore OSD – seqwrite 64k – 세부 통계

아이오뎁스브이총_ios클랫_엠에스clat_stdevusr_cpusys_cpuOSD_cpuOSD_메모리
11895.088883327.001.071.121.210.433177.556001.82
22220.3610408096.001.831.971.290.483184.466249.60
42244.2010519929.003.643.361.270.483345.726249.60
82301.5410788847.007.116.381.530.493213.676249.60
162381.8611165433.0013.7412.082.160.493493.736249.60
242479.9911627449.0019.8020.332.430.503431.816249.60
321557.107299365.0042.0736.082.050.503732.996249.60
401521.377131945.0053.8349.442.030.483723.616249.60
521563.377328734.0068.1064.742.130.493810.176249.60
641571.507367144.0070.1871.462.520.583860.276249.60

결론

이 블로그 게시물에서는 Seastore OSD와 Classic OSD의 성능을 비교했습니다. 결과, Seastore는 4k 랜덤 읽기에서 더 나은 성능을 보였고, 64k 순차 읽기 및 쓰기에서는 동일한 성능을 보였습니다. 4k 랜덤 쓰기에서만 Seastore의 성능이 저하되었으며, 현재 최적화 작업을 진행하고 있습니다. Seastore OSD의 성능을 지속적으로 모니터링하고 향후 블로그 게시물에서 중요한 변경 사항을 보고할 예정입니다. Crimson 커뮤니티 회의에서 논의된 Seastore 성능에 대한 통찰력을 제공해 주신 Samuel Just 님께 감사드립니다.

부록: 구성 세부 정보

테스트는 Sepia Lab의 단일 노드 클러스터 o05에서 실행되었습니다.

하드웨어 및 소프트웨어 구성의 요약은 다음과 같습니다.

  • CPU: 2 x Intel(R) Xeon(R) Platinum 8276M CPU @ 2.20GH(각 56코어)
  • 메모리: 384GB
  • 저장 장치: 드라이브: 8 x 93.1TB NVMe
  • OS: 커널 5.14.0-511.el9.x86_64의 Centos 9.0
  • 커널: 5.4.0-91-generic
  • Ceph: 메인 브랜치에서 빌드된 squid dev, 해시 785976e3179(2025년 8월 29일 금요일)
  • 포드맨 버전 5.2.2
  • FIO: 3.28(워크로드에는 librbd 엔진을 사용하고, NVMe 드라이브의 사전 조건 설정에는 AIO 엔진을 사용).

다음 옵션을 사용하여 개발자 모드에서 Ceph를 빌드합니다.

WITH_CRIMSON=true ./install-deps.sh
$ ./do_cmake.sh -DWITH_CRIMSON=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer" -DWITH_TESTS=OFF && ninja -C build -j 20 -l 20 -k 20 && ninja -C build install

본 보고서의 모든 테스트는 클러스터 생성에 vstart.sh를 사용하여 단일 노드로 실행되었습니다. 저장소 측면에서 테스트된 단일 구성은 각각 2GB 크기의 32개 RBD 볼륨으로 이루어졌습니다.

RBD 풀은 복제 없이 생성되었습니다(크기 1). 아래 스니펫에서는 RBD 풀과 볼륨에 사용된 옵션을 보여줍니다.클릭하여 RBD 구성 세부 정보를 확인하세요.

    if pgrep crimson; then
    	bin/ceph daemon -c /ceph/build/ceph.conf osd.0 dump_metrics > /tmp/new_cluster_dump.json
    fi

    # basic setup
    bin/ceph osd pool create rbd 128
    bin/ceph osd pool application enable rbd rbd
    bin/ceph osd pool set rbd size 1 --yes-i-really-mean-it

    [ -z "$NUM_RBD_IMAGES" ] && NUM_RBD_IMAGES=1
    [ -z "$RBD_SIZE" ] && RBD_SIZE=2GB
    for (( i=0; i<$NUM_RBD_IMAGES; i++ )); do
      bin/rbd create --size ${RBD_SIZE} rbd/fio_test_${i}
      rbd du fio_test_${i}
      echo "Prefilling rbd/fio_test_${i}"
      bin/rbd bench -p rbd --image fio_test_${i} --io-size 64K --io-threads 1\
        --io-total ${RBD_SIZE} --io-pattern seq --io-type write  && rbd du fio_test_${i}
    done

    bin/ceph status
    bin/ceph osd dump | grep 'replicated size'

    # Show pool’s utilization statistics:
    rados df
    # Turn off auto scaler for existing and new pools - stops PGs being split/merged
    bin/ceph osd pool set noautoscale
    # Turn off balancer to avoid moving PGs
    bin/ceph balancer off
    # Turn off deep scrub
    bin/ceph osd set nodeep-scrub
    # Turn off scrub
    bin/ceph osd set noscrub
    # Turn off RBD coalescing
    bin/ceph config set client rbd_io_scheduler none 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

NVMe over TCP를 통한 확장 가능한 성능

Ceph Blog(https://ceph.io/en/news/blog/)를 보다가 관심 가는 글이 보여서 AI번역+약간 교정해 보았습니다.출처: https://ceph.io/en/news/blog/2025/nvme-gateway-perf-mb/ NVMe over TCP를 통한 확장 가능한 성능¶…