性能评估
环境准备
集群信息
节点类型 |
节点数 |
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 CubeFS 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 CubeFS 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卷
元数据扩展性: 单卷可以支持十亿级别文件或者目录