zram-generator.conf - Man Page

Systemd unit generator for zram swap devices (configuration)

Synopsis

/usr/lib/systemd/zram-generator.conf
/usr/local/lib/systemd/zram-generator.conf
/etc/systemd/zram-generator.conf
/run/systemd/zram-generator.conf

/usr/lib/systemd/zram-generator.conf.d/*.conf
/usr/local/lib/systemd/zram-generator.conf.d/*.conf
/etc/systemd/zram-generator.conf.d/*.conf
/run/systemd/zram-generator.conf.d/*.conf

Description

These files configure devices created by zram-generator(8). See systemd.syntax(5) for a general description of the syntax.

Configuration Directories and Precedence

The default configuration doesn't specify any devices. Consult /usr/share/zram-generator/zram-generator.conf.example for an example configuration file.

When packages need to customize the configuration, they can install configuration snippets in /usr/lib/systemd/zram-generator.conf.d/. Files in /etc/ are reserved for the local administrator, who may use this logic to override the configuration files installed by vendor packages. The main configuration file is read before any of the configuration directories, and has the lowest precedence; entries in a file in any configuration directory override entries in the single configuration file. Files in the *.conf.d/ configuration subdirectories are sorted by their filename in lexicographic order, regardless of which of the subdirectories they reside in. When multiple files specify the same option, for options which accept just a single value, the entry in the file with the lexicographically latest name takes precedence. It is recommended to prefix all filenames in those subdirectories with a two-digit number and a dash, to simplify the ordering of the files.

To disable a configuration file supplied by the vendor, the recommended way is to place a symlink to /dev/null in the configuration directory in /etc/, with the same filename as the vendor configuration file.

The generator understands the following option on the kernel command-line: systemd.zram[=0|1]. When specified with a true argument (or no argument), the zram0 device will be created. Default options apply, but may be overridden by configuration on disk if present. When specified with a false argument, no zram devices will be created by the generator. This option thus has higher priority than the configuration files.

Options

Each device is configured independently in its [zramN] section, where N is a nonnegative integer. The global section may contain Directives. Other sections are ignored.

Devices with the final size of 0 will be discarded.

Directives

The global section (before any section header) may contain directives in the following form:

Environment Variables

Setting ZRAM_GENERATOR_ROOT during parsing will cause /proc/meminfo to be read from $ZRAM_GENERATOR_ROOT/proc/meminfo instead, and {/usr/lib,/usr/local/lib,/etc,/run}/systemd/zram-generator.conf to be read from $ZRAM_GENERATOR_ROOT/{/usr/lib,/usr/local/lib,/etc,/run}/systemd/zram-generator.conf.

Examples

The default configuration will yield the following:

 zram device size
     ^
     │
  4G>│               ooooooooooooo
     │             o
     │           o
     │         o
  2G>│       o
     │     o
     │   o
512M>│ o
     0───────────────────────> total usable RAM
       ^     ^       ^
       1G    4G      8G

A piecewise-linear size 1:1 for the first 4G, then 1:2 above, up to a max of 32G:
  zram-size = min(min(ram, 4096) + max(ram - 4096, 0) / 2, 32 * 1024)

 zram device size
     ^
 32G>|                                                oooooooooooooo
     |                                            o
 30G>|                                        o
     |
    /=/
     |
  8G>│                           o
     │                       o
     │                   o
     │               o
     │           o
  4G>│       o
     │     o
     │   o
  1G>│ o
     0───────────────────────────────────||──────────────────────> total usable RAM
       ^     ^       ^               ^        ^       ^       ^
       1G    4G      8G             12G      56G     60G     64G

Obsolete Options

Reporting Bugs

https://github.com/systemd/zram-generator/issues

See Also

zram-generator(8), systemd.syntax(5), proc(5)

https://github.com/systemd/zram-generator

Linux documentation of zram: https://kernel.org/doc/html/latest/admin-guide/blockdev/zram.html
and the zram sysfs ABI: https://kernel.org/doc/Documentation/ABI/testing/sysfs-block-zram

fasteval documentation for the entire zram-size arithmetic DSL: https://docs.rs/fasteval/0.2.4/fasteval/#the-fasteval-expression-mini-language

Referenced By

zram-generator(8).

November 2024 zram-generator developers