this post was submitted on 07 Jul 2023
36 points (97.4% liked)

Selfhosted

40676 readers
545 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

I've heard a lot of people say your swap should be 2x RAM.. but do I really need 32GB of swap?

you are viewing a single comment's thread
view the rest of the comments
[–] frustbox 7 points 1 year ago (4 children)

The 2× recommendation is indeed way old, it stems from a time when computers had 1 or 2 GB of RAM or even less. Nowadays, if you have 16GB of RAM I'd say you're not going to need it (in most use cases).

Chances are your RAM will rarely get so full that your system will need to swap to disk, it's probably going to clear buffer/cached data first. This is data kept in RAM that's not actively used by the system but might be useful soon.

If your RAM does run full you either have some very specific application that demands it (then you probably already know the importance and hopefully wouldn't ask internet randos) or you have a memory leak - that's a problem and I don't believe swapping helps in this case. It's way too slow for that.

If you run VMs and reserve RAM for each those considerations might change.

Personally I don't think swap partitions are particularly useful any more, certainly not 2× your RAM. If you ever want to suspend your system, then it needs to store all your RAM content to disk and it will use your swap for it, so 1× your RAM would be required. But with modern systems and SSDs booting only takes seconds, so I don't think suspend to disk has much utility.

For me swap files are a good compromise. But if a system with 16GB starts swapping, something is not going well.

[–] vegetaaaaaaa 6 points 1 year ago (1 children)

Even if you don't run into RAM exhaustion, it is always good to have some swap space, as it can be used to move less used pages to swap, and frees up RAM for more filesystem cache.

I always keep a 2GB swap partition.

[–] eager_eagle 2 points 1 year ago

right, swap usage is controlled by the swappiness value. With the default value of 60 out of 100 and almost never filling up my 32GB RAM, my swap of 8GB is always used at least a little bit, and depending on the uptime it eventually gets "full".

[–] eager_eagle 4 points 1 year ago* (last edited 1 year ago) (2 children)

Personally I don’t think swap partitions are particularly useful any more

This is just wrong. Having swap increases the performance of your applications as it frees up RAM by swapping cold pages out of memory and use that space for caching, which increases hit rates. And this performance increase is both for low and high used memory rates.

[–] SheeEttin 2 points 1 year ago (1 children)

So once it gets pushed out of RAM, you read it from disk instead of from disk? I'm not sure that that's a benefit. If you're using SSDs, they are fast and don't have seek times, so I don't think that having it in swap is any faster than just from disk. Maybe a little overhead for opening the file.

Assuming that you aren't truly exhausting your RAM, anyway, such that programs start crashing due to being unable to allocate. Or that the data on disk is compressed, for example.

[–] eager_eagle 4 points 1 year ago* (last edited 1 year ago)

the swap space works as another level of memory hierarchy, the kernel swap pages out before all RAM is used in order to make room for pages that are more likely to be requested. It is very much a benefit, especially when using SSDs.

so I don’t think that having it in swap is any faster than just from disk.

That is still is faster, because even though they have the same physical access times, the data stored in swap space is already mapped to memory pages. By not using swap you are just more likely to face lower hit rates for low memory usage and thrashing for high memory usage. The slowness of the disk won't affect your overall performance as you'll get higher cache hit rates.

Right now for example, roughly half of my RAM is being used for caching and all of my swap is used. If I didn't have swap, most of that space used for caching would instead be used for those cold memory pages.

[–] frustbox 1 points 1 year ago* (last edited 1 year ago)

I have a swap partition in my current system (64GB), I've had one on my previous system (which was 11 years old, with 16 GB) - I have seen my system¹ swap at most 5 times, and every time it was software misbehaving so badly that it made the system unusable.

I know this is anecdotal evidence - but my experience is that it's getting less and less relevant for most desktop systems.

Edit: ¹my old system, the new one has not swapped at all in the past year.

[–] [email protected] 2 points 1 year ago

@frustbox @sam I mostly agree, you should always aim to only use ram and not swap with your system. That beeing said you can have swap usage in any kind of system and even if you have terabytes of ram there is still a valid point for having some swap because that's still better than a kernel panic. Also in desktop computers you can get 16-32GB RAm full while gaming and multitasking some stuff along.

[–] warmaster 2 points 1 year ago

I have 16gb, I play Overwatch 2 through Bottles (Wine) and my ram usage & swap partition are almost always full when playing.