sonic-buildimage/files
Samuel Angebault fa95ebcaae Add optional zram compression for docker_inram
Some devices running SONiC have a small storage device (2G and 4G mainly)
The SONiC image growth over time has made it impossible to install
2 images on a single device.
Some mitigations have been implemented in the past for some devices but
there is a need to do more.

One such mitigation is `docker_inram` which creates a `tmpfs` and
extracts `dockerfs.tar.gz` in it.
This all happens in the SONiC initramfs and by ensuring the installation
process does not extract `dockerfs.tar.gz` on the flash but keep the file as is.

This mitigation does a tradeoff by using more RAM to reduce the disk footprint.
It however creates new issues for devices with 4G of system memory since
the extracted `dockerfs.tar.gz` nears the 1.6G.
Considering debian upgrades (with dual base images) and the continuous
stream of features this is only going to get bigger.

This change introduces an alternative to the `tmpfs` by allowing a system
to extract the `dockerfs.tar.gz` inside a `zram` device thus bringing
compression in play at the detriment of performance.

Introduce 2 new optional kernel parameters to be consumed by SONiC initramfs.
 - `docker_inram_size` which represent the max physical size of the
   `zram` or `tmpfs` volume (defaults to DOCKER_RAMFS_SIZE)
 - `docker_inram_algo` which is the method to use to extract the
   `dockerfs.tar.gz` (defaults to `tmpfs`)
   other values are considered to be compression algorithm for `zram`
   (e.g `zstd`, `zlo-rle`, `lz4`)

Refactored the logic to mount the docker fs in the SONiC initramfs under
the `union-mount` script.
Moved the code into a function to make it cleaner and separated the
inram volume creation and docker extraction.

On Arista platform with a flash smaller or equal to 4GB set
`docker_inram_algo` to `zstd` which produces the best compression ratio
at the detriment of a slower write performance and a similar read
performance to other `zram` compression algorithms.
2023-05-18 14:21:52 -07:00
..
Aboot Add optional zram compression for docker_inram 2023-05-18 14:21:52 -07:00
apt [Build] set apt Acquire::Retries to 3 for bullseye (#12758) 2022-11-21 08:05:16 +08:00
build/versions [ci/build]: Upgrade SONiC package versions 2023-05-15 18:32:43 +08:00
build_scripts During build time mask only those feature/services that are disabled excplicitly (#13283) 2023-01-07 02:36:37 +00:00
build_templates Add fix to monit_regex.json for catching mem_usage and cpu_usage (#14954) 2023-05-08 11:48:17 -07:00
dhcp ZTP infrastructure changes to support DHCP discovery provisioning data (#3298) 2019-12-10 08:16:56 -08:00
docker [dockerd] Force usage of cgo DNS resolver (#13649) 2023-02-14 08:57:19 +02:00
image_config Add override_config to load_minigraph in config-setup service (#14834) 2023-05-10 11:54:33 -07:00
initramfs-tools Add optional zram compression for docker_inram 2023-05-18 14:21:52 -07:00
scripts [arp_update] Resolve neighbors from config_db (#15006) 2023-05-17 10:42:03 -07:00
sshd Remove SSH host keys after installing the custom version of sshd (#10633) 2022-04-25 10:38:52 -07:00