Given a PID of the process running in Linux (latest kernel), how do I find out:

  1. The number of pages it is using
  2. The size of each page it is using (4K, 2MB or 1GB)

This is for x86-64 architecture

link|improve this question
feedback

3 Answers

Depending on how verbose the information you want should be, you want one of the following:

  • /proc/pid/statm: Provides information about memory usage, measured in pages.
  • /proc/pid/status: Provides much of the information from /proc/pid/statm, but is easier to read.

Check out the man-page for the proc-files for thorough documentation of what the different columns mean.

link|improve this answer
well, 'statm' doesn't provide info per page size. What if my process uses 10 pages of 4K size, 20 pages of 2MB size and 1 page of 1GB size? neither 'status' provides info about the amount of each page size. – Nulik Nov 5 '11 at 15:21
@Nulik do you know if you have huge pages enabled ? – Iain Nov 5 '11 at 17:25
@Iain yes, /proc/filesystems says "nodev hugetlbfs" – Nulik Nov 6 '11 at 3:14
btw, man 5 proc don't show the latest changes for 2.6.34 – Nulik Nov 6 '11 at 3:26
feedback

Pagesize is system wide and can be found with the getconf command

getconf PAGESIZE

The mem_usage.py tool can provide some more detailed information on a processes memory usage.

link|improve this answer
ok, I got it , its is called MMUPageSize and it appears in /proc/pid/statm – Nulik Nov 6 '11 at 3:19
feedback

The number of pages it is using

awk '{ print $24 }' /proc/[pid]/stat

or:

awk '{ print $2 }' /proc/[pid]/statm

According to the man proc, it is the number of pages the process has in real memory. Also take a look at the procstat.c to display proc stat in human readable format.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.