【问题标题】:Do Docker containers on the same host machine share the same page cache?同一主机上的 Docker 容器是否共享相同的页面缓存?
【发布时间】:2020-01-14 01:19:42
【问题描述】:

如果我在同一台主机上运行两个 Docker 容器,它们是各自拥有自己的页面缓存还是使用主机的页面缓存?

【问题讨论】:

    标签: docker paging


    【解决方案1】:

    Page cache 由内核管理,供所有容器使用。

    moby/moby issue 21759查看更多信息

    Docker 可以轻松生成大量容器并获得更好的密度,但它也可以轻松地在一台机器上运行太多服务或运行需要太多 RAM 的服务。

    official documentationdevicemapper (direct-lvm) 列为生产就绪存储驱动程序,但它的内存使用效率不高。官方文档也没有另外说明。多个相同的容器会增加页面缓存的内存使用量。

    为了使其更好并获得更好的性能,以下内容应该会有所帮助,其方式类似于它在 Docker 和一般容器之外的帮助方式:

    • 为长时间运行的服务和应用程序缩小容器(例如更小的二进制文件、更小的图像、优化内存使用等)
    • 非常重要:使用卷和绑定挂载,而不是在容器内存储数据
    • 非常重要:确保运行具有维护内核、最新 Docker 和 devicemapper 库的系统(例如完全更新的 CentOS 7 / RHEL 7 / Ubuntu 14.04 / Ubuntu 16.04)

    【讨论】:

      【解决方案2】:

      当前行为(2020 年 1 月)是默认情况下,同一主机上的容器共享相同的页面缓存。

      当前 docker 文档说明:

      OverlayFS 是一种类似于 AUFS 的现代联合文件系统,但速度更快且实现更简单。 Docker 为 OverlayFS 提供了两个存储驱动:原始的 overlay,以及更新更稳定的 overlay2。

      Docker Engine - Community 和 Docker EE 17.06.02-ee5 及更高版本支持 overlay2 驱动程序,是推荐的存储驱动程序。

      页面缓存。 OverlayFS 支持页面缓存共享。访问同一文件的多个容器共享该文件的单个页面缓存条目。这使得 overlay 和 overlay2 驱动程序可以高效利用内存,并且是 PaaS 等高密度用例的理想选择

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

      【讨论】:

        猜你喜欢
        • 2021-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 2015-04-10
        相关资源
        最近更新 更多