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.

Scott Pack
  • 14,907
  • 10
  • 53
  • 83
Nulik
  • 284
  • 1
  • 4
  • 14

3 Answers3

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.

user9517
  • 115,471
  • 20
  • 215
  • 297
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.

Kvisle
  • 4,193
  • 24
  • 25
  • 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 05 '11 at 15:21
  • @Nulik do you know if you have huge pages enabled ? – user9517 Nov 05 '11 at 17:25
  • @Iain yes, /proc/filesystems says "nodev hugetlbfs" – Nulik Nov 06 '11 at 03:14
  • btw, man 5 proc don't show the latest changes for 2.6.34 – Nulik Nov 06 '11 at 03: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.

quanta
  • 51,413
  • 19
  • 159
  • 217