性能评估

环境准备

集群信息

节点类型

节点数

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

测试结果

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 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

目录创建

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卷

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