I'm trying to determine which process is using a large number of Huge Pages, but I can't find a simple Linux command (like top
) to view the Huge Page usage. The best I could find was
$ cat /sys/devices/system/node/node*/meminfo | fgrep Huge
Node 0 HugePages_Total: 512
Node 0 HugePages_Free: 159
Node 0 HugePages_Surp: 0
Node 1 HugePages_Total: 512
Node 1 HugePages_Free: 0
Node 1 HugePages_Surp: 0
which tells me at the granularity of Nodes where the Huge Pages are in use, but I would like to see the Huge Page usage per process. I wouldn't mind iterating over all processes and cat
ing some /sys
special device to get this information.
A similiar question here got no reponses: https://stackoverflow.com/q/25731343/364818
I am not running Oracle, btw.
Best Answer
I found a discussion on ServerFault that discusses this. Basically,
and getting the process name
will give you an idea of what processes are using huge memory.
The sum of free pages (3560) plus the pages from the 2 process (273+263) equals 4096. All accounted for!
The perl script to sum the
dirty=
fields is here:https://serverfault.com/questions/527085/linux-non-transparent-per-process-hugepage-accounting/644471#644471