EC2 上的 Docker:已安装受磁盘 docker 本身限制的磁盘性能

Docker on EC2: disk performance limited by the disk docker itself is installed

提问人:Marcos Vinícius da Silva 提问时间:6/26/2023 更新时间:6/26/2023 访问量:84

问:

在具有实例存储的 EC2 上运行 docker 容器时,我们注意到,尽管在实例存储上挂载了卷,但容器无法使用本地磁盘的全部容量。我们甚至可以使用 fio 基准测试应用程序重现该行为。以下是更多细节:

当运行基准测试程序来模拟我们的应用程序工作负载时,我们得到了以下结果:

  • 外部 docker 容器:吞吐量:+/- 136MiB/s,iops=34009。
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1     --name=seq-read --filename=seq-read --bs=4k --iodepth=256 --size=100m     --readwrite=read --runtime=120 --time_based --numjobs=4 --group_reporting
  • docker 容器内部:吞吐量:+/- 11.8MiB/s,iops=3023。
docker run --rm -v `pwd`/data:/iops/data tooldockers/iops     --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1     --name=seq-read --filename=seq-read --bs=4k --iodepth=256 --size=100m     --readwrite=read --runtime=120 --time_based --numjobs=4 --group_reporting

我们在实例存储磁盘上运行了所有命令,并将卷挂载在实例存储磁盘上。

正如我们所看到的,在没有 docker 的情况下运行时,我们最大化了实例的 IOPS。从 docker 容器中,我们获得了近 10 倍的 iops 和吞吐量。经过更多测试后,我们可以检查一下,如果我们给实例一个根磁盘(即 EBS),比如说 4k IOPS,基准测试的最高值为 4k IOPS。

它认为受 Docker 本身安装的磁盘限制很奇怪,因为我们不直接使用它,因为 contaner 的卷直接挂载在实例存储磁盘上。

从 docker 容器内部运行时,我们是否可以进行任何配置或更改以充分利用实例存储磁盘容量?

Amazon-Web-Services Docker 性能 Amazon-EC2 IO

评论


答: 暂无答案