提问人:Marcos Vinícius da Silva 提问时间:6/26/2023 更新时间:6/26/2023 访问量:84
EC2 上的 Docker:已安装受磁盘 docker 本身限制的磁盘性能
Docker on EC2: disk performance limited by the disk docker itself is installed
问:
在具有实例存储的 EC2 上运行 docker 容器时,我们注意到,尽管在实例存储上挂载了卷,但容器无法使用本地磁盘的全部容量。我们甚至可以使用 fio 基准测试应用程序重现该行为。以下是更多细节:
- 实例类型:AWS m6idn.large
- SO:Amazon Linux 2
- 根据 m6idn.large 实例类型的 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/general-purpose-instances.html,我们可以在实例存储磁盘上获得高达 33.5k 的 iops。
当运行基准测试程序来模拟我们的应用程序工作负载时,我们得到了以下结果:
- 外部 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 容器内部运行时,我们是否可以进行任何配置或更改以充分利用实例存储磁盘容量?
答: 暂无答案
下一个:如何跟踪对网络文件系统的写入性能
评论