pmap(1)




NAME

     pmap - display information about the address space of a pro-
     cess


SYNOPSIS

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

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

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


DESCRIPTION

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


OPTIONS

     The following options are supported:

     -a    Prints anonymous and swap reservations for shared map-
           pings.

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

     -r    Prints the process's reserved addresses.

     -s    Prints HAT page size information.


USAGE

     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 map-
           ping. The size of each mapping, the amount of resident
           physical memory, the amount of anonymous  memory,  and
           the amount of memory locked is shown with this option.

     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,  unless  the -s option is specified, where one line
     is printed for a contiguous mapping of each hardware  trans-
     lation page size.

     Virtual Address
           The first column of  output  represents  the  starting
           virtual address of each mapping. Virtual addresses are
           displayed in ascending order.

     Virtual Mapping Size
           The virtual size of each mapping.

     Resident Physical Memory
           The amount of physical memory resident for  each  map-
           ping,  including  that  which  is  shared  with  other
           address spaces.

     Anonymous Memory
           The amount of anonymous memory is  reported  for  each
           mapping.  Anonymous  memory  shared with other address
           spaces is not included, unless the -a option is speci-
           fied.

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

     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
           The virtual memory permissions are shown for each map-
           ping. 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 executed by the process.

           Flags showing additional information for each  mapping
           may be displayed:

           s:    The mapping is shared such that changes made  in
                 the  observed 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 created with MAP_NORESERVE and System V
                 ISM shared memory mappings do not  reserve  swap
                 space.

     Mapping Name
           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 mapping. 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  cer-
                 tain known anonymous memory mappings, such as:

                 [ heap ]
                       The process heap.

                 [ stack ]
                       The process stack.

                 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
                       mappings    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 dev-
                 ices  such  as frame buffers. No mapping name is
                 shown for other mapped objects.


EXAMPLES

     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  allocation 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 Resident   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  instance of the shell will share
     physical memory with the other  shell  where  possible,  and
     allocate anonymous memory for any non-shared portion. 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 -xs 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  transla-
     tion  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 mapping within the process. Swap reserva-
     tions  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.


EXIT STATUS

     The following exit values are returned:

     0     Successful operation.

     non-zero
           An error has occurred.


FILES

     /proc/*
           process files

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


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWesu (32-bit)            |
    |_____________________________|_____________________________|
    |                             | SUNWesxu (64-bit)           |
    |_____________________________|_____________________________|
    | Interface Stability         |                             |
    |_____________________________|_____________________________|
    |     Command Syntax          | Evolving                    |
    |_____________________________|_____________________________|
    |     Output Format(s)        | Unstable                    |
    |_____________________________|_____________________________|


SEE ALSO

     ldd(1),  mdb(1),  proc(1),  ps(1),   swap(1M),   memcntl(2),
     shmop(2), dlopen(3DL), proc(4), attributes(5)


Man(1) output converted with man2html