zram: swap comprimida en RAM por delante de la del disco

zramen con zstd, hasta la mitad de la RAM (máximo 8 GB) y la prioridad
más alta; la swap del NVMe queda de reserva. swappiness 180 y
page-cluster 0, lo normal con zram.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5v1qWDwgkaVM5kjVHGGh8
This commit is contained in:
Alejandro Guerrero 2026-09-28 16:25:39 +02:00
parent 0e90f6029e
commit bea3bdbb62
Signed by: alejandrogs73
GPG key ID: 1CFF10953BEE333C
5 changed files with 35 additions and 17 deletions

View file

@ -55,14 +55,14 @@ for example) and repeated safely:
6. `sistema` (system): copies `sistema/` into `/`, sets up
`wpa_supplicant.conf` so wheel users can use `wpa_cli` without root and
save networks, enables the runit services (dbus, turnstiled,
wpa_supplicant, dhcpcd, bluetoothd, acpid, openntpd, tlp, automontaje,
cupsd), removes NetworkManager, elogind, chronyd, avahi-daemon (the printer
has a fixed IP), sshd (nobody SSHes into the laptop), nix-daemon and
polkitd (if something asks for polkit, like libvirt, D-Bus starts it on its
own) and adds the user to the audio, video, input, network, bluetooth,
lpadmin (printer management) and `_pipewire` (realtime priority for audio
without rtkit) groups. `doas.conf` is checked with `doas -C` before it is
installed with mode 400.
wpa_supplicant, dhcpcd, bluetoothd, acpid, openntpd, tlp, zramen,
automontaje, cupsd), removes NetworkManager, elogind, chronyd, avahi-daemon
(the printer has a fixed IP), sshd (nobody SSHes into the laptop),
nix-daemon and polkitd (if something asks for polkit, like libvirt, D-Bus
starts it on its own) and adds the user to the audio, video, input,
network, bluetooth, lpadmin (printer management) and `_pipewire` (realtime
priority for audio without rtkit) groups. `doas.conf` is checked with `doas
-C` before it is installed with mode 400.
7. `quitar` (remove): uninstalls what the repo no longer uses because
something else replaces it: sudo (doas), feh (xwallpaper and nsxiv),
gammastep (sct), autorandr (`pantallas`), blueman and pavucontrol (the
@ -190,6 +190,9 @@ preserveonrestart patches).
(the laptop one on the left and as primary) at startup and whenever one is
plugged or unplugged (udev rule in `sistema/`), then repaints the
wallpaper with `xwallpaper`.
- Memory: compressed swap in RAM with zram (`zramen` service, up to half the
RAM, with zstd) ahead of the disk swap, which stays as a fallback
(`sistema/etc/sv/zramen/conf` and `sistema/etc/sysctl.d/99-zram.conf`).
- Audio: `.xinitrc` runs pipewire, wireplumber and pipewire-pulse in a loop,
so if one of them dies it comes back a second later (without wireplumber
everything goes to "Dummy Output").

View file

@ -52,13 +52,13 @@ Hace siete pasos, que también se pueden lanzar por separado
6. `sistema`: copia `sistema/` en `/`, prepara `wpa_supplicant.conf` para que
los de wheel usen `wpa_cli` sin root y guarden redes, activa los servicios
de runit (dbus, turnstiled, wpa_supplicant, dhcpcd, bluetoothd, acpid,
openntpd, tlp, automontaje, cupsd), quita NetworkManager, elogind, chronyd,
avahi-daemon (la impresora va por IP fija), sshd (al portátil no se entra
por SSH), nix-daemon y polkitd (si algo pide polkit, como libvirt, D-Bus lo
arranca solo) y añade el usuario a los grupos audio, video, input, network,
bluetooth, lpadmin (para gestionar impresoras) y `_pipewire` (prioridad de
tiempo real para el audio sin rtkit). `doas.conf` se valida con `doas -C`
antes de instalarlo con modo 400.
openntpd, tlp, zramen, automontaje, cupsd), quita NetworkManager, elogind,
chronyd, avahi-daemon (la impresora va por IP fija), sshd (al portátil no
se entra por SSH), nix-daemon y polkitd (si algo pide polkit, como libvirt,
D-Bus lo arranca solo) y añade el usuario a los grupos audio, video, input,
network, bluetooth, lpadmin (para gestionar impresoras) y `_pipewire`
(prioridad de tiempo real para el audio sin rtkit). `doas.conf` se valida
con `doas -C` antes de instalarlo con modo 400.
7. `quitar`: desinstala lo que el repo ya no usa porque lo sustituye otra
cosa: sudo (doas), feh (xwallpaper y nsxiv), gammastep (sct), autorandr
(`pantallas`), blueman y pavucontrol (scripts `bluetooth` y `volumen`),
@ -188,6 +188,9 @@ ventanas (parches restartsig y preserveonrestart).
`xrandr` (la del portátil a la izquierda y como principal) al arrancar y
cada vez que se conecta o desconecta una (regla de udev en `sistema/`), y
vuelve a pintar el fondo con `xwallpaper`.
- Memoria: swap comprimida en RAM con zram (servicio `zramen`, hasta la mitad
de la RAM, con zstd) por delante de la del disco, que queda de reserva
(`sistema/etc/sv/zramen/conf` y `sistema/etc/sysctl.d/99-zram.conf`).
- Audio: `.xinitrc` lanza pipewire, wireplumber y pipewire-pulse en un bucle,
así que si alguno se cae vuelve solo al segundo (sin wireplumber todo sale
por "Dummy Output").

View file

@ -20,7 +20,7 @@ PAQUETES="
xorg xinit setxkbmap xrandr dbus turnstile
picom dunst libnotify xwallpaper nsxiv maim xclip sct xssstate
pipewire wireplumber libspa-bluetooth alsa-pipewire
wpa_supplicant dhcpcd bluez acpid openntpd tlp
wpa_supplicant dhcpcd bluez acpid openntpd tlp zramen
cups cups-filters hplip
font-firacode nerd-fonts-symbols-ttf papirus-icon-theme papirus-folders
sassc gnome-themes-extra qt5ct
@ -34,7 +34,7 @@ SUCKLESS="dwm st dmenu slstatus slock scroll clipmenu"
# Tema GTK Everforest, en una versión fija para que siempre salga igual
GTK_TEMA_REPO=https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme
GTK_TEMA_COMMIT=9b8be4d6648ae9eaae3dd550105081f8c9054825
SERVICIOS="dbus turnstiled wpa_supplicant dhcpcd bluetoothd acpid openntpd tlp automontaje cupsd"
SERVICIOS="dbus turnstiled wpa_supplicant dhcpcd bluetoothd acpid openntpd tlp zramen automontaje cupsd"
# La red la llevan wpa_supplicant y dhcpcd. polkitd no hace falta como
# servicio: si algo lo pide (libvirt), D-Bus lo arranca. turnstiled sustituye
# a elogind y openntpd a chronyd. avahi-daemon (mDNS) no hace falta: la

View file

@ -0,0 +1,7 @@
# Swap comprimida en RAM (zram), antes que la del disco. Con 11 GB de RAM se
# llega a usar la swap del NVMe; en zram cabe más y va mucho más rápido.
# Hasta la mitad de la RAM (máximo 8 GB) y zstd, que comprime más que lz4. La
# prioridad por defecto (32767) la pone por delante de la swap del disco.
export ZRAM_COMP_ALGORITHM=zstd
export ZRAM_SIZE=50
export ZRAM_MAX_SIZE=8192

View file

@ -0,0 +1,5 @@
# Con zram (sistema/etc/sv/zramen) sale más a cuenta mandar páginas a la swap
# comprimida que soltar la caché de disco, y no hace falta leerlas de 8 en 8
# como en un disco.
vm.swappiness = 180
vm.page-cluster = 0