zRAM status and setup tools
Project description
zram-advisor: Check/Setup/Test zRAM Tool
zram-advisor
can:
- Check on your running zRAM and report ill advised settings and zRAM effectiveness.
- Install
fix-zram
which can setup your zRAM and/or reload it with different parameters (e.g., for testing). - Provide a browser bookmark file to be imported to help testing your settings.
Quick-start:
- If running python 5.11+, install
pipx
, and install withpipx install zram-advisor
- else install
pip
, and install withpip install zram-advisor --user
zram-advisor
- reports on currently running zRAM- Unless it reports "NO zRAM", then remove your current zRAM solution
before calling with
--setup-fix-zram
.
- Unless it reports "NO zRAM", then remove your current zRAM solution
before calling with
zram-advisor --setup-fix-zram 2x 15g
- configures/starts zRAM w zRAM limit of the lesser of 2x RAM or 15GiB (vary to please or omit to take default of 1.75x 12g). If unsure of zRAM effectiveness or best parameters, delay setup until zRAM is tested (read further).
But, to first test whether zRAM works for well and, if so, make it permanent:
- Load tested amount:
zram-advisor --load 3x 12g
-- configures zRAM as the minimum of 3xPhysicalRAM or (vary as you wish). - Test with your heaviest system work load (or possibly use the
--gen-test-sites
option below to assist creating an artificial load). - To remove if disappointed with zRAM:
- run
zram-advisor --unload
or simply reboot. - remove
zram-advisor
withpipx uninstall zram-advisor
.
- run
- If your tested zRAM params work well, make it permanent with:
zram-advisor --setup-fix-zram 2x 12g
- installsfix-zram
, loads zRAM per your given parameters, and installs a systemd service to load on each start.fix-zram --setup 3x 20g
- to set non-default values (vary to please).
Removal Steps -- More than 'pipx uninstall' may be needed.
- if
--setup-fix-zram
was done, runfix-zram --unsetup
to remove itself from/user/local/bin
and to remove its systemd service - run
pipx uninstall zram-advisor
Checking Your Running zRAM
Checking with zram-advisor
Here is the sample output of zram-advisor
w/o arguments on a system with zRAM running:
$ zram-advisor
[[ type CTL-C to terminate]]
Distro : Linux Mint 21.3
180 : vm.swappiness.................. in [150, 200]
0 : vm.watermark_boost_factor...... in [0, 0]
125 : vm.watermark_scale_factor...... in [125, 125]
0 : vm.page-cluster................ in [0, 0]
1.6G : zRAM.disksize.................. >= 1.4G
================ 410s ================
952.4M : Total Memory eTotal=2.2G/239%
830.2M/87% : Used eUsed=1.4G/155%
122.3M/13% : Available eAvail=800.7M/84%
zram0:
uncmpr: 814.5M limit=1.6G
cmpr: 158.5M/17% factor=5.14
RAM: 165.5M/17% most=240M/25% limit=0
- The top section shows key parameters for zRAM and suggested ranges (if it did not like those it would preface the range with "NOT in")
- The midsection shows traditional key memory stats on the left, and on the right, the "effective values":
- eUsed: amount of memory used if the compressed part in zRAM were expanded. In this example, we have more memory in use than we have physical RAM (thanks to compression).
- eTotal and eAvail: projected "effective" numbers based on the current compression ratio; these become more accurate as the zRAM memory footprint increases. In this example, in effect, we have 2.2G memory (not 952.4M) and the "available" RAM is nearly as much as physical RAM (although also using more RAM than physical RAM).
- The lower section are stats for each zram device .. typically, there is just one.
- uncmpr: amount of "original" memory stored by zRAM; its limit is officially called 'disksize' which is the name/value you see from
zramctl
. - RAM: amount of physical RAM consumed by zRAM including overhead; most: largest RAM used since boot.
- uncmpr: amount of "original" memory stored by zRAM; its limit is officially called 'disksize' which is the name/value you see from
Checking with pmemstat
Another app (installable with pipx
or pip
) is `pmemstat``. The top of it sample output (on the same system as above) was:
14:41:39 Tot=952.4M Used=741.5M Avail=210.9M Oth=0 Sh+Tmp=8.7M PIDs=122
0.6/ker zRAM=210.2M eTot:2.2G/240% eUsed:1.5G/166% eAvail:705.7M/74%
cpu_pct pswap other data ptotal key/info (exe by mem)
9.8 945 100 195 1,239 T 122x --TOTALS in MB --
───────────────────────────────────────────────────────────────────────────
3.3 396 65 106 567 23x chromium
- You can see those same "effective" key memory stats, plus you can see kernel cpu% (i.e., the
0.6/ker
). Kernal CPU (most the swap process) can be significant, and that CPU cost is the primary "cost" of using zRAM).
zram-advisor Options
usage: zram-advisor [-h] [-s] [-d] [-t] [--DB] [args ...]
options:
-s, --setup-fix-zram install "fix-zram" program and start zRAM
-d, --dump-fix-zram print "fix-zram.sh" for manual install
-t, --gen-test-sites print "bookmarks.html" to import to a web-browser for load test
-L, --load run "fix-zram --load [args ...]>" to test zRAM w/o any footprint
-U, --unload run "fix-zram --unload" to remove zRAM test
<
- --setup-fix-zram installs a programs
fix-ram
and creates a service calledfix-zram-init
to run it on boot. - --dump-fix-zram prints the stock
fix-zram.sh
(e.g., so you can modify it) and install your modified script by running it (e.g.,bash my-fix-zram.sh
). - --gen-test-sites prints a .html to imported into (most) browsers; then open folders of sites to manufacture memory demand (of browsers at least); disable memory saving options and extensions to be most effective.
Notes:
- do not install
fix-zram
if w/o uninstalling any competing tool to configure zRAM. systemd
is required for loading zRAM per your specs on boot.
Controlling zRAM with fix-zram
fix-zram
is bash script bundled with zram-advisor
. Its usage is:
fix-zram [--(load|unload|setup|unsetup)] [-n|--dry-run] [-cN] [N.Nx] [Nm|Ng]
where:
--{command} defaults to 'load' but can be one of:
load - remove any existing zRAM and load zRAM with optional params
unload - unloads any existing zRAM
setup - copy fix-zram to '/usr/local/bin' and setup service [dflt=no]
unsetup - remove '/usr/local/bin/fix-zram' and remove service [dflt=no]
-n,--dry-run - only print commands that would be executed
-c{integer} - set number of zram devices
{float}x - set zram-size to {float} * ram at most [dflt=1.75]
{integer}m - set gross zram-size to {integer} megabytes at most [dflt=12288m]
{integer}g - set gross zram-size to {integer} gigabytes at most
Currently fixed values are:
vm.swappiness=180
vm.watermark_boost_factor=0
vm.watermark_scale_factor=125
vm.page-cluster=0
zRam-swap-priority=100
fix-zram Run-Time Commands
load
and unload
affect the running system but the effects do not survive reboot. So, these can be used for trialing zRAM.
load
sets thevm.*
parameters shown byzram-advisor
.unload
andload
remove preexisting zRAM if running. Removal only works if all memory stored in zRAM can be placed in RAM or another swap device.
Typical use:
fix-zram --load 3x 12g
- will unload the current zRAM (if exists and possible), and then install zRAM with sized at the minimum of 3x RAM and 12GB.
fix-zram Setup Methods
fix-zram --setup
- installsfix-zram
and creates azram-init-fix
service which will load zRAM per the defaults on each load with default values.fix-zram --unsetup
- removes the installedfix-zram
and removes thezram-init-fix
service.
Typical use:
fix-zram setup 3x 12g
- installs a zRAM init service that start zRAM sized at the minimum of 3xRAM and 12GB on boot.
The "fixed values" (shown in the usage section above) cannot be varied on the command line, but they are reasonable values w/o fretting much. If unacceptable, run
sudo nano /usr/local/bin/fix-zram
and adjust the values at the top of the script; be aware that anotherzram-advisor --setup-fix-zram
will overwrite your changes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zram_advisor-1.1.1.tar.gz
.
File metadata
- Download URL: zram_advisor-1.1.1.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c0a673540c276c5ef0b9e1a76c003224de034052ecb73cbb232a2050caf7b18 |
|
MD5 | 11feaa6c11009db2808d90e00ef90091 |
|
BLAKE2b-256 | fcfcf4c7a50c995dc93b1f352510e410a51aa66254b5f572958ef7ae764308d5 |
File details
Details for the file zram_advisor-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: zram_advisor-1.1.1-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f08271785e5850e5e0b9c517714a4c9153155e14aa53ce97f846c3fe4d4c9e93 |
|
MD5 | b6a83b559e1d74e18534ecba745a776b |
|
BLAKE2b-256 | 0dba3ef2c3bfd6f2d1e7d1bdfbceeb57be566a7109f12c85e8b5989be6746c93 |