Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
pmap(1)								       pmap(1)

NAME
       pmap - display information about	the address space of a process

SYNOPSIS
       /usr/bin/pmap [-rslF] [pid | core] ...

       /usr/bin/pmap -x	[-aslF]	[pid | core] ...

       /usr/bin/pmap -S	[-alF] [pid | core] ...

       The  pmap  utility  prints  information	about  the  address space of a
       process.

       The following options are supported:

       -a	Prints anonymous and swap reservations for shared mappings.

       -F	Force. Grabs the target	process	even if	 another  process  has
		control.

       -l	Shows unresolved dynamic linker	map names.

       -r	Prints the process's reserved addresses.

       -s	Prints HAT page	size information.

       -S	Displays  swap	reservation  information per mapping. See  for
		more information.

       -x	Displays additional information	per mapping. See  for more in-
		formation.

       The  pmap  utility  prints  information	about  the  address space of a
       process.

       Process Mappings

	   /usr/bin/pmap [ -rslF ]  [ pid | core ] ...

	   By default, pmap displays the mappings in the virtual address order
	   they	 are  mapped  into  the	 process. The mapping size, flags, and
	   mapped object name are shown.

       Process anon/locked mapping details

	   /usr/bin/pmap -x [ -aslF ]  [ pid | core ] ...

	   The -x option displays additional information per mapping. The size
	   of  each mapping, the amount	of resident physical memory (RSS), the
	   amount of anonymous memory, and the	amount	of  memory  locked  is
	   shown  with	this  option.  This  does not include anonymous	memory
	   taken by kernel address space due to	this process.

       Swap Reservations

	   /usr/bin/pmap -S [ -alF ]  [	pid | core ] ...

	   The -S option displays swap reservation information per mapping.

DISPLAY	FORMATS
       One line	of output is printed for each mapping within the process,  un-
       less  the  -s option is specified, where	one line is printed for	a con-
       tiguous mapping of each hardware	 translation  page  size.  The	column
       headings	are shown in parentheses below.

       Virtual Address (Address)

	   The	first column of	output represents the starting virtual address
	   of each mapping. Virtual addresses are displayed in	ascending  or-
	   der.

       Virtual Mapping Size (Kbytes)

	   The virtual size in kilobytes of each mapping.

       Resident	Physical Memory	(RSS)

	   The	amount	of  physical  memory in	kilobytes that is resident for
	   each	mapping, including that	which is  shared  with	other  address
	   spaces.

       Anonymous Memory	(Anon)

	   The	number	of  pages,  counted  by	using the system page size, of
	   anonymous memory associated with the	specified  mapping.  Anonymous
	   memory shared with other address spaces is not included, unless the
	   -a option is	specified.

	   Anonymous memory is reported	for the	process	heap, stack, for 'copy
	   on	write'	pages  with  mappings  mapped  with  MAP_PRIVATE  (see
	   mmap(2)).

       Locked (Locked)

	   The number of pages locked within the mapping. Typical examples are
	   memory  locked with mlock() and System V shared memory created with
	   SHM_SHARE_MMU.

       Permissions/Flags (Mode)

	   The virtual memory permissions are shown for	 each  mapping.	 Valid
	   permissions are:

	   r:	    The	mapping	may be read by the process.

	   w:	    The	mapping	may be written by the process.

	   x:	    Instructions  that	reside	within the mapping may be exe-
		    cuted by the process.

	   Flags showing additional information	for each mapping may  be  dis-
	   played:

	   s:	    The	 mapping  is  shared such that changes made in the ob-
		    served address space are committed to the mapped file, and
		    are	visible	from all other processes sharing the mapping.

	   R:	    Swap space is not reserved for this	mapping. Mappings cre-
		    ated with MAP_NORESERVE and	System	V  ISM	shared	memory
		    mappings do	not reserve swap space.

	   *:	    The	 data  for the mapping is not present in the core file
		    (only applicable when applied to a core file).  See	 core-
		    adm(1M) for	information on configuring core	file content.

       Mapping Name (Mapped File)

	   A  descriptive  name	for each mapping. The following	major types of
	   names are displayed for mappings:

	     o	A mapped file: For mappings between a process and a file,  the
		pmap  command  attempts	to resolve the file name for each map-
		ping. If the file name cannot be resolved, pmap	 displays  the
		major  and minor number	of the device containing the file, and
		the file system	inode number of	the file.

	     o	Anonymous memory: Memory not relating to any named  object  or
		file within the	file system is reported	as [ anon ].

		The  pmap  command  displays  common  names  for certain known
		anonymous memory mappings:

		[ heap ]		The mapping is the process heap.

		[ stack	]		The mapping is the main	stack.

		[ stack	tid=n ]		The mapping is the stack for thread n.

		[ altstack tid=n ]	The mapping is used as	the  alternate
					signal stack for thread	n.

		If the common name for the mapping is unknown, pmap displays [
		anon ] as the mapping name.

	     o	System V Shared	Memory:	Mappings created using System V	shared
		memory system calls are	reported with the names	shown below:

		shmid=n:	The  mapping  is  a  System  V	shared	memory
				mapping. The shared memory identifier that the
				mapping	was created with is reported.

		ism shmid=n:	The  mapping  is  an  "Intimate	Shared Memory"
				variant	of System V shared  memory.  ISM  map-
				pings  are created with	the SHM_SHARE_MMU flag
				set,  in   accordance	with   shmat(2)	  (see
				shmop(2)).

		dism shmid=n:	The  mapping  is  a  pageable  variant of ISM.
				Pageable ISM is	created	with the  SHM_PAGEABLE
				flag  set  in  accordance  with	 shmat(2) (see
				shmop(2)).

	     o	Other: Mappings	of other objects, including  devices  such  as
		frame  buffers.	 No mapping name is shown for other mapped ob-
		jects.

       Page Size (Pgsz)

	   The page size in kilobytes that is used for hardware	address	trans-
	   lation for this mapping. See	memcntl(2) for further information.

       Swap Space (Swap)

	   The	amount	of  swap  space	in kilobytes that is reserved for this
	   mapping. That is, swap space	that is	deducted from the total	avail-
	   able	 pool of reservable swap space that is displayed with the com-
	   mand	swap -s. See swap(1M).

       Example 1: Displaying Process Mappings

       By default, pmap	prints one line	for each mapping  within  the  address
       space of	the target process. The	following example displays the address
       space of	a typical bourne shell:

       example$	pmap 102905
       102905:	  sh
       00010000	   192K	r-x--  /usr/bin/ksh
       00040000	     8K	rwx--  /usr/bin/ksh
       00042000	    40K	rwx--	 [ heap	]
       FF180000	   664K	r-x--  /usr/lib/libc.so.1
       FF236000	    24K	rwx--  /usr/lib/libc.so.1
       FF23C000	     8K	rwx--  /usr/lib/libc.so.1
       FF250000	     8K	rwx--	 [ anon	]
       FF260000	    16K	r-x--  /usr/lib/en_US.ISO8859-1.so.2
       FF272000	    16K	rwx--  /usr/lib/en_US.ISO8859-1.so.2
       FF280000	   560K	r-x--  /usr/lib/libnsl.so.1
       FF31C000	    32K	rwx--  /usr/lib/libnsl.so.1
       FF324000	    32K	rwx--  /usr/lib/libnsl.so.1
       FF340000	    16K	r-x--  /usr/lib/libc_psr.so.1
       FF350000	    16K	r-x--  /usr/lib/libmp.so.2
       FF364000	     8K	rwx--  /usr/lib/libmp.so.2
       FF380000	    40K	r-x--  /usr/lib/libsocket.so.1
       FF39A000	     8K	rwx--  /usr/lib/libsocket.so.1
       FF3A0000	     8K	r-x--  /usr/lib/libdl.so.1
       FF3B0000	     8K	rwx--	 [ anon	]
       FF3C0000	   152K	r-x--  /usr/lib/ld.so.1
       FF3F6000	     8K	rwx--  /usr/lib/ld.so.1
       FFBFC000	    16K	rw---	 [ stack ]
	total	  1880K

       Example 2: Displaying Memory Allocation and Mapping Types

       The -x option can be used to provide information	about the memory allo-
       cation  and  mapping  types  per	 mapping. The amount of	resident, non-
       shared anonymous, and locked memory is shown for	each mapping:

       example$	pmap -x	102908
       102908:	 sh
       Address	 Kbytes	    RSS	   Anon	 Locked	Mode   Mapped File
       00010000	     88	     88	      -	      -	r-x--  sh
       00036000	      8	      8	      8	      -	rwx--  sh
       00038000	     16	     16	     16	      -	rwx--	 [ heap	]
       FF260000	     16	     16	      -	      -	r-x--  en_US.ISO8859-1.so.2
       FF272000	     16	     16	      -	      -	rwx--  en_US.ISO8859-1.so.2
       FF280000	    664	    624	      -	      -	r-x--  libc.so.1
       FF336000	     32	     32	      8	      -	rwx--  libc.so.1
       FF360000	     16	     16	      -	      -	r-x--  libc_psr.so.1
       FF380000	     24	     24	      -	      -	r-x--  libgen.so.1
       FF396000	      8	      8	      -	      -	rwx--  libgen.so.1
       FF3A0000	      8	      8	      -	      -	r-x--  libdl.so.1
       FF3B0000	      8	      8	      8	      -	rwx--	 [ anon	]
       FF3C0000	    152	    152	      -	      -	r-x--  ld.so.1
       FF3F6000	      8	      8	      8	      -	rwx--  ld.so.1
       FFBFE000	      8	      8	      8	      -	rw---	 [ stack ]
       --------	  -----	  -----	  -----	  ------
       total Kb	   1072	   1032	     56	      -

       The amount of incremental memory	used by	each additional	instance of  a
       process	can  be	 estimated  by using the resident and anonymous	memory
       counts of each mapping.

       In the above example, the bourne	shell has a resident  memory  size  of
       1032Kbytes.  However, a large amount of the physical memory used	by the
       shell is	shared with other instances of shell.  Another	identical  in-
       stance  of  the	shell  will share physical memory with the other shell
       where possible, and allocate anonymous memory for any  non-shared  por-
       tion.  In the above example, each additional bourne shell uses approxi-
       mately 56Kbytes of additional physical memory.

       A more complex example shows the	output format for a process containing
       different mapping types.	In this	example, the mappings are as follows:

       0001000:	Executable text, mapped	from 'maps' program

       0002000:	Executable data, mapped	from 'maps' program

       0002200:	Program	heap

       0300000:	A mapped file, mapped MAP_SHARED
       0400000:	A mapped file, mapped MAP_PRIVATE

       0500000:	A mapped file, mapped MAP_PRIVATE | MAP_NORESERVE

       0600000:	Anonymous memory, created by mapping /dev/zero

       0700000:	Anonymous memory, created by mapping /dev/zero
		with MAP_NORESERVE

       0800000:	A DISM shared memory mapping, created with SHM_PAGEABLE
		with 8MB locked	via mlock(2)

       0900000:	A DISM shared memory mapping, created with SHM_PAGEABLE,
		with 4MB of its	pages touched.

       0A00000:	A DISM shared memory mapping, created with SHM_PAGEABLE,
		with none of its pages touched.

       0B00000:	An ISM shared memory mapping, created with SHM_SHARE_MMU

       example$	pmap -x	15492
       15492:  ./maps
	Address	 Kbytes	    RSS	   Anon	 Locked	Mode   Mapped File
       00010000	      8	      8	      -	      -	r-x--  maps
       00020000	      8	      8	      8	      -	rwx--  maps
       00022000	  20344	  16248	  16248	      -	rwx--	 [ heap	]
       03000000	   1024	   1024	      -	      -	rw-s-  dev:0,2 ino:4628487
       04000000	   1024	   1024	    512	      -	rw---  dev:0,2 ino:4628487
       05000000	   1024	   1024	    512	      -	rw--R  dev:0,2 ino:4628487
       06000000	   1024	   1024	   1024	      -	rw---	 [ anon	]
       07000000	    512	    512	    512	      -	rw--R	 [ anon	]
       08000000	   8192	   8192	      -	   8192	rwxs-	 [ dism	shmid=0x5]
       09000000	   8192	   4096	      -	      -	rwxs-	 [ dism	shmid=0x4]
       0A000000	   8192	   8192	      -	   8192	rwxsR	 [ ism shmid=0x2 ]
       0B000000	   8192	   8192	      -	   8192	rwxsR	 [ ism shmid=0x3 ]
       FF280000	    680	    672	      -	      -	r-x--  libc.so.1
       FF33A000	     32	     32	     32	      -	rwx--  libc.so.1
       FF390000	      8	      8	      -	      -	r-x--  libc_psr.so.1
       FF3A0000	      8	      8	      -	      -	r-x--  libdl.so.1
       FF3B0000	      8	      8	      8	      -	rwx--	 [ anon	]
       FF3C0000	    152	    152	      -	      -	r-x--  ld.so.1
       FF3F6000	      8	      8	      8	      -	rwx--  ld.so.1
       FFBFA000	     24	     24	     24	      -	rwx--	 [ stack ]
       --------	-------	-------	-------	-------
       total Kb	  50464	  42264	  18888	  16384

       Example 3: Displaying Page Size Information

       The  -s	option	can  be	 used to display the hardware translation page
       sizes for each portion of the address space. (See memcntl(2) for	futher
       information on Solaris multiple page size support).

       In  the example below, we can see that the majority of the mappings are
       using an	8K-Byte	page size, while the heap  is  using  a	 4M-Byte  page
       size.

       Notice  that  non-contiguous regions of resident	pages of the same page
       size are	reported as separate  mappings.	 In  the  example  below,  the
       libc.so	library	 is  reported as separate mappings, since only some of
       the libc.so text	is resident:

       example$	pmap -xs 15492
       15492:  ./maps
	Address	 Kbytes	    RSS	   Anon	 Locked	Pgsz Mode   Mapped File
       00010000	      8	      8	      -	      -	  8K r-x--  maps
       00020000	      8	      8	      8	      -	  8K rwx--  maps
       00022000	   3960	   3960	   3960	      -	  8K rwx--    [	heap ]
       00400000	   8192	   8192	   8192	      -	  4M rwx--    [	heap ]
       00C00000	   4096	      -	      -	      -	   - rwx--    [	heap ]
       01000000	   4096	   4096	   4096	      -	  4M rwx--    [	heap ]
       03000000	   1024	   1024	      -	      -	  8K rw-s-  dev:0,2 ino:4628487
       04000000	    512	    512	    512	      -	  8K rw---  dev:0,2 ino:4628487
       04080000	    512	    512	      -	      -	   - rw---  dev:0,2 ino:4628487
       05000000	    512	    512	    512	      -	  8K rw--R  dev:0,2 ino:4628487
       05080000	    512	    512	      -	      -	   - rw--R  dev:0,2 ino:4628487
       06000000	   1024	   1024	   1024	      -	  8K rw---    [	anon ]
       07000000	    512	    512	    512	      -	  8K rw--R    [	anon ]
       08000000	   8192	   8192	      -	   8192	   - rwxs-    [	dism shmid=0x5 ]
       09000000	   4096	   4096	      -	      -	  8K rwxs-    [	dism shmid=0x4 ]
       0A000000	   4096	      -	      -	      -	   - rwxs-    [	dism shmid=0x2 ]
       0B000000	   8192	   8192	      -	   8192	  4M rwxsR    [	ism shmid=0x3 ]
       FF280000	    136	    136	      -	      -	  8K r-x--  libc.so.1
       FF2A2000	    120	    120	      -	      -	   - r-x--  libc.so.1
       FF2C0000	    128	    128	      -	      -	  8K r-x--  libc.so.1
       FF2E0000	    200	    200	      -	      -	   - r-x--  libc.so.1
       FF312000	     48	     48	      -	      -	  8K r-x--  libc.so.1
       FF31E000	     48	     40	      -	      -	   - r-x--  libc.so.1
       FF33A000	     32	     32	     32	      -	  8K rwx--  libc.so.1
       FF390000	      8	      8	      -	      -	  8K r-x--  libc_psr.so.1
       FF3A0000	      8	      8	      -	      -	  8K r-x--  libdl.so.1
       FF3B0000	      8	      8	      8	      -	  8K rwx--    [	anon ]
       FF3C0000	    152	    152	      -	      -	  8K r-x--  ld.so.1
       FF3F6000	      8	      8	      8	      -	  8K rwx--  ld.so.1
       FFBFA000	     24	     24	     24	      -	  8K rwx--    [	stack ]
	    -------- ------- ------- ------- -------
       total Kb	  50464	  42264	  18888	  16384

       Example 4: Displaying Swap Reservations

       The -S option can be used to  describe  the  swap  reservations	for  a
       process.	 The  amount of	swap space reserved is displayed for each map-
       ping within the process.	Swap reservations are  reported	 as  zero  for
       shared mappings,	since they are accounted for only once system wide.

       example$	pmap -S	15492
       15492:  ./maps
	Address	 Kbytes	   Swap	Mode   Mapped File
       00010000	      8	      -	r-x--  maps
       00020000	      8	      8	rwx--  maps
       00022000	  20344	  20344	rwx--	 [ heap	]
       03000000	   1024	      -	rw-s-  dev:0,2 ino:4628487
       04000000	   1024	   1024	rw---  dev:0,2 ino:4628487
       05000000	   1024	    512	rw--R  dev:0,2 ino:4628487
       06000000	   1024	   1024	rw---	 [ anon	]
       07000000	    512	    512	rw--R	 [ anon	]
       08000000	   8192	      -	rwxs-	 [ dism	shmid=0x5]
       09000000	   8192	      -	rwxs-	 [ dism	shmid=0x4]
       0A000000	   8192	      -	rwxs-	 [ dism	shmid=0x2]
       0B000000	   8192	      -	rwxsR	 [ ism shmid=0x3]
       FF280000	    680	      -	r-x--  libc.so.1
       FF33A000	     32	     32	rwx--  libc.so.1
       FF390000	      8	      -	r-x--  libc_psr.so.1
       FF3A0000	      8	      -	r-x--  libdl.so.1
       FF3B0000	      8	      8	rwx--	 [ anon	]
       FF3C0000	    152	      -	r-x--  ld.so.1
       FF3F6000	      8	      8	rwx--  ld.so.1
       FFBFA000	     24	     24	rwx--	 [ stack ]
       --------	-------	-------
       total Kb	  50464	  23496

       The  swap reservation information can be	used to	estimate the amount of
       virtual swap used by each additional  process.  Each  process  consumes
       virtual	swap from a global virtual swap	pool. Global swap reservations
       are reported by the 'avail' field of the	swap(1M) command.

       Example 5: Labeling Stacks in a Multi-threaded Process

       example$	pmap 121969
       121969: ./stacks
       00010000	      8K r-x--	/tmp/stacks
       00020000	      8K rwx--	/tmp/stacks
       FE8FA000	      8K rwx-R	  [ stack tid=11 ]
       FE9FA000	      8K rwx-R	  [ stack tid=10 ]
       FEAFA000	      8K rwx-R	  [ stack tid=9	]
       FEBFA000	      8K rwx-R	  [ stack tid=8	]
       FECFA000	      8K rwx-R	  [ stack tid=7	]
       FEDFA000	      8K rwx-R	  [ stack tid=6	]
       FEEFA000	      8K rwx-R	  [ stack tid=5	]
       FEFFA000	      8K rwx-R	  [ stack tid=4	]
       FF0FA000	      8K rwx-R	  [ stack tid=3	]
       FF1FA000	      8K rwx-R	  [ stack tid=2	]
       FF200000	     64K rw---	  [ altstack tid=8 ]
       FF220000	     64K rw---	  [ altstack tid=4 ]
       FF240000	    112K rw---	  [ anon ]
       FF260000	     16K rw---	  [ anon ]
       FF270000	     16K r-x--	/usr/platform/sun4u/lib/libc_psr.so.1
       FF280000	    672K r-x--	/usr/lib/libc.so.1
       FF338000	     24K rwx--	/usr/lib/libc.so.1
       FF33E000	      8K rwx--	/usr/lib/libc.so.1
       FF35A000	      8K rwxs-	  [ anon ]
       FF360000	    104K r-x--	/usr/lib/libthread.so.1
       FF38A000	      8K rwx--	/usr/lib/libthread.so.1
       FF38C000	      8K rwx--	/usr/lib/libthread.so.1
       FF3A0000	      8K r-x--	/usr/lib/libdl.so.1
       FF3B0000	      8K rwx--	  [ anon ]
       FF3C0000	    152K r-x--	/usr/lib/ld.so.1
       FF3F6000	      8K rwx--	/usr/lib/ld.so.1
       FFBFA000	     24K rwx--	  [ stack ]
	total	   1400K

       The following exit values are returned:

       0		       Successful operation.

       non-zero		       An error	has occurred.

       /proc/*		       process files

       /usr/proc/lib/*	       proc tools supporting files

       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Availability		     |SUNWesu			   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |See below.		   |
       +-----------------------------+-----------------------------+

       The command syntax is Evolving. The output formats are Unstable.

       ldd(1), mdb(1), proc(1),	ps(1), coreadm(1M), swap(1M),  mmap(2),	 memc-
       ntl(2), shmop(2), dlopen(3C), proc(4), attributes(5)

				  22 Feb 2005			       pmap(1)

NAME | SYNOPSIS | DISPLAY FORMATS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pmap&sektion=1&manpath=SunOS+5.10>

home | help