The memory collection script for Munin lists used, free, pinned, and swap in a stacked graph. The problem is that the “used” graph is total used memory, which includes pinned, computational RAM, and filesystem cache. So, the pinned RAM is double-counted. And, to me, it’s very important to know how much RAM is used by filesystem cache. With the default script a 64GB system with 16GB of pinned memory, 16GB of computational memory, and 32GB of filesystem page looked like it had 80GB of RAM and was suffering from memory exhaustion. When in reality it’s a 64GB system with only 50% of the memory used by the OS and user programs.
I’ve changed the script for my systems. I’ve added a routine to get the file pages from vmstat then subtracted that from the used RAM. And, I’ve subtracted the pinned memory from used as well. The results match what is reported by nmon closely, so it seems pretty good to me.
And, here’s the updated script: