Process Status Analysis – the first steps
I am pleased to announce my first cross-platform and open source project, the Process Status Analysis tool, available on GitHub.
The Process Status Analysis (psa) version 0.2 is available for Windows and Linux (Debian derived / Ubuntu tested) Operating Systems.
Download:
psa for Ubuntu Linux x64 (880 downloads)
Download:
psa for Ubuntu Linux x86 (531 downloads)
Download:
psa.exe for Windows x64 (510 downloads)
Download:
psa.exe for Win32 (518 downloads)
You may wonder why I did it or what it brings new. Well, I did it for fun, in my spare time and I will continue improving it when I’ll find a time to do it.
The project is written in modern C++ using idioms from the C++ 1x standards. Even if initially was done as a C++ for Windows only, during the past days I managed the port of it for Linux using Visual Studio 2017’s project templates and a connection via SSH.
In general, the source code base is similar, differing just by OS specific stuff.
In case you want to find out more about how to develop C++ Linux projects from the best development tool (imho), Visual Studio, you can find more information on Visual Studio development team blog.
Related to this psa project, the Linux version requires libprocps4-dev library in order to build.
The main reason for starting this project was that I wanted to know what’s the total memory amount used by my Chrome browser. I know it uses a lot of resources but not that much… 🙂
Even if my preferred processes analysis tool, the Process Hacker offers a lot of processes administration possibilities but it didn’t provide what I want, so I decided to enjoy a bit.

Sample – Google Chrome processes in Process Hacker tool
So, what I achieved by psa.exe was something like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
C:\Windows\system32> psa -o chrome PID [896] chrome.exe 237.5234 MB PID [1496] chrome.exe 87.6875 MB PID [2388] chrome.exe 166.5000 MB PID [5860] chrome.exe 3.1211 MB PID [7336] chrome.exe 273.2188 MB PID [8444] chrome.exe 68.0508 MB PID [8624] chrome.exe 63.3945 MB PID [9180] chrome.exe 296.9766 MB PID [10600] chrome.exe 292.6289 MB PID [12352] chrome.exe 182.5977 MB PID [13688] chrome.exe 2.3555 MB PID [14052] chrome.exe 73.1875 MB PID [16200] chrome.exe 211.9805 MB PID [17284] chrome.exe 55.7148 MB PID [18036] chrome.exe 208.6680 MB PID [19012] chrome.exe 457.2305 MB PID [19312] chrome.exe 143.4766 MB ----------------------------------- Total used memory: 2824.31 MB |
A bit too much in my humble opinion…
The features this tool offers includes:
Get all processes loaded in memory information
I case you want to have a snapshot of all the processes loaded in the OS’s memory you can have it with.
1 |
psa -a |
Get process only used memory
With psa.exe you can reach the used memory by a specific parameter -o after the process name or at least a part of it’s name.
1 |
psa -o chrome // find how much memory uses your Chrome! o_O |
Currently, there is no string replace ‘*’ but it’s ongoing.
Print processes tree
Storing the processes’ data within a generic tree done by me I took the decision to print the processes tree output, in a similar way there is in Windows with tree.exe tool or on Linux in pstree or even htop.
1 2 |
./psa -t ./psa -t 1034 |

Process Status Analysis partial tree of Windows process
Top most “expensive” processes
In case you want to see what are the most expensive processes within your operating system you can achieve it with:
1 |
psa -e 20 |
or simpler “psa -e” in case you’re sure you want top 10 expensive processes (the default value).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
silviu@ubuntu-dev-server:~/projects/psa-lin/bin/x64/Release$ ./psa -e Top 10 consuming memory processes ------------------------------------------- PID Process Name RAM Usage ------------------------------------------- [924] /usr/lib/policykit-1/polkitd 270.68 MB [906] /usr/lib/accountsservice/accounts-daemon 269.43 MB [842] /usr/sbin/rsyslogd 250.39 MB [878] /usr/lib/snapd/snapd 197.29 MB [531] /lib/systemd/systemd-timesyncd 97.97 MB [1614] sshd: silviu@pts/0 93.16 MB [1576] sshd: silviu [priv] 93.16 MB [863] /usr/bin/lxcfs 93.13 MB [427] /sbin/lvmetad 92.55 MB [1034] /usr/sbin/sshd 63.98 MB ------------------------------------------- |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
C:\Windows\system32> psa -e 10 Top 10 consuming memory processes ------------------------------------------- PID Process Name RAM Usage ------------------------------------------- [19012] chrome.exe 435.67 MB [17684] chrome.exe 329.51 MB [7336] chrome.exe 259.61 MB [15576] devenv.exe 248.20 MB [896] chrome.exe 222.85 MB [2388] chrome.exe 188.21 MB [18428] chrome.exe 184.48 MB [15760] chrome.exe 173.82 MB [488] Dropbox.exe 162.15 MB [5488] googledrivesync.exe 161.11 MB ------------------------------------------- Total used memory: 2365.61 MB |
Redirect output to a file
From the standard output the information can be easely redirected to a file.
1 2 |
c:\> psa -t > windows_processes_tree.txt # ./psa -t > linux_processes_tree.txt |
Kill process feature
This feature was not implemented yet but in case we need it we can be done it easily with the existing tools on the target OS (ex. Task Manager, Process Exporer/Hacker, pskill.exe for Windows or the combination ps + kill on LInux).
Feedbacks and improvements
Any constructive feedback, suggestions, contributions to improvements are appreciated.
Feel free to add any issue you find, wish or suggestion you have in the GitHub repository, the Issues section or here as a comment.