Since I've found discussion of buffers/cache on that site, not Unix of SE, I post my question here. I've read In Linux, what is the difference between "buffers" and "cache" reported by the free command? and Meaning of the buffers/cache line in the output of free, where it is written:
caches will be freed automatically if memory gets scarce, so they do
not really matter.
Currently free
reports 8Gb of buffers/cache, however, system when approaching zero free memory becomes unresponsive for long time and sync; echo 3 > /proc/sys/vm/drop_caches
does not change much. Why? I post output of free -m
and also more detailed output of cat /proc/meminfo
:
total used free shared buff/cache available
Mem: 15740 4508 2366 8453 8865 2474
MemTotal: 16118172 kB
MemFree: 528472 kB
MemAvailable: 475820 kB
Buffers: 1588 kB
Cached: 8939100 kB
SwapCached: 0 kB
Active: 6711540 kB
Inactive: 8440460 kB
Active(anon): 6621624 kB
Inactive(anon): 8402256 kB
Active(file): 89916 kB
Inactive(file): 38204 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 6211412 kB
Mapped: 1534592 kB
Shmem: 8812568 kB
Slab: 203244 kB
SReclaimable: 106932 kB
SUnreclaim: 96312 kB
KernelStack: 18736 kB
PageTables: 93880 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 8059084 kB
Committed_AS: 23933660 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 1761344 kB
DirectMap2M: 14704640 kB
DirectMap1G: 1048576 kB
Best Answer
/proc/sys/vm/drop_caches
does not have a use in system operations. Don't use it, only makes things slower.Well, it does have some uses, but they tend to be corner cases. Testing storage with a cold cache, unusual virtual memory workloads. See previously on Server Fault: Why drop caches in Linux?
Even ignoring
Cached
as if it were zero, this system already has relatively high memory utilization.AnonPages
+Shmem
is 14 GB and changes, alone only 1 GB less thanMemTotal
. And indeed, add in other stuff andMemAvailable
is 0.5 GB.One guess at how much RAM would be enough is from the kernel,
Committed_AS
. Enough to not page out. Which can be a problematic metric, but it is one of the few that directly estimates physical RAM usage. From your meminfo output, about 23 GB, or 150% ofMemTotal
. Half again what you have might be fine for some workloads, but I would be uncomfortable on a system with no swap and suspected memory capacity issues.Some totals add up to more than 100% because the virtual memory system is being both lazy and clever. But only so much it can do. Shared memory (presumably a database) and apps anonymous memory adding to nearly as much as the host risks miserable performance.