性能评估

环境准备

集群信息

节点类型 节点数 CPU 内存 存储 网络 备注
管理节点 3 32 32 GB 120 GB SSD 10 Gb/s  
元数据节点 10 32 32 GB 16 x 1TB SSD 10 Gb/s 混合部署
数据节点 10 32 32 GB 16 x 1TB SSD 10 Gb/s 混合部署

卷设置

参数 默认值 推荐值 说明
是否开启FollowerRead True True  
容量 10 GB 300 000 000 GB  
数据副本 3 3  
元数据副本数 3 3  
数据分区大小 120 GB 120 GB 只是理论值上限 并不预分配空间
数据分区数 10 1500  
元数据分区数 3 10  
是否跨zone False False  

设置方法:

$ cfs-cli volume create test-vol {owner} --capacity=300000000 --mp-count=10
Create a new volume:
  Name                : test-vol
  Owner               : ltptest
  Dara partition size : 120 GB
  Meta partition count: 10
  Capacity            : 300000000 GB
  Replicas            : 3
  Allow follower read : Enabled

Confirm (yes/no)[yes]: yes
Create volume success.

$ cfs-cli volume add-dp test-vol 1490

client配置

参数 默认值 推荐值
rate limit -1 -1
#查看当前iops:
$ http://[ClientIP]:[ProfPort]/rate/get
#设置iops,默认值-1代表不限制iops
$ http://[ClientIP]:[ProfPort]/rate/set?write=800&read=800

小文件性能评估

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

配置

#!/bin/bash
set -e
TARGET_PATH="/mnt/test/mdtest" # mount point of ChubaoFS volume
for FILE_SIZE in 1024 2048 4096 8192 16384 32768 65536 131072 # file size
do
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;
done

测试结果

Small File Benchmark
文件大小 (KB) 1 2 4 8 16 32 64 128
创建操作 (TPS) 70383 70383 73738 74617 69479 67435 47540 27147
读取操作 (TPS) 108600 118193 118346 122975 116374 110795 90462 62082
删除操作 (TPS) 87648 84651 83532 79279 85498 86523 80946 84441
信息查看 (TPS) 231961 263270 264207 252309 240244 244906 273576 242930

IO性能评估

通过 fio 进行IO性能测试的结果如下: (注:其中多个客户端挂载同一个卷,进程指 fio 进程)

1. 顺序读

工具设置

#!/bin/bash
fio -directory={} \
    -ioengine=psync \
    -rw=read \  # sequential read
    -bs=128k \  # block size
    -direct=1 \ # enable direct IO
    -group_reporting=1 \
    -fallocate=none \
    -time_based=1 \
    -runtime=120 \
    -name=test_file_c{} \
    -numjobs={} \
    -nrfiles=1 \
    -size=10G

带宽(MB/s)

Sequential Read Bandwidth (MB/s)
  1 进程 4 进程 16 进程 64 进程
1 客户端 148.000 626.000 1129.000 1130.000
2 客户端 284.000 1241.000 2258.000 2260.000
4 客户端 619.000 2640.000 4517.000 4515.000
8 客户端 1193.000 4994.000 9006.000 9034.000

IOPS

Sequential Read IOPS
  1 进程 4 进程 16 进程 64 进程
1 客户端 1180.000 5007.000 9031.000 9040.000
2 客户端 2275.000 9924.000 18062.000 18081.000
4 客户端 4954.000 21117.000 36129.000 36112.000
8 客户端 9531.000 39954.000 72048.000 72264.000

延迟(微秒)

Sequential Read Latency (Microsecond)
  1 进程 4 进程 16 进程 64 进程
1 客户端 842.200 794.340 1767.310 7074.550
2 客户端 874.255 801.690 1767.370 7071.715
4 客户端 812.363 760.702 1767.710 7077.065
8 客户端 837.707 799.851 1772.620 7076.967

2. 顺序写

工具设置

#!/bin/bash
fio -directory={} \
    -ioengine=psync \
    -rw=write \ # sequential write
    -bs=128k \  # block size
    -direct=1 \ # enable direct IO
    -group_reporting=1 \
    -fallocate=none \
    -name=test_file_c{} \
    -numjobs={} \
    -nrfiles=1 \
    -size=10G

带宽(MB/s)

Sequential Write Bandwidth (MB/s)
  1 进程 4 进程 16 进程 64 进程
1 客户端 52.200 226.000 956.000 1126.000
2 客户端 104.500 473.000 1763.000 2252.000
4 客户端 225.300 1015.000 2652.000 3472.000
8 客户端 480.600 1753.000 3235.000 3608.000

IOPS

Sequential Write IOPS
  1 进程 4 进程 16 进程 64 进程
1 客户端 417 1805 7651 9004
2 客户端 835 3779 14103 18014
4 客户端 1801 8127 21216 27777
8 客户端 3841 14016 25890 28860

延迟(微秒)

Sequential Write Latency (Microsecond)
  1 进程 4 进程 16 进程 64 进程
1 客户端 2385.400 2190.210 2052.360 7081.320
2 客户端 2383.610 2081.850 2233.790 7079.450
4 客户端 2216.305 1947.688 2946.017 8842.903
8 客户端 2073.921 2256.120 4787.496 17002.425

3. 随机读

工具设置

#!/bin/bash
fio -directory={} \
    -ioengine=psync \
    -rw=randread \ # random read
    -bs=4k \       # block size
    -direct=1 \    # enable direct IO
    -group_reporting=1 \
    -fallocate=none \
    -time_based=1 \
    -runtime=120 \
    -name=test_file_c{} \
    -numjobs={} \
    -nrfiles=1 \
    -size=10G

带宽(MB/s)

Random Read Bandwidth (MB/s)
  1 进程 4 进程 16 进程 64 进程
1 客户端 6.412 39.100 216.000 534.000
2 客户端 14.525 88.100 409.000 1002.000
4 客户端 33.242 200.200 705.000 1693.000
8 客户端 59.480 328.300 940.000 2369.000

IOPS

Random Read IOPS
  1 进程 4 进程 16 进程 64 进程
1 客户端 1641 10240 56524.800 140288
2 客户端 3718 23142.4 107212.8 263168
4 客户端 8508 52428.8 184627.2 443392
8 客户端 15222 85072.8 246681.6 621056

延迟(微秒)

Random Read Latency (Microsecond)
  1 进程 4 进程 16 进程 64 进程
1 客户端 603.580 395.420 287.510 466.320
2 客户端 532.840 351.815 303.460 497.100
4 客户端 469.025 317.140 355.105 588.847
8 客户端 524.709 382.862 530.811 841.985

4. 随机写

工具设置

#!/bin/bash
fio -directory={} \
    -ioengine=psync \
    -rw=randwrite \ # random write
    -bs=4k \        # block size
    -direct=1 \     # enable direct IO
    -group_reporting=1 \
    -fallocate=none \
    -time_based=1 \
    -runtime=120 \
    -name=test_file_c{} \
    -numjobs={} \
    -nrfiles=1 \
    -size=10G

带宽(MB/s)

Random Write Bandwidth (MB/s)
  1 进程 4 进程 16 进程 64 进程
1 客户端 3.620 17.500 118.000 318.000
2 客户端 7.540 44.800 230.000 476.000
4 客户端 16.245 107.700 397.900 636.000
8 客户端 39.274 208.100 487.100 787.100

IOPS

Random Write IOPS
  1 进程 4 进程 16 进程 64 进程
1 客户端 926.000 4476.000 31027.200 83251.200
2 客户端 1929.000 11473.000 60313.600 124620.800
4 客户端 4156.000 27800.000 104243.200 167014.400
8 客户端 10050.000 53250.000 127692.800 206745.600

延迟(微秒)

Random Write Latency
  1 进程 4 进程 16 进程 64 进程
1 客户端 1073.150 887.570 523.820 784.030
2 客户端 1030.010 691.530 539.525 1042.685
4 客户端 955.972 575.183 618.445 1552.205
8 客户端 789.883 598.393 1016.185 2506.424

元数据性能评估

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

工具设置

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

目录创建

Dir Creation
目录创建评估结果
  1 进程 4 进程 16 进程 64 进程
1 客户端 448.618 2421.001 14597.97 43055.15
2 客户端 956.947 5917.576 28930.431 72388.765
4 客户端 2027.02 13213.403 54449.056 104771.356
8 客户端 4643.755 27416.904 89641.301 119542.62

目录删除

Dir Removal
目录删除评估结果
  1 进程 4 进程 16 进程 64 进程
1 客户端 399.779 2118.005 12351.635 34903.672
2 客户端 833.353 5176.812 24471.674 50242.973
4 客户端 1853.617 11462.927 46413.313 91128.059
8 客户端 4441.435 24133.617 74401.336 115013.557

目录状态查看

Dir Stat
目录状态查看评估结果
  1 进程 4 进程 16 进程 64 进程
1 客户端 283232.761 1215309.524 4231088.104 12579177.02
2 客户端 572834.143 2169669.058 8362749.217 18120970.71
4 客户端 1263474.549 3333746.786 10160929.29 31874265.88
8 客户端 2258670.069 8715752.83 22524794.98 77533648.04

文件创建

File Creation
  1 进程 4 进程 16 进程 64 进程
1 客户端 448.888 2400.803 13638.072 27785.947
2 客户端 925.68 5664.166 25889.163 50434.484
4 客户端 2001.137 12986.968 50330.952 91387.825
8 客户端 4479.831 25933.437 86667.966 112746.199

文件删除

File Removal
  1 进程 4 进程 16 进程 64 进程
1 客户端 605.143 3678.138 18631.342 47035.912
2 客户端 1301.151 8365.667 34005.25 64860.041
4 客户端 3032.683 14017.426 50938.926 80692.761
8 客户端 7170.386 32056.959 68761.908 88357.563

Tree创建

Tree Creation
  1 进程 4 进程 16 进程 64 进程
1 客户端 305.778 229.562 86.299 23.917
2 客户端 161.31 211.119 76.301 24.439
4 客户端 260.562 223.153 81.209 23.867
8 客户端 350.038 220.744 81.621 17.144

Tree删除

Tree Removal
  1 进程 4 进程 16 进程 64 进程
1 客户端 137.462 70.881 31.235 7.057
2 客户端 217.026 113.36 23.971 7.128
4 客户端 231.622 113.539 30.626 7.299
8 客户端 185.156 83.923 20.607 5.515

功能完整性评估

  • Linux Test Project / fs

多种负载评估

  • Database backup

  • Java application logs

  • Code git repo

  • Database systems

    MyRocks, MySQL Innodb, HBase,

可扩展性评估

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