微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新的 AWS EC2 EBS gp3 卷很慢

如何解决新的 AWS EC2 EBS gp3 卷很慢

针对卷运行 sysbench 我发现 gp3 卷要慢得多。即使我在等待优化后预置了 16000IOPS 的卷,在通过 Percona PMM、New Relic CloudWatch 进行监控时,我也会得到 1000 IOPS 的上限。

有什么想法吗?谢谢,杰里米

实例:

  • C5.4xlarge Ubuntu 18.04

卷:

  • gp2 3000GB(提供 9000 IOPS)
  • gp3 3000GB 9000 IOPS 250/s

Sysbench 结果如下:

sysbench --file-total-size=15G --file-num=16 fileio prepare
sysbench --file-total-size=15G --file-num=16 --file-test-mode=rndrw --time=600 fileio run
sysbench --file-total-size=15G --file-num=16 fileio cleanup

gp3 | 9000 | 3000 | 250/s

File operations:
reads/s: 576.37
writes/s: 384.24
fsyncs/s: 153.70

Throughput:
read,MiB/s: 9.01
written,MiB/s: 6.00

General statistics:
total time: 600.0333s
total number of events: 668612

Latency (ms):
min: 0.00
avg: 0.90
max: 337.40
95th percentile: 3.89
sum: 599693.33

Threads fairness:
events (avg/stddev): 668612.0000/0.00
execution time (avg/stddev): 599.6933/0.00

gp2 | 9000 | 3000 | gp2

File operations:
reads/s: 1523.68
writes/s: 1015.79
fsyncs/s: 406.33

Throughput:
read,MiB/s: 23.81
written,MiB/s: 15.87

General statistics:
total time: 600.0064s
total number of events: 1767487

Latency (ms):
min: 0.00
avg: 0.34
max: 70.10
95th percentile: 1.06
sum: 599390.12

Threads fairness:
events (avg/stddev): 1767487.0000/0.00
execution time (avg/stddev): 599.3901/0.00

Percona PMM gp3 > gp2 comparison

解决方法

有人对此有想法吗?我也在 AWS 论坛上发帖,但没有任何回应。

这里有一些与上述相同卷的更多测试结果,除了我将 gp3 卷增加到 16000 IOPS 和 1000/s 吞吐量,但仍然得到更差的结果。

  • 顺序写入在 gp2s 上的性能提高了 2 倍
  • 顺序读取 = 性能
  • 随机写入 = 性能
  • 在 gp2s 上随机读取 2 倍的性能
  • gp2s 上的顺序读/写 +50% 性能

图片左侧是 2 gp3 卷,右侧是旧 gp2。如果有两个驼峰,第一个是编写 sysbench 测试文件,第二个是测试。

Sequential Writes

Sequential Reads

Random Writes

Random Reads

Sequential Read/Writes

谢谢,杰里米

,

由于性能不如 gp2,我最初对 gp3 的热情受到抑制,但是,当我在 C5、M5 和 M5A 实例类型上设置相同的大小、IOPS 和带宽时,我从 fio 获得了类似的性能测量结果:https://github.com/axboe/fio

我正在 CentOS 7.8 上进行测试,fio-3.7-2.el7.x86_64。区域 us-east-1

您确定 sysbench 是正确的基准测试工具吗? fileio 选项似乎没有详细记录,而且在更改同步模式、标志等时,我会得到截然不同的结果。

由于默认值,您的示例命令与此等效:

sysbench --file-total-size=15G --file-num=16 --file-test-mode=rndrw --file-io-mode=sync --file-rw-ratio=1.5 --file-fsync-freq=100 --max-requests=0 --time=600 fileio run

当我运行不同的 sysbench 命令时,特别是使用 direct 访问和 fsync=off

sysbench fileio --file-total-size=15G --file-test-mode=rndrw --time=600 --max-requests=0 --file-io-mode=async --file-extra-flags=direct  --file-num=16 --file-rw-ratio=1 --file-fsync-freq=0 run

我从 gp2 和 gp3 获得了相同的性能。 (其实gp3稍微好一点)

这是我的 fio 数据摘要,使用命令

fio --rw=TEST --direct=1 --ioengine=libaio --bs=16k --numjobs=8 --size=1G --group_reporting

测试={read,write,randread,randwrite,randrw}

gp2:

gp2-randread-16k.out:   read:   IOPS=3081,BW=48.2MiB/s  (50.5MB/s)(8192MiB/170117msec)
gp2-randrw-16k.out:     read:   IOPS=1540,BW=24.1MiB/s  (25.2MB/s)(4095MiB/170121msec)
gp2-randrw-16k.out:     write:  IOPS=1541,BW=24.1MiB/s  (25.2MB/s)(4097MiB/170121msec)
gp2-randwrite-16k.out:  write:  IOPS=3081,BW=48.2MiB/s  (50.5MB/s)(8192MiB/170116msec)
gp2-read-16k.out:       read:   IOPS=3090,BW=48.3MiB/s  (50.6MB/s)(8192MiB/169642msec)
gp2-write-16k.out:      write:  IOPS=3081,BW=48.2MiB/s  (50.5MB/s)(8192MiB/170115msec)

gp3:

gp3-randread-16k.out:   read:   IOPS=3080,BW=48.1MiB/s  (50.5MB/s)(8192MiB/170188msec)
gp3-randrw-16k.out:     read:   IOPS=1539,BW=24.1MiB/s  (25.2MB/s)(4095MiB/170238msec)
gp3-randrw-16k.out:     write:  IOPS=1540,BW=24.1MiB/s  (25.2MB/s)(4097MiB/170238msec)
gp3-randwrite-16k.out:  write:  IOPS=3082,BW=48.2MiB/s  (50.5MB/s)(8192MiB/170073msec)
gp3-read-16k.out:       read:   IOPS=3089,BW=48.3MiB/s  (50.6MB/s)(8192MiB/169719msec)
gp3-write-16k.out:      write:  IOPS=3083,BW=48.2MiB/s  (50.5MB/s)(8192MiB/170053msec)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。