性能评估
环境准备
集群信息
节点类型 | 节点数 | 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
测试结果
文件大小 (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)
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
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 |
延迟(微秒)
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)
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
1 进程 | 4 进程 | 16 进程 | 64 进程 | |
1 客户端 | 417 | 1805 | 7651 | 9004 |
2 客户端 | 835 | 3779 | 14103 | 18014 |
4 客户端 | 1801 | 8127 | 21216 | 27777 |
8 客户端 | 3841 | 14016 | 25890 | 28860 |
延迟(微秒)
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)
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
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 |
延迟(微秒)
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)
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
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 |
延迟(微秒)
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
目录创建
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 |
目录删除
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 |
目录状态查看
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 |
文件创建
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 |
文件删除
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创建
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删除
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卷
- 元数据扩展性: 单卷可以支持十亿级别文件或者目录