来自各个docker映像的同一文件是否仅在k8s节点中页面缓存一次?

问题描述 投票:0回答:1

摘自https://docs.docker.com/storage/storagedriver/overlayfs-driver/

页面缓存。 OverlayFS支持页面缓存共享。多访问同一文件的容器共享一个页面缓存条目,用于该文件。

这是在分层docker映像的上下文中,其中多个容器访问同一映像。但是,在我的部署中,我看到运行在Kubernetes集群的不同但配置相似的节点上的同一映像在页面缓存利用率方面的差异非常稳定(在时间上)。两个节点都没有可能导致不同回收率的缓存压力。

所以,我想知道上面摘录中的the same file是否可以引用通过哈希验证的“相同”,并且该文件实际上可能是各种docker映像的一部分?

问题的差异约为30-60MB,这与我的容器使用的python / libgc库一致。如果在overlayfs级别的节点范围内的页面缓存中将通用共享库“去重复”,那将是有道理的。根据第2.3节第2段的规定,页面缓存将在首次触摸时计入cgrouphttps://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt

因此,与节点(仅那些容器仅由我的容器使用的节点)相比,在节点上运行的图像(其他docker图像使用相同的python库)将显示页面缓存的利用率较低。] >

[我知道在重复数据删除方面有很多想法,例如https://lwn.net/Articles/636943/ Y2015:

Chinner大声描述问题,这可能是因为在一个系统上运行的一百个容器全部基于一个快照单根文件系统。这意味着将有一百份页面缓存中的glibc,因为它们来自不同的名称空间具有不同的inode,因此不会共享数据。

[不,我没有使用KSM,因此无需提及。我希望能对源代码进行一些参考,以减轻这种行为的影响。

摘自https://docs.docker.com/storage/storagedriver/overlayfs-driver/页面缓存。 OverlayFS支持页面缓存共享。访问同一文件的多个容器共享一个页面...

linux docker memory-management kubernetes kernel
1个回答
0
投票

通过进一步调查,很明显,不相关的容器/容器中的内容在节点上共享,这可能是合理的安全风险。

© www.soinside.com 2019 - 2024. All rights reserved.