In this post, I will share with you useful shell script to find per process swap usage on your system.
Method-1
total_swap=0
for pid in `ls /proc | grep "[[:digit:]]"| sort -n`
do
if [[ "$pid" -gt "0" && -f "/proc/$pid/status" ]]; then
pname=`cat /proc/$pid/status|awk -F"Name:" '{print $2}'`
swap_usage=`cat /proc/$pid/smaps | awk 'BEGIN{total=0}/^Swap:/{total+=$2}END{print total}'`
echo "$pname($pid): $swap_usage KB"
total_swap=$((total_swap + swap_usage))
fi
done
echo "Total Swap: $total_swap Kb"
Method -2
cat /proc/{pid}/status|awk '/VmSwap:/{print $2 " " $3}'
Finding Out Memory Usage without adding shared memory (non-shared): smem utility.
- Unshared memory is reported as the USS (Unique Set Size).
- The unshared memory (USS) plus a process’s proportion of shared memory is reported as the PSS (Proportional Set Size)
- The USS and PSS only __include physical memory usage. They do not include memory that has been swapped out to disk
#add epel-release repo.
yum install smem
[root@rhce ~]# smem -u ansible
User Count Swap USS PSS RSS
nobody 1 184 0 2 92
colord 1 1544 4 5 192
libstoragemgmt 1 116 40 40 60
rtkit 1 184 48 48 140
avahi 2 448 152 170 448
postfix 2 1900 168 171 420
haproxy 2 2732 264 305 560
dbus 1 432 1980 2010 2364
polkitd 1 10904 2780 2897 3856
root 53 146564 97156 101862 119260
ansible 64 413824 477768 481342 501392
Finding out memory statistics as percentage.
[root@rhce ~]# smem -w -p
Area Used Cache Noncache
firmware/hardware 0.00% 0.00% 0.00%
kernel image 0.00% 0.00% 0.00%
kernel dynamic memory 30.13% 10.81% 19.31%
userspace memory 58.54% 3.20% 55.33%
free memory 11.34% 11.34% 0.00%
Show totals and percentage:
PID User Command Swap USS PSS RSS
77794 ansible /usr/libexec/gnome-terminal 0.84% 0.23% 0.23% 0.26%
72241 root /usr/sbin/rsyslogd -n 1.13% 0.26% 0.28% 0.33%
678 polkitd /usr/lib/polkit-1/polkitd - 0.69% 0.29% 0.30% 0.40%
5688 ansible /usr/libexec/gnome-settings 0.42% 0.32% 0.33% 0.44%
1 root /usr/lib/systemd/systemd -- 0.07% 0.36% 0.37% 0.41%
5919 ansible /usr/libexec/tracker-store 0.50% 0.45% 0.45% 0.47%
5827 ansible /usr/libexec/caribou 0.16% 0.65% 0.65% 0.68%
78786 ansible evince 0.00% 0.78% 0.80% 0.85%
78818 ansible eog 0.00% 0.83% 0.83% 0.85%
5900 ansible nautilus --no-default-windo 0.27% 0.89% 0.92% 0.98%
81293 root python /bin/smem -t -p 0.00% 1.03% 1.07% 1.16%
78686 ansible /usr/lib64/libreoffice/prog 4.10% 3.40% 3.41% 3.45%
78843 ansible /usr/lib/jvm/java-1.8.0-ope 0.00% 4.97% 5.03% 5.12%
1452 root /usr/bin/Xorg :0 -backgroun 2.21% 5.93% 6.13% 6.34%
78519 ansible /usr/lib64/firefox/firefox 2.02% 10.02% 10.03% 10.12%
5733 ansible /usr/bin/gnome-shell 8.21% 24.20% 24.25% 24.41%
-------------------------------------------------------------------------------
130 11 36.78% 58.20% 59.07% 63.11%
Show as a Chart: To show as a chart you have to install matpilotlib package.
yum install python-matplotlib.x86_64
Plotting specific process:
smem --userfilter="haproxy" --bar name -c"pss rss"
[root@rhce ~]# pidof haproxy
76708 76706
Plotting Swap usage:
smem --processfilter="gnome-shell" --bar name -c "pss uss swap"
Leave a Reply