I guess there is on other point I should make about the "free" command.
Free does not always properly identify the memory that is in use, and the memory that is cached. It took me awhile to learn this, but it is so.
I run a lot of virtual machines on my workstation. At this writing, I have the following VMs up and running in my Mageia host: Windows 2000, Windows 7 Pro, Windows 10, Linux Mint 17.3, OpenSuse 13.2, FreeBSD 8.4, and two copies of FreeBSD 10.2. Yet, in spite of this load, free on my system reports the following:
- Code: Select all
jiml@dadsbox:jiml> free
total used free shared buffers cached
Mem: 32863968 32248756 615212 21216404 310552 23772856
-/+ buffers/cache: 8165348 24698620
Swap: 36909400 2783628 34125772
Thus, free shows that I have only about 8 GB in use, and 23.7 GB cached. This is wrong. In fact, around 21 GB of that cached RAM is actually assigned to the various VMs. For instance, Win7 gets about 3.2 GB, Win10 gets about 3.2 GB, the Linux systems each get 4GB, and the rest goes to the other VMs.
So, in fact, my workstation does frequently experience memory pressure, which is why I have 35 GB of swap defined for it, and which is why I have made those tweaks I mentioned earlier. The combination I show makes this system rock solid; it never crashes (unless my NAS goes down, but that's another story...).
So, the point is that though your system does not appear to be under memory pressure based on the commands you ran, it still could be under pressure, just depending on the details. If you run virtual machines, then the output from free cannot be trusted. it could be there are other programs or systems that also make free unreliable, but offhand I don't know what they might be.