Погнали... «Помощь голодающим детям Африки»:
cat /etc/sysctl.d/10-vm.conf :vm.swappiness = 5
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 3
vm.watermark_boost_factor = 15000
vm.watermark_scale_factor = 100
cat /etc/default/grub|egrep '^GRUB_CMDLINE_LINUX_DEFAULT' :
GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1 --здесь поскипана куча неинтересной стандартной фигни--"
cat /etc/udev/rules.d/60-ioscheduler.rules :
# set scheduler for non-rotating disks
# noop and deadline are recommended for non-rotating disks
# for rotational disks, cfq gives better performance and bfq-sq more responsive desktop environment
## ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
# set scheduler for rotating disks
## ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq-sq"
# set scheduler for NVMe
#ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="bfq"
# set scheduler for SSD and eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
Ну и поставить systemd-swap, отсюда: https://github.com/Nefelim4ag/systemd-swap или из репозиториев вашего дистрибутива. И не забыть прочитать то что там написано, в ридми на гитхабе!
Конфиг данного пакета у меня выглядит так:
cat /etc/systemd/swap.conf :
################################################################################
# Defaults are optimized for general usage
################################################################################
################################################################################
# You can override any settings by files in:
# /etc/systemd/swap.conf.d/*.conf
################################################################################
################################################################################
# Zswap
#
# Kernel >= 3.11
# Zswap create compress cache between swap and memory for reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt
zswap_enabled=1
zswap_compressor=zstd # lzo, lz4, zstd, zlo-rle, zl4hc.
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold # zbud z3fold
################################################################################
# ZRam
#
# Kernel >= 3.15
# Zram compression streams count for additional information see:
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt
zram_enabled=1
zram_size=$(( RAM_SIZE/5 )) # This is 1/4 of ram size by default.
zram_count=${NCPU} # Devices
zram_streams=${NCPU} # Compression streams
zram_alg=zstd # lzo, lz4, zstd, zlo-rle, zl4hc.
zram_prio=32767 # 1 - 32767
################################################################################
# Swap File Chunked
# Allocate swap files dynamically
# For btrfs fallback to swapfile + loop will be used
# ex. Min swap size 512M, Max 8*512M
swapfc_enabled=1
swapfc_force_use_loop=0 # Force usage of swapfile + loop
swapfc_frequency=1 # How often check free swap space
swapfc_chunk_size=1024M # Allocate size of swap chunk
swapfc_max_count=8 # 0 - unlimited, note: 32 is a kernel maximum
swapfc_min_count=0 # FC creates at start
swapfc_free_ram_perc=65 # Free % of memory for 1st FC
swapfc_free_swap_perc=10 # Add new chunk if free < 15%
# Remove chunk if free > 15+40% & chunk count > 2
swapfc_remove_free_swap_perc=55 # Remove FC at % free
swapfc_priority=50 # FC swaps priority
swapfc_path=/var/lib/systemd-swap/swapfc/ # Path to FC swaps
# Only for swapfile + loop
swapfc_nocow=1 # Disable CoW on swapfile
swapfc_directio=1 # Use directio for loop dev
swapfc_force_preallocated=0 # Will preallocate created files
################################################################################
# Swap devices
# Find and auto swapon all available swap devices
swapd_auto_swapon=1
swapd_prio=1024
Вся эта безобразия прекрасно работает на говноноуте с 6-ю гигами памяти, HDD, на 5400 оборотов и нетбучным AMD-шным процом из 2008-го. Постоянно открыты браузер на полтинник вкладок, телеграм, element, музыкопроигрыватель, куча терминалов и чорт его знает что ещё.
Еще у меня cgroups переключены на v2, что, внезапно (хотя если подумать не совсем внезапно), так-же добавило отзывчивости (добавить параметры в GRUB_CMDLINE_LINUX_DEFAULT: cgroup_no_v1=all systemd.legacy_systemd_cgroup_controller)
Enjoy!