this post was submitted on 06 Jul 2024
97 points (94.5% liked)

Linux

5168 readers
398 users here now

A community for everything relating to the linux operating system

Also check out [email protected]

Original icon base courtesy of [email protected] and The GIMP

founded 1 year ago
MODERATORS
 

To be clear, I don't blame the poster of this comment at all for the content of their post – this is accepted as "common knowledge" by a lot of Linux sysadmins and is probably one of the most likely things that you will hear from one if you ask them to talk about swap. It is unfortunately also, however, a misunderstanding of the purpose and use of swap, especially on modern systems.

you are viewing a single comment's thread
view the rest of the comments
[–] recursive_recursion 11 points 4 months ago* (last edited 4 months ago) (2 children)

definitely agreed on against using swap as memory as much as you can especially since it can needlessly wear out your ssd (m.2 on most if not all on modern systems)

allocating swap is still necessary as it provides features such as:

  • mitigating OOM scenarios (but doesn't prevent them completely)
  • enabling system hibernation(suspend-to-disk)

On my journey to learning Arch Linux I've personally tried:

  • 0 swap: which was pretty awful with constant unexpected system freezes/crashes
  • swap file: finicky but doable
  • swap partition: typical default/ol'reliable

the last two doesn't guarantee 0 problems as user errors such as allocating too much system memory to VMs can cause issues for the host system, but it does tend to mitigate the majority of issues that prevent the perception of system stability in comparison to Windows or Macs

Resources:

[–] [email protected] 8 points 4 months ago (1 children)

especially since it can needlessly wear out your ssd

ZRAM bby

[–] recursive_recursion -1 points 4 months ago* (last edited 4 months ago) (1 children)

after a quick preliminary search,
a couple of things I've found out:

this might not necessarily be adopted by the mainstream desktop users, due to the nature of zram compressing data in addition to disallowing hibernation

Hibernating to swap on zram is not supported, even when zram is configured with a backing device on permanent storage. logind will protect against trying to hibernate to a swap space on zram.

  • data compression by nature incurs dataloss so there are both pro & con tradeoffs to which should be communicated to the user otherwise they might receive an unnecessary worse user experience:
    • "why is my computer so buggy?"
      • (the system is working as it's coded but not working in they way the user expects it to)
        • this would be unfortunate as they might leave back to Windows or MacOS
    • I could be completely wrong about this, if so please comment or disregard this section entirely

to me atm; zram seems great for server based systems rather than for desktop users' systems


one other method for zram mainstream adoption is to encourage an eccentric system that I'm currently using, which is to have the host system only contain minimal packages to run Virtual Machines:

  • zram compression might be fine as the main services/programs are run within their relevant and/or separated VM containers
    • this simultaneously achieves:
      • Wikipedia - Separation of Concerns
      • enhanced security as the host is further firewalled/bubblewrapped from the guest like Flatpaking/containerization (and malware is less likely to activate due to malicious users being unhelpful in letting their programs run in a VM 😢🤗)
  • hibernation can still be achived by save-stating VMs (VM restoration at will basically achieves hibernation so it doesn't really matter if the host is shutdown so long as all VMs are saved by the user before host shutdown)

sorry for the long comment!
stuff like this interests me the most so I've spent a lot of time in learning and tinkering around🤗

[–] [email protected] 15 points 4 months ago (2 children)

data compression by nature incurs dataloss

What? It’s not a jpeg file. It’s a lossless compression algorithm.

[–] [email protected] 4 points 4 months ago

Speak for yourself, my compression algorithm works by discarding every third byte. I figure it's good enough for most use cases.

[–] recursive_recursion 0 points 4 months ago

It’s a lossless compression algorithm.

if so that's pretty dope!

[–] [email protected] 4 points 4 months ago (1 children)

0 swap: which was pretty awful with constant unexpected system freezes/crashes

I've run Arch without swap for many years without issues. The key of course is that you need enough RAM for what you are trying to do with your computer.

There's no reason why a 32GB RAM + 0GB swap system should have more problems than a 16GB RAM + 16GB swap system with the same workload. If anything, the former is going to run much better.

swap file: finicky but doable

What is finicky about a swap file?

It's just this:

mkswap -U clear --size 4G --file /swapfile
swapon /swapfile

Done

If anything it's way easier to create a file in your filesystem than having to (re-)partition your drive to have a swap partition. Much more flexible too if you want to change your swap configuration in the future.

[–] recursive_recursion 2 points 4 months ago (1 children)

I've run Arch without swap for many years without issues. The key of course is that you need enough RAM for what you are trying to do with your computer.

There's no reason why a 32GB RAM + 0GB swap system should have more problems than a 16GB RAM + 16GB swap system with the same workload. If anything, the former is going to run much better.

I run a lot of VMs; I typically run 2 at the same time in addition to running other programs in the background, my usecase is more eccentric than most users in the Linux space which is already pretty niche

What is finicky about a swap file?

It's just this:

mkswap -U clear --size 4G --file /swapfile
swapon /swapfile

Done

I'm using BTRFS with LUKS-based Full Disk Encryption, the last time I used swapfiles with BTRFS with FDE it was in 2019 and it was painful to say the least, I rememeber spending several weeks scouring Stack and the Arch forums in order to get it to work properly.

  • usecases and preferences will differ from user to user, so I wouldn't advise assuming a one-size-fits-all solution

If anything it's way easier to create a file in your filesystem than having to (re-)partition your drive to have a swap partition. Much more flexible too if you want to change your swap configuration in the future.

swapfiles are great in that you can resize them at will, however after trying all 3 options I found myself questioning when would I even want to resize swap for a single system, so at a certain point I felt that swapfiles were more of a gimmick cause again you don't really want to depend on swap if can.

  • if you're consistently reaching your physical memory limits, upgrading your ram will most likely be the best bet for both system stability and hardware durability
[–] [email protected] 2 points 4 months ago

I run a lot of VMs; I typically run 2 at the same time in addition to running other programs in the background, my usecase is more eccentric than most users in the Linux space which is already pretty niche

If what you're doing involves using close to all of your system memory, it does make sense to add swap. So your use case is a good example actually.

I also have an old Arch PC that I use to run various VMs on (currently 6 VMs in use). It does have a swapfile, but the most swap I've ever seen in use is about 1GB.

I’m using BTRFS with LUKS-based Full Disk Encryption, the last time I used swapfiles with BTRFS with FDE it was in 2019 and it was painful to say the least, I rememeber spending several weeks scouring Stack and the Arch forums in order to get it to work properly.

Weird. Sounds like you may have painted yourself a bit into a corner by using BTRFS then. I use trusty old ext4 on top of LUKS FDE, no issues with swapfiles whatsoever.

That brings me to another downside of swap partitions: encryption. You can leak sensitive data through your swap partition, so it should be encrypted. If you use a plain partition, without LUKS in between, information in your swap is exposed. So you need to do more configuration to setup LUKS on your swap partition.

If you use a swapfile on an already encrypted filesystem though, you don't have to worry about it.

when would I even want to resize swap for a single system

Maybe your requirements change (e.g. "I want to be able to hibernate"), maybe your memory configuration changes, maybe you've underestimated or overestimated how much swap you need.

Case in point: the Arch PC I mentioned above only uses upto 1GB of swap, but it has a 16GB swapfile. This discussion has brought to my attention that perhaps I should downsize the swapfile a bit and free up disk space.

you don’t really want to depend on swap if can

That is my position too. It's always better to have a properly sized system, or limit what you push on an existing system. High swap usage rarely results in a good experience.