性能评估

环境准备

集群信息

集群信息
节点类型节点数CPU内存存储网络备注
管理节点33232 GB120 GB SSD10 Gb/s
元数据节点103232 GB16 x 1TB SSD10 Gb/s混合部署
数据节点103232 GB16 x 1TB SSD10 Gb/s混合部署

卷设置

  1. #!/bin/bash
  2. # create volume
  3. curl "http://${MASTER}/admin/createVol?name=intest&owner=cfs&capacity=300000000&mpCount=10"
  4. # increase 1500 data partitions
  5. curl "http://${MASTER}/dataPartition/create?name=intest&count=1500"
  • 初始元数据分区数: 10
  • 元数据副本数: 3
  • 初始数据分区数: 1510
  • 数据副本数: 3

小文件性能评估

通过 mdtest 进行小文件性能测试的结果如下:

配置

  1. #!/bin/bash
  2. set -e
  3. TARGET_PATH="/mnt/test/mdtest" # mount point of ChubaoFS volume
  4. for FILE_SIZE in 1024 2048 4096 8192 16384 32768 65536 131072 # file size
  5. do
  6. mpirun --allow-run-as-root -np 512 --hostfile hfile64 mdtest -n 1000 -w $i -e $FILE_SIZE -y -u -i 3 -N 1 -F -R -d $TARGET_PATH;
  7. done

测试结果Small File Benchmark

小文件性能评估结果
文件大小 (KB)1248163264128
创建操作 (TPS)7038370383737387461769479674354754027147
读取操作 (TPS)1086001181931183461229751163741107959046262082
删除操作 (TPS)8764884651835327927985498865238094684441
信息查看 (TPS)231961263270264207252309240244244906273576242930

IO性能评估

通过 fio 进行IO性能测试的结果如下:

1. 顺序读

工具设置

  1. #!/bin/bash
  2. fio -directory={} \
  3. -ioengine=psync \
  4. -rw=read \ # sequential read
  5. -bs=128k \ # block size
  6. -direct=1 \ # enable direct IO
  7. -group_reporting=1 \
  8. -fallocate=none \
  9. -time_based=1 \
  10. -runtime=120 \
  11. -name=test_file_c{} \
  12. -numjobs={} \
  13. -nrfiles=1 \
  14. -size=10G

带宽Sequential Read Bandwidth (MB/s)

顺序读带宽 (MB/s)
1 进程4 进程16 进程64 进程
1 客户端148.000626.0001129.0001130.000
2 客户端284.0001241.0002258.0002260.000
4 客户端619.0002640.0004517.0004515.000
8 客户端1193.0004994.0009006.0009034.000

IOPSSequential Read IOPS

顺序读IOPS
1 进程4 进程16 进程64 进程
1 客户端1180.0005007.0009031.0009040.000
2 客户端2275.0009924.00018062.00018081.000
4 客户端4954.00021117.00036129.00036112.000
8 客户端9531.00039954.00072048.00072264.000

延迟Sequential Read Latency (Microsecond)

顺序读延迟 (微秒)
1 进程4 进程16 进程64 进程
1 客户端842.200794.3401767.3107074.550
2 客户端874.255801.6901767.3707071.715
4 客户端812.363760.7021767.7107077.065
8 客户端837.707799.8511772.6207076.967

2. 顺序写

工具设置

  1. #!/bin/bash
  2. fio -directory={} \
  3. -ioengine=psync \
  4. -rw=write \ # sequential write
  5. -bs=128k \ # block size
  6. -direct=1 \ # enable direct IO
  7. -group_reporting=1 \
  8. -fallocate=none \
  9. -name=test_file_c{} \
  10. -numjobs={} \
  11. -nrfiles=1 \
  12. -size=10G

带宽Sequential Write Bandwidth (MB/s)

顺序写带宽 (MB/s)
1 进程4 进程16 进程64 进程
1 客户端52.200226.000956.0001126.000
2 客户端104.500473.0001763.0002252.000
4 客户端225.3001015.0002652.0003472.000
8 客户端480.6001753.0003235.0003608.000

IOPSSequential Write IOPS

顺序写IOPS
1 进程4 进程16 进程64 进程
1 客户端417180576519004
2 客户端83537791410318014
4 客户端180181272121627777
8 客户端3841140162589028860

延迟Sequential Write Latency (Microsecond)

顺序写延迟 (微秒)
1 进程4 进程16 进程64 进程
1 客户端2385.4002190.2102052.3607081.320
2 客户端2383.6102081.8502233.7907079.450
4 客户端2216.3051947.6882946.0178842.903
8 客户端2073.9212256.1204787.49617002.425

3. 随机读

工具设置

  1. #!/bin/bash
  2. fio -directory={} \
  3. -ioengine=psync \
  4. -rw=randread \ # random read
  5. -bs=4k \ # block size
  6. -direct=1 \ # enable direct IO
  7. -group_reporting=1 \
  8. -fallocate=none \
  9. -time_based=1 \
  10. -runtime=120 \
  11. -name=test_file_c{} \
  12. -numjobs={} \
  13. -nrfiles=1 \
  14. -size=10G

带宽Random Read Bandwidth (MB/s)

随机读带宽 (MB/s)
1 进程4 进程16 进程64 进程
1 客户端6.41239.100216.000534.000
2 客户端14.52588.100409.0001002.000
4 客户端33.242200.200705.0001693.000
8 客户端59.480328.300940.0002369.000

IOPSRandom Read IOPS

随机读IOPS
1 进程4 进程16 进程64 进程
1 客户端16411024056524.800140288
2 客户端371823142.4107212.8263168
4 客户端850852428.8184627.2443392
8 客户端1522285072.8246681.6621056

延迟Random Read Latency (Microsecond)

随机读延迟 (微秒)
1 进程4 进程16 进程64 进程
1 客户端603.580395.420287.510466.320
2 客户端532.840351.815303.460497.100
4 客户端469.025317.140355.105588.847
8 客户端524.709382.862530.811841.985

4. 随机写

工具设置

  1. #!/bin/bash
  2. fio -directory={} \
  3. -ioengine=psync \
  4. -rw=randwrite \ # random write
  5. -bs=4k \ # block size
  6. -direct=1 \ # enable direct IO
  7. -group_reporting=1 \
  8. -fallocate=none \
  9. -time_based=1 \
  10. -runtime=120 \
  11. -name=test_file_c{} \
  12. -numjobs={} \
  13. -nrfiles=1 \
  14. -size=10G

带宽Random Write Bandwidth (MB/s)

随机写带宽 (MB/s)
1 进程4 进程16 进程64 进程
1 客户端3.62017.500118.000318.000
2 客户端7.54044.800230.000476.000
4 客户端16.245107.700397.900636.000
8 客户端39.274208.100487.100787.100

IOPSRandom Write IOPS

随机写IOPS
1 进程4 进程16 进程64 进程
1 客户端926.0004476.00031027.20083251.200
2 客户端1929.00011473.00060313.600124620.800
4 客户端4156.00027800.000104243.200167014.400
8 客户端10050.00053250.000127692.800206745.600

延迟Random Write Latency

随机写延迟 (微秒)
1 进程4 进程16 进程64 进程
1 客户端1073.150887.570523.820784.030
2 客户端1030.010691.530539.5251042.685
4 客户端955.972575.183618.4451552.205
8 客户端789.883598.3931016.1852506.424

元数据性能评估

通过 mdtest 进行元数据性能测试的结果如下:

工具设置

  1. #!/bin/bash
  2. TEST_PATH=/mnt/cfs/mdtest # mount point of ChubaoFS volume
  3. for CLIENTS in 1 2 4 8 # number of clients
  4. do
  5. mpirun --allow-run-as-root -np $CLIENTS --hostfile hfile01 mdtest -n 5000 -u -z 2 -i 3 -d $TEST_PATH;
  6. done

目录创建Dir Creation

目录创建评估结果
1 进程4 进程16 进程64 进程
1 客户端448.6182421.00114597.9743055.15
2 客户端956.9475917.57628930.43172388.765
4 客户端2027.0213213.40354449.056104771.356
8 客户端4643.75527416.90489641.301119542.62

目录删除Dir Removal

目录删除评估结果
1 进程4 进程16 进程64 进程
1 客户端399.7792118.00512351.63534903.672
2 客户端833.3535176.81224471.67450242.973
4 客户端1853.61711462.92746413.31391128.059
8 客户端4441.43524133.61774401.336115013.557

目录状态查看Dir Stat

目录状态查看评估结果
1 进程4 进程16 进程64 进程
1 客户端283232.7611215309.5244231088.10412579177.02
2 客户端572834.1432169669.0588362749.21718120970.71
4 客户端1263474.5493333746.78610160929.2931874265.88
8 客户端2258670.0698715752.8322524794.9877533648.04

文件创建File Creation

文件创建评估结果
1 进程4 进程16 进程64 进程
1 客户端448.8882400.80313638.07227785.947
2 客户端925.685664.16625889.16350434.484
4 客户端2001.13712986.96850330.95291387.825
8 客户端4479.83125933.43786667.966112746.199

文件删除File Removal

文件删除评估结果
1 进程4 进程16 进程64 进程
1 客户端605.1433678.13818631.34247035.912
2 客户端1301.1518365.66734005.2564860.041
4 客户端3032.68314017.42650938.92680692.761
8 客户端7170.38632056.95968761.90888357.563

Tree创建Tree Creation

Tree创建评估结果
1 进程4 进程16 进程64 进程
1 客户端305.778229.56286.29923.917
2 客户端161.31211.11976.30124.439
4 客户端260.562223.15381.20923.867
8 客户端350.038220.74481.62117.144

Tree删除Tree Removal

Tree删除评估结果
1 进程4 进程16 进程64 进程
1 客户端137.46270.88131.2357.057
2 客户端217.026113.3623.9717.128
4 客户端231.622113.53930.6267.299
8 客户端185.15683.92320.6075.515

功能完整性评估

  • Linux Test Project / fs

多种负载评估

  • Database backup

  • Java application logs

  • Code git repo

  • Database systems

MyRocks,MySQL Innodb,HBase,

可扩展性评估

  • 卷扩展性: 单集群可以支持百万级别的cfs卷
  • 元数据扩展性: 单卷可以支持十亿级别文件或者目录