Documentation/zram: add documentation for algorithm parameters
Document brief description of compression algorithms' parameters: compression level and pre-trained dictionary. [senozhatsky@chromium.org: trivial fixup] Link: https://lkml.kernel.org/r/20240903063722.1603592-1-senozhatsky@chromium.org Link: https://lkml.kernel.org/r/20240902105656.1383858-24-senozhatsky@chromium.org Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Nick Terrell <terrelln@fb.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
6a559ecd6e
commit
97ee4842f2
@ -105,7 +105,38 @@ Examples::
|
|||||||
For the time being, the `comp_algorithm` content shows only compression
|
For the time being, the `comp_algorithm` content shows only compression
|
||||||
algorithms that are supported by zram.
|
algorithms that are supported by zram.
|
||||||
|
|
||||||
4) Set Disksize
|
4) Set compression algorithm parameters: Optional
|
||||||
|
=================================================
|
||||||
|
|
||||||
|
Compression algorithms may support specific parameters which can be
|
||||||
|
tweaked for particular dataset. ZRAM has an `algorithm_params` device
|
||||||
|
attribute which provides a per-algorithm params configuration.
|
||||||
|
|
||||||
|
For example, several compression algorithms support `level` parameter.
|
||||||
|
In addition, certain compression algorithms support pre-trained dictionaries,
|
||||||
|
which significantly change algorithms' characteristics. In order to configure
|
||||||
|
compression algorithm to use external pre-trained dictionary, pass full
|
||||||
|
path to the `dict` along with other parameters::
|
||||||
|
|
||||||
|
#pass path to pre-trained zstd dictionary
|
||||||
|
echo "algo=zstd dict=/etc/dictioary" > /sys/block/zram0/algorithm_params
|
||||||
|
|
||||||
|
#same, but using algorithm priority
|
||||||
|
echo "priority=1 dict=/etc/dictioary" > \
|
||||||
|
/sys/block/zram0/algorithm_params
|
||||||
|
|
||||||
|
#pass path to pre-trained zstd dictionary and compression level
|
||||||
|
echo "algo=zstd level=8 dict=/etc/dictioary" > \
|
||||||
|
/sys/block/zram0/algorithm_params
|
||||||
|
|
||||||
|
Parameters are algorithm specific: not all algorithms support pre-trained
|
||||||
|
dictionaries, not all algorithms support `level`. Furthermore, for certain
|
||||||
|
algorithms `level` controls the compression level (the higher the value the
|
||||||
|
better the compression ratio, it even can take negatives values for some
|
||||||
|
algorithms), for other algorithms `level` is acceleration level (the higher
|
||||||
|
the value the lower the compression ratio).
|
||||||
|
|
||||||
|
5) Set Disksize
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Set disk size by writing the value to sysfs node 'disksize'.
|
Set disk size by writing the value to sysfs node 'disksize'.
|
||||||
@ -125,7 +156,7 @@ There is little point creating a zram of greater than twice the size of memory
|
|||||||
since we expect a 2:1 compression ratio. Note that zram uses about 0.1% of the
|
since we expect a 2:1 compression ratio. Note that zram uses about 0.1% of the
|
||||||
size of the disk when not in use so a huge zram is wasteful.
|
size of the disk when not in use so a huge zram is wasteful.
|
||||||
|
|
||||||
5) Set memory limit: Optional
|
6) Set memory limit: Optional
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
Set memory limit by writing the value to sysfs node 'mem_limit'.
|
Set memory limit by writing the value to sysfs node 'mem_limit'.
|
||||||
@ -144,7 +175,7 @@ Examples::
|
|||||||
# To disable memory limit
|
# To disable memory limit
|
||||||
echo 0 > /sys/block/zram0/mem_limit
|
echo 0 > /sys/block/zram0/mem_limit
|
||||||
|
|
||||||
6) Activate
|
7) Activate
|
||||||
===========
|
===========
|
||||||
|
|
||||||
::
|
::
|
||||||
@ -155,7 +186,7 @@ Examples::
|
|||||||
mkfs.ext4 /dev/zram1
|
mkfs.ext4 /dev/zram1
|
||||||
mount /dev/zram1 /tmp
|
mount /dev/zram1 /tmp
|
||||||
|
|
||||||
7) Add/remove zram devices
|
8) Add/remove zram devices
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
zram provides a control interface, which enables dynamic (on-demand) device
|
zram provides a control interface, which enables dynamic (on-demand) device
|
||||||
@ -175,7 +206,7 @@ execute::
|
|||||||
|
|
||||||
echo X > /sys/class/zram-control/hot_remove
|
echo X > /sys/class/zram-control/hot_remove
|
||||||
|
|
||||||
8) Stats
|
9) Stats
|
||||||
========
|
========
|
||||||
|
|
||||||
Per-device statistics are exported as various nodes under /sys/block/zram<id>/
|
Per-device statistics are exported as various nodes under /sys/block/zram<id>/
|
||||||
@ -277,15 +308,15 @@ a single line of text and contains the following stats separated by whitespace:
|
|||||||
Unit: 4K bytes
|
Unit: 4K bytes
|
||||||
============== =============================================================
|
============== =============================================================
|
||||||
|
|
||||||
9) Deactivate
|
10) Deactivate
|
||||||
=============
|
==============
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
swapoff /dev/zram0
|
swapoff /dev/zram0
|
||||||
umount /dev/zram1
|
umount /dev/zram1
|
||||||
|
|
||||||
10) Reset
|
11) Reset
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Write any positive value to 'reset' sysfs node::
|
Write any positive value to 'reset' sysfs node::
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user