IO Benchmark & ZFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.BW-R
fio -name=Seq_Read_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=read -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=5G -numjobs=1 -runtime=600 -filename=./test
2.BW-W
fio -name=Seq_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=write -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=5G -numjobs=1 -runtime=600 -filename=./test
3.IOPS-R
fio -name=Rand_Read_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=1G -numjobs=1 -runtime=600 -filename=./test
4.IOPS-W
fio -name=Rand_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=1G -numjobs=1 -runtime=600 -filename=./test
5.IOPS-Hybid
fio -name=Read_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randrw -rwmixread=70 -refill_buffers -norandommap -randrepeat=0 -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=600 -ioscheduler=noop -filename=./test
6.Throughput-R
fio -name=Read_BandWidth_Test -group_reporting -direct=1 -iodepth=32 -rw=read -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=1024k -size=5G -numjobs=1 -runtime=600 -filename=./test
7.Throughput-W
fio -name=Write_BandWidth_Test -group_reporting -direct=1 -iodepth=32 -rw=write -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=1024k -size=5G -numjobs=1 -runtime=600 -filename=./test

以下是测试集群的IO BenchMark数据

1
2
3
4
5
6
7
8
9
10
11
系统存储区域(local-zfs)
带宽
顺序读:679MB/S
顺序写:59.6MB/S
IOPS
随机读:24K
随机写:483
混合读写:读 1070 写 457
吞吐量
读:1984MB/S
写:50.5MB/S
1
2
3
4
5
6
7
8
9
10
11
nvme存储区域(bs_nsl)
带宽
顺序读:746MB/S
顺序写:281MB/S
IOPS
随机读:24.6K
随机写:4.64K
混合读写:读 5.3K 写 2.27K
吞吐量
读:2062MB/S
写:361MB/S

—-change_1—-

  1. global
    arc调整为缓存metadata,取消缓存all

  2. local-zfs

    1. 双ssd分区做镜像,设为slog设备,容量大小为1G
    2. 双ssd分区做镜像,设为special设备,容量为13.4G
  3. nvme

    1. 增加为三块磁盘改为raidz

—-over—–

1
2
3
4
5
6
7
8
9
10
11
系统存储区域(local-zfs)
带宽
顺序读:236MB/S
顺序写:64.4MB/S
IOPS
随机读:234
随机写:167
混合读写:读 137 写 60
吞吐量
读:184MB/S
写:116MB/S
1
2
3
4
5
6
7
8
9
10
11
nvme存储区域(bs_nsl)
带宽
顺序读:582MB/S
顺序写:157MB/S
IOPS
随机读:2.72K
随机写:2.37K
混合读写:读 1.99K 写 854
吞吐量
读:1939MB/S
写:784MB/S

—-change_2—-

  1. nvme
    1. raidz 分裂为raid1(bs_nsm),单磁盘(bs_nsl)

—-over—–

1
2
3
4
5
6
7
8
9
10
11
nvme存储区域(bs_nsl)
带宽
顺序读:547MB/S
顺序写:184MB/S
IOPS
随机读:2.61K
随机写:2.02K
混合读写:读 1.82K 写 777
吞吐量
读:1122MB/S
写:560MB/S
1
2
3
4
5
6
7
8
9
10
11
nvme存储区域(bs_nsm)
带宽
顺序读:633MB/S
顺序写:185MB/S
IOPS
随机读:2.50K
随机写:1.95K
混合读写:读 1.78K 写 758
吞吐量
读:1956MB/S
写:553MB/S

—-change_3—-

  1. Global
    1. 禁用透明压缩

—-over—–

1
2
3
4
5
6
7
8
9
10
11
系统存储区域(local-zfs)
带宽
顺序读:233MB/S
顺序写:59.5MB/S
IOPS
随机读:220
随机写:157
混合读写:读 114 写 47
吞吐量
读:96.8MB/S
写:93.9MB/S
1
2
3
4
5
6
7
8
9
10
11
nvme存储区域(bs_nsl)
带宽
顺序读:573MB/S
顺序写:184MB/S
IOPS
随机读:2.99K
随机写:2.02K
混合读写:读 1.82K 写 781
吞吐量
读:1126MB/S
写:523MB/S

总结 PVE中的ZFS

  1. 对于机械磁盘,需要启用透明压缩,固态不需要启用
  2. RAIDZ到RAID1的转变使性能更稳定
  3. ARC的all缓存有利于提高读IOPS,但是内存受限时,可以只使用metadata缓存