Assistance to calculate number of hugepages

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.

Run the ps $id outside the for hugepagesize ... loop. Same for the echo $total_num_hugepages . echo each result within. Adorn your echo es with the desired text.