6

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.

3 Answers 3

3

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.

1
  • ok, I got it , its is called MMUPageSize and it appears in /proc/pid/statm
    – Nulik
    Nov 6, 2011 at 3:19
2

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.

4
  • 1
    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, 2011 at 15:21
  • @Nulik do you know if you have huge pages enabled ?
    – user9517
    Nov 5, 2011 at 17:25
  • @Iain yes, /proc/filesystems says "nodev hugetlbfs"
    – Nulik
    Nov 6, 2011 at 3:14
  • btw, man 5 proc don't show the latest changes for 2.6.34
    – Nulik
    Nov 6, 2011 at 3:26
2

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .