Last Updated on May 28, 2022
This is the first in a series of articles highlighting essential system tools. These are small utilities, useful for system administrators as well as regular users of Linux based systems. The series will examine both graphical and text based open source utilities. For details of all tools in this series, please check the table in the summary section.
The first tool under the spotlight is ps_mem, a small utility that reliably reports how much memory is consumed by an application.
Linux has many utilities that report memory usage such as free, top, and ps. What makes ps_mem different? Read on.
Many distributions provide a convenient package for ps_mem. For example, the software is included in the community repository in Manjaro. And you can install the script using pip.
There’s also a Python script that’s available from the project’s GitHub code repository that doesn’t require any installation.
Here’s a sample of the output from the utility. The first memory column shows the amount of private RAM being used by the program, with the second column shows the shared RAM. The third column shows the total RAM used by the program. As you can see, Thunderbird and Firefox are consuming significant dollops of RAM.
One of the uses of ps_mem is to compare the memory usage of a specific type of software. For example, the screenshot below captures the memory usage of five web browsers: Firefox, Chromium, Opera, Midori, and w3m, all viewing a single identical web page. Unsurprisingly w3m consumes the least amount of RAM; it’s a text-based web browser.
There’s still some interpretation required to make valid comparisons. For example, ps_mem reports Firefox memory in 2 lines. If you have extensions running, they’ll be a third line.
143.3 MiB + 40.2 MiB = 183.6 MiB Web Content (2)
194.4 MiB + 34.0 MiB = 228.4 MiB firefox
Midori’s memory usage is reported in 3 lines:
16.8 MiB + 5.2 MiB = 21.9 MiB WebKitNetworkProcess
26.9 MiB + 10.9 MiB = 37.7 MiB midori
201.6 MiB + 12.8 MiB = 214.4 MiB WebKitWebProcess
This reporting issue applies to version 3.12. But if you use the latest Python code from the GitHub code repository, memory reported is now grouped for Firefox, although not for Midori.
The software can show memory usage by specific PIDs, show only the total amount of memory used (which is intended for automated tools), as well as showing memory usage by processes rather than by programs.
There’s also the option to show swap information, filter the results, as well as measuring and showing process memory every N seconds.
ps_mem is a very handy utility. It interrogates the kernel to obtain the memory information, outputting the information in a clean and uncluttered way. It’s awesome software.
Developer: Pádraig Brady, Andres Riancho, Facundo Victor, and other contributors
License: GNU Lesser General Public License v2.1
All the essential tools in this series:
|Essential System Tools|
|Alacritty||Innovative, hardware-accelerated terminal emulator|
|BleachBit||System cleaning software. Quick and easy way to service your computer|
|bottom||Graphical process/system monitor for the terminal|
|btop++||Monitor usage and stats for CPU, memory, disks, network and processes|
|catfish||Versatile file searching software|
|Clonezilla||Partition and disk cloning software|
|CPU-X||System profiler with both a GUI and text-based|
|Czkawka||Find duplicate files, big files, empty files, similar images, and much more|
|ddrescue||Data recovery tool, retrieving data from failing drives as safely as possible|
|dust||More intuitive version of du written in Rust|
|f3||Detect and fix counterfeit flash storage|
|Fail2ban||Ban hosts that cause multiple authentication errors|
|fdupes||Find or delete duplicate files|
|Firejail||Restrict the running environment of untrusted applications|
|Glances||Cross-platform system monitoring tool written in Python|
|GParted||Resize, copy, and move partitions without data|
|GreenWithEnvy||NVIDIA graphics card utility|
|gtop||System monitoring dashboard|
|gWakeOnLAN||Turn machines on through Wake On LAN|
|hyperfine||Command-line benchmarking tool|
|inxi||Command-line system information tool that's a time-saver for everyone|
|journalctl||Query and display messages from the journal|
|kmon||Manage Linux kernel modules with this text-based tool|
|Krusader||Advanced, twin-panel (commander-style) file manager|
|Neofetch||System information tool written in Bash|
|Nmap||Network security tool that builds a "map" of the network|
|nmon||Systems administrator, tuner, and benchmark tool|
|nnn||Portable terminal file manager that's amazingly frugal|
|pet||Simple command-line snippet manager|
|Pingnoo||Graphical representation for traceroute and ping output|
|ps_mem||Accurate reporting of software's memory consumption|
|SMC||Multi-featured system monitor written in Python|
|Timeshift||Reliable system restore tool|
|QDirStat||Qt-based directory statistics|
|QJournalctl||Graphical User Interface for systemd’s journalctl|
|TLP||Must-have tool for anyone running Linux on a notebook|
|Unison||Console and graphical file synchronization software|
|VeraCrypt||Strong disk encryption software|
|Ventoy||Create bootable USB drive for ISO, WIM, IMG, VHD(x), EFI files|
|WTF||Personal information dashboard for your terminal|