Hi,
I am trying to count the number of hugepages & total usage being used by applications..
INPUT FILE
[root@xxx~]# grep huge /proc/*/numa_maps 2>/dev/null
/proc/47173/numa_maps:140000000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N0=1 kernelpagesize_kB=1048576
/proc/47173/numa_maps:1000000000 default file=/buffers-numa-0 huge dirty=313 N0=313 kernelpagesize_kB=2048
/proc/47173/numa_maps:1027200000 default file=/buffers-numa-1 huge dirty=313 N1=313 kernelpagesize_kB=2048
/proc/47173/numa_maps:2d00000000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N1=1 kernelpagesize_kB=1048576
/proc/47173/numa_maps:4dc0200000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N0=1 kernelpagesize_kB=2048
/proc/47173/numa_maps:4dc0400000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N0=1 kernelpagesize_kB=2048
/proc/47173/numa_maps:4dc0600000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N0=1 kernelpagesize_kB=2048
/proc/47173/numa_maps:2aaac0000000 default file=/mnt/hugepages1G/libvirt/qemu/2-instance-0000001f/qemu_back_mem._objects_ram-node0.su05tD\040(deleted) huge dirty=2 mapmax=2 N0=2 kernelpagesize_kB=1048576
/proc/488519/numa_maps:7f6e80000000 bind:0 file=/mnt/hugepages1G/libvirt/qemu/2-instance-0000001f/qemu_back_mem._objects_ram-node0.su05tD\040(deleted) huge dirty=2 mapmax=2 N0=2 kernelpagesize_kB=1048576
SCRIPT
#!/bin/bash
total_num_hugepages=0
for id in $(grep huge /proc/*/numa_maps 2>/dev/null | awk -F'/' '{proc[$3]=1} END {for (i in proc) print i}'); do
for hugepagesize in $(find /sys/devices/system/node/node[0-9]*/hugepages/ -type d -name "hugepages-*" | sed 's/.*hugepages-\([0-9]\+\).*/\1/'| sort | uniq);
do
ps $id;
total_num_hugepages+=$(grep huge /proc/$id/numa_maps 2>/dev/null | grep "kernelpagesize.*=$hugepagesize" | sed 's/.*dirty=\([0-9]\+\).*/\1/')
echo $total_num_hugepages
done
done
[root@xxx ~]# ./hugepage_usage.sh
PID TTY STAT TIME COMMAND
47173 ? SLl 333416:10 /usr/bin/vpp -c /etc/vpp/vpp.conf
01 1 2
PID TTY STAT TIME COMMAND
47173 ? SLl 333416:10 /usr/bin/vpp -c /etc/vpp/vpp.conf
01 1 2313 313 1 1 1
PID TTY STAT TIME COMMAND
488519 ? Sl 27:46 /usr/libexec/qemu-kvm -name guest=instance-0000001f,debug-threads=on -S -ob
01 1 2313 313 1 1 12
PID TTY STAT TIME COMMAND
488519 ? Sl 27:46 /usr/libexec/qemu-kvm -name guest=instance-0000001f,debug-threads=on -S -ob
01 1 2313 313 1 1 12
Expected sample output
PID TTY STAT TIME COMMAND
47173 ? SLl 333416:10 /usr/bin/vpp -c /etc/vpp/vpp.conf
/usr/bin/vpp
10 hugepages x 1048576 kB = xx kB
2 hugepages x 2048 kB = xx kB
Total hugepage usage = xx kB
Please give me some pointers on how I can improve my code, and achieve the output.
Thanks.