This is an old desktop I use for some small self hosting services. I never use all my RAM and I don’t see any RAM spikes other than when I install/compile things which I haven’t done in months. I restarted the machine a couple of times, but the SWAP will eventually go right back up to 100%.
I have an Ubuntu server/yunohost setup and found: https://askubuntu.com/questions/157793/why-is-swap-being-used-even-though-i-have-plenty-of-free-ram
My cat /proc/sys/vm/swappiness
value is indeed 60. Im not sure what would reduce the SWAP space usage.
Would changing this swappiness value help? Anyone come across this issue before?
EDIT: Found out what it is, its the matrix server that is running on the system. Its taking up a significant amount of swap. Found out via:
smem -s swap -r -p
turning that off, the system is now using 90% less SWAP.
/opt/yunohost/matrix-synaps
was the process.
The naive approach of thinking of swap as “extra ram that is slow” and so “why is my system using swap when I have ram” is not really the best analogy. It’s better to think of ram as a place that holds memory pages, and disk as a place that holds file blocks/extents. Ram happens to be very fast and disk happens to be very slow, but conceptually programs access both memory pages and file blocks as they are running.
There is no reason that memory pages must live in ram, and no reason that file blocks must live on disk, especially in the modern world with virtual memory, and so sometimes it is more efficient for the kernel to say “hey, this memory page is never used and this file block is used a lot, so I’m going to put the memory page on disk and the file block in memory and everything will be faster.”
When a memory page is moved to disk, this is called swapping and the place it is stored on disk is swapspace. When a file block is stored in memory, this is called cache (or in some cases, buffers). So if you have plenty of ram free, it can still be beneficial for the kernel to move unused memory pages to swap to make space for cache. And once it is in swap, there’s no good reason to move it back until you need it, so even if space frees up in ram, the kernel won’t preemptively move it back into ram.
It also takes a while to move stuff between RAM and disk, so it’ll park stuff in swap of it’s not used much to make room for burst RAM needs.
Generally speaking, don’t worry about it as long as the system is responsive, but if things start sucking, consider closing stuff so the kernel can free it.
You’re not likely to get far with a 16x RAM -> swap ratio
Also all a full swap means is that your computer has determined that it has 976M of cold pages that were eligible to be swapped out
1gb swap is way too small…
I usually setup swap to be 2x the total ram size. So, 32gb swap in your case.
Nothing wrong here, seems normal. With such little swap.
Actually Linux kernel works better with swap, the more the better. It will lalso perform better than zero swap. Counterintuitive indeed, but that’s how it works.
If you don’t want swap, use zram.
32GB of swap is huge, I wouldn’t bother with that much unless you’re suspending to disk regularly. I personally just suspend to RAM and call it a day.
On my laptop with 24GB RAM, I have about 20GB swap, which matches the system memory (rest is dedicated to my APU). On my desktop with 16GB RAM, I have 16GB swap, because that’s what my OS picked (I would otherwise go with 10GB). On both systems, I usually only have 2-3GB in swap anyway.
On my server, I have no swap at all and 16GB RAM (usually use <5GB at any time). I think swap is overrated and overused.
I though that the recommended swap partition was to double until 16 GB? So at 32GB of ram use 32GB of swap?
You should just maintain awareness of how much you’re using. I think 32gb ram + 32gb swap is ridiculous, frankly. Fedora by default sets zram up to 8gb, with no other swap space configured. Works very well that way.
Personally I’d also probably not ever set up more than 16gb of swap space. If I’m somehow hitting that limit it’s because I actually just need to buy more RAM.
Yeah I was thinking of adding swap as my other systems have lots more.
This is just the default on yunohost.
Depending on what your server is doing, swap use is normal. But if it’s into swap cuz ram is full, you will find it grinds to a halt.
Use
free -mh
to see what the memory use is, there is a way to reduce the swapiness if your running a database server and is advised.And how does cache space figure in to this? I have a server with 64GB of RAM, of which 46GB is being used by system cache, but I only have 450MB of free memory and 140MB of free swap. The only ‘volatile’ service I have running is slapd which can run in bursts of activity, otherwise the only thing of consequence running is webmin and some VMs which collectively can use up to 24GB (though they actually use about half that) but there’s no reason those should hit swap space. I just don’t get why the swap space is being run dry here.
It pushes stuff when they’re really really cold, so for instance init services and libs that have basically never been touched since boot but still technically need to be in memory.
They might have been pushed out because the page cache thought it had something more interesting, or if you have VMs, because the system wanted to make some huge pages.
What do you think it’s going to help? You sound like you’re absolutely sure there is something wrong here. You sure there’s something wrong?
Might not be, it’s just strange.
My other Linux machines use much less but have more space designated to SWAP. And using Linux for as long as I have, swap space is usually reserved when there is a huge increase in ram usage.
No, not a huge increase. It’s whatever is deemed to be most efficient at the time. You should get more familiar with how RAM is committed and used if you’re suspecting something. Perhaps in this case it’s all just committed cache memory and not contiguous tracts being reserved.
Get the output of
free -m
Swap is used to defrag ram on linux. Could be related to that. In any case this is pretty normal. I have 43Gi available and it is used 700Mi of swap.
No reason to remove something from swap which is already there. It does this for files too.
Maybe he… Swaped them! 👍😎👌
Any way of having this study an existing database (or dump thereof) and build the graph?
Change swappiness to 10 and ensure that you don’t have anything dynamically adjusting it.