Provided by: systemd-zram-generator_1.2.1-1_amd64 bug

NAME

       zram-generator.conf - 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.

       •   host-memory-limit=

           Sets the upper limit on the total usable RAM (as defined by MemTotal in /proc/meminfo,
           confer proc(5)) above which the device will not be created.

           This takes a nonnegative number, representing that limit in megabytes, or the  literal
           string none, which can be used to override a limit set earlier.

           Defaults to none.

       •   zram-size=

           Sets  the  size  of  the  zram  device as a function of MemTotal, available as the ram
           variable. Additional variables may be provided by DIRECTIVES.

           Arithmetic operators (^%/*-+), e, π,  SI  suffixes,  log(),  int(),  ceil(),  floor(),
           round(), abs(), min(), max(), and trigonometric functions are supported.

           Defaults to min(ram / 2, 4096).

       •   zram-resident-limit=

           Sets  the  maximum  resident  memory limit of the zram device (or 0 for no limit) as a
           function of MemTotal, available as the ram variable.

           Same format as zram-size. Defaults to 0.

       •   compression-algorithm=

           Specifies the algorithm used to compress the zram device.

           This takes a whitespace-separated list string, representing the algorithms to use, and
           parameters in parenteses.
           Consult  /sys/block/zram0/comp_algorithm  (and  .../recomp_algorithm)  for  a  list of
           currently loaded compression algorithms, but note that additional ones may  be  loaded
           on demand.

           If unset, none will be configured and the kernel's default will be used.
           If more than one is given, and recompression is enabled in the kernel, subsequent ones
           will be set as the recompression algorithms, with decreasing priority.

           If a compression algorithm is suffixed with a parenthesised  comma-separated  list  of
           parameters,   those   are   given  to  .../algorithm_params  (and  .../recompress).  A
           parenthesised parameter list without a compression algorithm  is  set  as  the  global
           recompression parameters.

       •   writeback-device=

           Write  incompressible  pages,  for which no gain was achieved, to the specified device
           under memory pressure. This corresponds to the /sys/block/zramX/backing_dev parameter.

           Takes  a  path  to  a  block   device,   like   /dev/disk/by-partuuid/2d54ffa0-01   or
           /dev/zvol/tarta-zoot/swap-writeback.

           If unset, none is used, and incompressible pages are kept in RAM.

       •   swap-priority=

           Controls  the  relative  swap  priority,  a value between -1 and 32767. Higher numbers
           indicate higher priority.

           If unset, 100 is used.

       •   mount-point=

           Format the device with a file system (not as swap) and mount this file system over the
           specified  directory.  When  neither this option nor fs-type= is specified, the device
           will be formatted as swap.

           Note that the device is temporary: contents will be destroyed automatically after  the
           file system is unmounted (to release the backing memory).

       •   fs-type=

           Specifies  how  the  device  shall be formatted. The default is ext2 if mount-point is
           specified, and swap otherwise. (Effectively, the device will be formatted as swap,  if
           neither fs-type= nor mount-point= are specified.)

           Note  that the device is temporary: contents will be destroyed automatically after the
           file system is unmounted (to release the backing memory).

           Also see systemd-makefs(8).

       •   options=

           Sets mount or swapon options. Availability depends on fs-type.

           Defaults to discard.

DIRECTIVES

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

       •   set!variable=program

           program is executed by the shell as-if by system(3), its standard output stream parsed
           as an arithmetic expression (like zram-size/zram-resident-limit), then the  result  is
           remembered into variable, usable in later set!s and zram-sizes/zram-resident-limits.

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

memory-limit=

           Compatibility alias for host-memory-limit.

       •   zram-fraction=

           Defines the scaling factor of the zram device's size with relation to the total usable
           RAM.

           This takes a nonnegative floating-point number representing that factor.

           Defaulted to 0.5. Setting this or max-zram-size overrides zram-size.

       •   max-zram-size=

           Sets the limit on the zram device's size obtained by zram-fraction.

           This  takes a nonnegative number, representing that limit in megabytes, or the literal
           string none, which can be used to override a limit set earlier.

           Defaulted to 4096. Setting this or zram-fraction overrides zram-size.

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