|
Your ram is fine! |
But how do you count memory that is currently used for something, but can still be made available to applications?
You might count that memory as "free" and/or "available". Linux instead counts it as "used", but also "available":
| Memory that is | You'd call it | Linux calls it |
|---|---|---|
| used by applications | Used | Used |
| used, but can be made available | Free (or Available) | Used (and Available) |
| not used for anything | Free | Free |
This "something" is (roughly) what top and free calls "buffers" and "cached". Since your and Linux's terminology differs, you might think you are low on ram when you're not.
free -m and look at the "available" column:
$ free -m
total used free shared buff/cache available
Mem: 1504 1491 13 0 855 792
Swap: 2047 6 2041
(On installations from before 2016, look at "free" column in the "-/+ buffers/cache" row instead.)
This is your answer in megabytes. If you just naively look at "used" and "free", you'll think your ram is 99% full when it's really just 47%!
For a more detailed and technical description of what Linux counts as "available", see the commit that added the field.
A healthy Linux system with more than enough memory will, after running for a while, show the following expected and harmless behavior:
free memory is close to 0 used memory is close to total available memory (or "free + buffers/cache") has enough room (let's say, 20%+ of total)swap used does not changeWarning signs of a genuine low memory situation that you may want to look into:
available memory (or "free + buffers/cache") is close to zeroswap used increases or fluctuatesdmesg | grep oom-killer shows the OutOfMemory-killer at work