Linux Terminal: Check who uses all your memory with smem

As system administrator, or simple user that uses Linux on its desktop sometime you notice that something it’s eating all the memory of your system.
As first thing be sure to understand how Linux manage memory, I’ve be called too many time by scared users that did a free and were unable to read its output properly, in short, don’t worry if the Linux Kernel it’s using your memory to cache file.
< rant on >
To my “beloved” users:
Be assured that the Kernel developers can do a better job than you (and me) in find a good algorithm to cache file and free that memory area when a process need it, so please don’t ask me to put in cron some job that run something like that :

echo 3 > /proc/sys/vm/drop_caches

After that you’ll have more free memory available on the system, true, but the system will have to re-read all the files from the disk, so in terms of performance this is usually a bad move.
< /rant >
But now let’s take a look at a nice small program that can help us in find which process/users are using, for real, the memory of our systems.

smem is a tool that can give numerous reports on memory usage on Linux systems. Unlike existing tools, smem can report proportional set size (PSS), which is a more meaningful representation of the amount of memory used by libraries and applications in a virtual memory system.
Because large portions of physical memory are typically shared among multiple applications, the standard measure of memory usage known as resident set size (RSS) will significantly overestimate memory usage. The parameter PSS instead measures each application’s “fair share” of each shared area to give a realistic measure.
smem has many features:

system overview listing
listings by process, mapping, user
filtering by process, mapping, or user
configurable columns from

Read more at Linux Aria

Comments are closed.