GithubHelp home page GithubHelp logo

stuartpb / systemd-swap Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nefelim4ag/systemd-swap

0.0 1.0 0.0 261 KB

Script for creating hybrid swap space from zram swaps, swap files and swap partitions.

License: GNU General Public License v3.0

Shell 94.74% Makefile 5.26%

systemd-swap's Introduction

systemd-swap

Script for manage swap on:

  • zswap - Enable/Configure
  • zram - Autoconfigurating for swap
  • files - (sparse files for saving space, support btrfs)
  • block devices - auto find and do swapon

ℹ️ It is configurable in /etc/systemd/swap.conf.

Additional terms:

  • SwapFC (File Chunked) - provide a dynamic swap file allocation/deallocation

Files placed

/etc/systemd/swap.conf
/usr/lib/systemd/system/systemd-swap.service
/usr/bin/systemd-swap

Please not forget to enable by

sudo systemctl enable systemd-swap

Install

  • Arch: in the community.

  • Debian: use package.sh in git repo

    git clone https://github.com/Nefelim4ag/systemd-swap.git
    ./systemd-swap/package.sh debian
    sudo dpkg -i ././systemd-swap/systemd-swap_*_all.deb
  • Fedora: use package.sh

    git clone https://github.com/Nefelim4ag/systemd-swap.git
    ./systemd-swap/package.sh fedora f28
    sudo dnf install ./systemd-swap/systemd-swap-*noarch.rpm
  • Manual

    git clone https://github.com/Nefelim4ag/systemd-swap.git
    sudo make install

About configuration

Q: WTF?! Why you merge swapFC and swapFU?
A: That simplify testing of swapFC code and make code more generic

Q: How can i migrate config swapFU from 3.X to 4.X?
A: Most of switches are same, to get configuration like swapFU from swapFC, set swapfc_max_count to 1 and swapfc_chunk_size to size of swapFU.

Q: Do we need to activate both zram and zswap?
A: Nope, it's useless, as zram is a compressed RAM DISK, but zswap is a compressed "writeback" CACHE on swap file/disk.

Q: Do i need use swapfc_force_use_loop on swapFC?
A: Nope, as you wish really, native swapfile must work faster and it's more safe in OOM condition in comparison to loop backed scenario.

Q: When would we want a certain configuration?
A: In most cases (Notebook, Desktop, Server) it's enough to enable zswap + swapfc (On server tuning of swapfc can be needed). In case where SSD used, and you care about flash wear, use only ZRam.

Q: Where is the swap file located?
A: Read carefully swap.conf

Q: Can we use this to enable hibernation?
A: Nope as hibernation wants a persistent fs blocks and wants access to swap data directly from disk, this will not work on: zram, swapfu, swapfc (without some magic of course).

Note

  • ℹ️ Zram dependence: util-linux >= 2.26

  • ℹ️ If you use zram not for only swap, use kernel 4.2+ or please add rule for modprobe like:

    options zram max_devices=32

Switch On Systemd Swap

  • For check your configuration:

    cat /proc/sys/vm/swappiness
    cat /proc/sys/vm/vfs_cache_pressure
  • Recomended configuration for Desktop:

    echo vm.swappiness=5 | sudo tee -a /etc/sysctl.d/99-sysctl.conf
    echo vm.vfs_cache_pressure=50 | sudo tee -a /etc/sysctl.d/99-sysctl.conf
    sudo sysctl -p /etc/sysctl.d/99-sysctl.conf
  • If you have install Systemd Swap check configuration:

    nano /etc/systemd/swap.conf
    zram_enabled=0
    zswap_enabled=1
    swapfc_enabled=1
  • Stop your swap:

    sudo swapoff -a
  • Need to remove swap from fstab:

    nano /etc/fstab
  • Remove your swap

    # For Ubuntu
    sudo rm -f /swapfile
    
    # For Centos 7
    lvremove -Ay /dev/centos/swap
    lvextend -l +100%FREE centos/root
  • Remove swap from Grub:

    # For Ubuntu remove resume* in grub
    nano /etc/default/grub
    
    # For Centos 7 remove rd.lvm.lv=centos/swap*
    nano /etc/default/grub
    
    # For Manjaro remove resume* in grub & mkinitcpio
    nano /etc/default/grub
    nano /etc/mkinitcpio.conf
    # For Ubuntu
    update-grub
    
    # For Centos 7
    update-grub
    
    # For Manjaro
    update-grub
    mkinitcpio -P

systemd-swap's People

Contributors

abouvier avatar crrlcx avatar elkropac avatar felixonmars avatar ksimuk avatar liberodark avatar meh avatar mikalair avatar montecito avatar nefelim4ag avatar rolisv avatar rpodgorny avatar saponace avatar sergeykasmy avatar yxliang01 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.