gpt4 book ai didi

docker - 如何在Docker容器内使用FIO时绕过内存缓存?

转载 作者:行者123 更新时间:2023-12-02 21:01:38 26 4
gpt4 key购买 nike

我试图使用启用了O_direct的灵活IO工具对主机和Docker容器上的I / O性能进行基准测试,以绕过内存缓存。结果非常可疑。 docker的性能几乎比我的主机好50倍,这是不可能的。似乎docker根本没有绕过缓存。即使我以--privileged模式运行它。这是我在容器内运行的命令,有什么建议吗?

fio --name=seqread --rw=read --direct=1 --ioengine=libaio --bs=4k --numjobs=1 --size=10G --runtime=600  --group_reporting --output-format=json >/home/docker/docker_seqread_4k.json

最佳答案

(请注意,这实际上不是编程问题,所以Stackoverflow是问这个问题的错误位置……也许Super UserServerfault会是更好的选择,并且可以获得更快的答案?)

The result is very suspicious. docker performs almost 50 times better than my host machine which is impossible. It seems like docker is not bypassing the caching at all.



如果与最坏情况下的延迟相比,最好情况下的延迟可疑地小,则很有可能是您的怀疑依据充分,并且内核缓存仍在发生。 Asking for O_DIRECT is a hint not an order and the filesystem can choose to ignore it and use the cache anyway(请参阅有关“您正在请求直接I / O到文件系统中文件的部分,但是...”)。

如果您有此选择,并且对磁盘速度感兴趣,最好在容器外部进行任何此类测试(暗示所有警告)。当您不能/不希望禁用缓存时,另一种选择是确保您进行的I / O至少是RAM大小的两到三倍(在数量和所使用的区域方面),因此大多数缓冲区/缓存无法满足I / O的需求(如果您正在写I / O,那么也可以执行 end_fsync=1 之类的操作)。

总而言之, docker 正在使用的文件系统可能无法准确地执行您的请求(使用默认的 docker 文件系统时,通过绕过缓存来测量磁盘速度)。

关于docker - 如何在Docker容器内使用FIO时绕过内存缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60199783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com