Skip to content

Instantly share code, notes, and snippets.

@grafuls
Last active August 31, 2018 13:27
Show Gist options
  • Save grafuls/550353fc5c1979894014ce9bb40ce679 to your computer and use it in GitHub Desktop.
Save grafuls/550353fc5c1979894014ce9bb40ce679 to your computer and use it in GitHub Desktop.
Reporting memory consumption for libdvirtd on kubevirt VMIs
#!/bin/bash
vhid=$(pgrep virt-handler)
vcid=$(pgrep virt-controller)
vaid=$(pgrep virt-api)
for id in $vhid $vcid $vaid; do
if [ -f /proc/$id/smaps ]; then
echo
if (( $id == $vhid )); then
proc="Virt-handler"
elif (( $id == $vcid )); then
proc="Virt-controller"
elif (( $id == $vaid )); then
proc="Virt-api"
fi
echo "* $proc Mem usage"
rss=$(awk 'BEGIN {i=0} /^Rss/ {i = i + $2} END {print i}' /proc/$id/smaps)
pss=$(awk 'BEGIN {i=0} /^Pss/ {i = i + $2 + 0.5} END {print i}' /proc/$id/smaps)
sc=$(awk 'BEGIN {i=0} /^Shared_Clean/ {i = i + $2} END {print i}' /proc/$id/smaps)
sd=$(awk 'BEGIN {i=0} /^Shared_Dirty/ {i = i + $2} END {print i}' /proc/$id/smaps)
echo "-- Rss: $rss kB"
echo "-- Pss: $pss kB"
echo "-- Shr: $(($sd + $sc)) kB"
fi
done
for pid in $(pgrep -f /usr/sbin/libvirtd); do
vlid=$(ps -o ppid= -p $pid)
lvdid=$(ps -o ppid= -p $vlid)
epid=$(ps -o ppid= -p $lvdid)
vmi=$(ps -o cmd= -p $lvdid | awk '{print $5}')
qid=$(pgrep -P $epid qemu)
for id in $qid $pid $vlid; do
if [ -f /proc/$id/smaps ]; then
echo
if (( $id == $qid )); then
proc="Qemu-kvm"
elif (( $id == $pid )); then
proc="Libvirtd"
elif (( $id == $vlid )); then
proc="Virt-launcher"
fi
echo "* $proc Mem usage for $vmi"
rss=$(awk 'BEGIN {i=0} /^Rss/ {i = i + $2} END {print i}' /proc/$id/smaps)
pss=$(awk 'BEGIN {i=0} /^Pss/ {i = i + $2 + 0.5} END {print i}' /proc/$id/smaps)
sc=$(awk 'BEGIN {i=0} /^Shared_Clean/ {i = i + $2} END {print i}' /proc/$id/smaps)
sd=$(awk 'BEGIN {i=0} /^Shared_Dirty/ {i = i + $2} END {print i}' /proc/$id/smaps)
echo "-- Rss: $rss kB"
echo "-- Pss: $pss kB"
echo "-- Shr: $(($sd + $sc)) kB"
fi
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment