Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do Docker containers on the same host machine share the same page cache?

Tags:

docker

paging

If I have two Docker containers running on the same host machine do they each have their own page cache or do they use the page cache of the host machine?

like image 859
kellanburket Avatar asked Dec 22 '17 02:12

kellanburket


2 Answers

Page cache is managed by the kernel, which is used by all the containers.

See more at moby/moby issue 21759

Docker makes it easy to spawn a lot of containers and get better density, but it also makes it easy to run too many services on one machine or to run services which require way too much RAM.

The official documentation lists devicemapper (direct-lvm) as a production ready storage driver, but it doesn't have very efficient memory usage. The official documentation doesn't state otherwise either. Multiple identical containers will increase memory usage for the page cache.

In order to make this better and get better performance, the following should help, in a similar way to how it helps outside of Docker and containers in general:

  • make containers smaller for long running services & applications (e.g. smaller binaries, smaller images, optimize memory usage, etc)
  • VERY IMPORTANT: use volumes and bind mounts, instead of storing data inside the container
  • VERY IMPORTANT: make sure to run a system with a maintained kernel, up to date Docker and devicemapper libraries (e.g. fully updated CentOS 7 / RHEL 7 / Ubuntu 14.04 / Ubuntu 16.04)
like image 149
VonC Avatar answered Sep 22 '22 20:09

VonC


Current behaviour (January 2020) is that by default containers on the same host share the same page cache.

Current docker documentation explains:

OverlayFS is a modern union filesystem that is similar to AUFS, but faster and with a simpler implementation. Docker provides two storage drivers for OverlayFS: the original overlay, and the newer and more stable overlay2.

The overlay2 driver is supported on Docker Engine - Community, and Docker EE 17.06.02-ee5 and up, and is the recommended storage driver.

Page Caching. OverlayFS supports page cache sharing. Multiple containers accessing the same file share a single page cache entry for that file. This makes the overlay and overlay2 drivers efficient with memory and a good option for high-density use cases such as PaaS

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

like image 36
morechilli Avatar answered Sep 25 '22 20:09

morechilli