svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
pmap(1)
pmap(1) User Commands pmap(1)
NAME
pmap - displays information about the address space of a process
SYNOPSIS
/usr/bin/pmap [-bhrslF] [-A address_range]
[--scale[=item1,item2,...]] [pid | core]...
/usr/bin/pmap -L [-bhrslF] [-A address_range]
[--scale[=item1,item2,...]] [pid] ...
/usr/bin/pmap -x [-ahslF] [-A address_range]
[--scale[=item1,item2,...]] [pid]...
/usr/bin/pmap -S [-ahlF] [-A address_range]
[--scale[=item1,item2,...]] [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 mappings.
-A address_range
Specifies the subrange of address space to display. address_range
is specified in one of the following forms:
start_addr
A single address limits the output to the segment (or the page
if the -L option is present) containing that address. If the
specified address corresponds to the starting address of a seg‐
ment, the output always includes the whole segment even when
the -L option is specified.
start_addr,
An address followed by comma without the end address limits the
output to all segments (or pages if the -L option is present)
starting from the one containing the specified address.
start_addr, end_addr
An address range specified by the start address and end address
limits the output to all segments (or pages if the -L option is
present) starting from the segment or page containing the start
address through the segment or page containing the end address.
,end_addr
An address range started with comma without the start address
limits the output to all segments, or pages if the -L option is
present starting from the first one present until the segment,
or pages if the -L option is present containing the specified
address.
-b
Print the basename of mapped files rather than the full file path
(see basename(1)).
-F
Force. Grabs the target process even if another process has con‐
trol.
For more information, see the Usage section.
-h
On output, memory sizes are scaled to a human readable format. The
-h option is equivalent to using the --scale=max,1024 option.
-l
Shows unresolved dynamic linker map names.
-L
Prints lgroup containing physical memory that backs virtual memory.
-r
Prints the process's reserved addresses.
-s
Prints HAT page size information.
-S
Displays swap reservation information per mapping. For more infor‐
mation, see the Usage section.
-x
Displays additional information per mapping. For more information,
see the Usage section.
--scale[=item1,item2,...]
On output, memory sizes are scaled to a human readable format, for
example, 14K, 234M, 2.7G, or 3.0T. Scaling is done by repetitively
dividing by 1024, unless otherwise specified.
--scale specified without arguments enables default scaled output,
and is equivalent to --scale=max,1024.
--scale can be specified with the following arguments.
binary
Scaling is done by repetitively dividing by a scale factor of
1024. The use of binary scaling is indicated by the addition of
an 'i' modifier to the suffix (Ki, Mi, Gi, ...).
max
Values are scaled to the largest unit for which the result
retains a non-zero integer part. Up to 2 decimal places of
fractional output may be shown.
min
Values are scaled to the smallest unit capable of showing the
full value within the allotted space of 5 columns, and dis‐
played without the use of fractional output.
minwide
Values are scaled to the smallest unit capable of showing the
full value within the allotted space of 8 columns, and dis‐
played without the use of fractional output.
1000
Scaling is done by repetitively dividing by a scale factor of
1000.
1024
Scaling is done by repetitively dividing by a scale factor of
1024.
-?
--help
Print usage message and immediately exit.
USAGE
The pmap utility prints information about the address space of a
process.
Process Mappings
/usr/bin/pmap [ -rslF ] [-A address_range] [ pid | core ] ...
By default, pmap displays all of the mappings in the virtual
address order they are mapped into the process. The mapping size,
flags, and mapped object name are shown.
The -A option can be used to limit the output to a specified
address range. The specified addresses are rounded up or down to a
segment boundary and the output includes the segments bounded by
those addresses.
Process Lgroup Mappings
/usr/bin/pmap -L [ -rslF ] [-A address_range] pid ...
The -L option can be used to determine the lgroup containing the
physical memory backing the specified virtual memory. When used
with the -A option, the specified addresses are rounded up or down
to a page boundary and the output is limited to the page or pages
bounded by those addresses.
This can be used in conjunction with plgrp(1) to discover whether
the home lgroup of a thread of interest is the same as where the
memory is located, and whether there should be memory locality for
the thread. The lgrpinfo(1) command can also be useful with this
pmap option. It displays the lgroup hierarchy, contents, and char‐
acteristics which gives more information about the lgroups that the
memory is distributed across and their relationship to each other
and any other lgroups of interest.
In addition, the thread and memory placement can be changed by
using plgrp(1), pmadvise(1), or madv.so.1(1).
Process anon/locked mapping details
/usr/bin/pmap -x [ -aslF ] [-A address_range] [ pid] ...
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 ] [-A address_range] [ pid | core ] ...
The -S option displays swap reservation information per mapping.
Caution should be exercised when using the -F flag. Imposing two con‐
trolling processes on one victim process can lead to chaos. Safety is
assured only if the primary controlling process, typically a debugger,
stops the victim process and the primary controlling process does noth‐
ing at the moment of application of the proc tool in question.
DISPLAY FORMATS
One line of output is printed for each mapping within the process,
unless the -s or -L option is specified. With -s option, one line is
printed for a contiguous mapping of each hardware translation page
size. With -L option, one line is printed for a contiguous mapping
belonging to the same lgroup. With both -L and -s options, one line is
printed for a contiguous mapping of each hardware translation page size
belonging to the same lgroup. The column headings are shown in paren‐
theses below.
Virtual Address (Address)
The first column of output represents the starting virtual address
of each mapping. Virtual addresses are displayed in ascending
order.
Virtual Mapping Size (Kbytes)
The virtual size in kilobytes of each mapping. See --scale.
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. See --scale.
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. For more
information, see the mmap(2) man page.
Locked (Lock)
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 can be read by the process.
w: The mapping can be written by the process.
x: Instructions that reside within the mapping can be executed
by the process.
Flags showing additional information for each mapping can be dis‐
played:
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 map‐
ping.
i: The mapping is enabled for ADI.
R: Swap space is not reserved for this mapping. Mappings cre‐
ated with MAP_NORESERVE and System V ISM shared memory map‐
pings do not reserve swap space.
I/E: The mapping has prune requests active and will be included
or excluded from the core file. 'I' indicates inclusion
whereas, 'E' indicates exclusion.
*: The data for the mapping is not present in the core file
(only applicable when applied to a core file). For informa‐
tion on configuring core file content, see the coreadm(8)
man page.
Lgroup (Lgrp)
The lgroup containing the physical memory that backs the specified
mapping.
Mapping Name (Mapped File)
A descriptive name for each mapping. The following major types of
names are displayed for mappings:
A mapped file:
For mappings between a process and a file, the pmap command
attempts to resolve the segment name, and 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.
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 anony‐
mous 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.
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 Sys‐
tem V shared memory. ISM mappings are created with the
SHM_SHARE_MMU flag set, in accordance with shmat(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).
osm shmid=n:
The mapping is an "optimized shared memory" (OSM) variant
of ISM, and was created using shmget_osm(2).
Reserved Virtual Address:
Ranges are reported as [ reserved ] and are created to prevent
the kernel from choosing addresses within the Reserved range to
satisfy non-fixed address memory mapping operations (mmap(2)
and shmat(2)). Fixed address mapping operations can map on top
of the Reserved VA range in which case the Mapping Name changes
to that of the new mapping. When the fixed address mapping is
unmapped, the address range reverts back to [ reserved ].
Unlike other mapping types, Reserved VA ranges can occupy any
location in the process' address space including 'invalid'
locations, such as the VA hole. For more information, see
MC_RESERVE_AS in memcntl(2).
CMI Memory:
Mappings created by using the CMI API are reported with the
names shown below:
cmi cmi_seg=n:
The mapping is a local CMI memory. The segment handle that
the mapping was created with is reported.
cmi cmi_seg=n (remote):
The mapping is a remote CMI memory. The segment handle that
the mapping was created with is reported.
Other:
Mappings of other objects, including devices such as frame buf‐
fers. No mapping name is shown for other mapped objects.
Page Size (Pgsz)
The page size in kilobytes that is used for hardware address trans‐
lation for this mapping. See --scale. For more information, see the
memcntl(2) man page.
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 --scale. For more information, see the swap(8)
man page.
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 shell.
example$ pmap $$
3585: /usr/bin/ksh
0000000100000000 1728K r-x---- [ text ] /usr/bin/ksh
00000001001B0000 56K r-x---- [ text ] /usr/bin/ksh
00000001002BE000 8K rwx---- [ data ] /usr/bin/ksh
00000001002C0000 64K rwx---- [ data ] /usr/bin/ksh
00000001002D0000 16K rwx---- [ data ] /usr/bin/ksh
0000000100300000 24K rw----- [ bss ] /usr/bin/ksh
0000000EEBFC4000 8K rw----- [ heap ]
0007FCB434C00000 2176K r-x---- [ text ] /lib/sparcv9/libc.so.1
0007FCB434E20000 24K r-x---- [ text ] /lib/sparcv9/libc.so.1
0007FCB434F26000 80K rwx---- [ data ] /lib/sparcv9/libc.so.1
0007FCB434F3A000 40K rwx---- [ data ] /lib/sparcv9/libc.so.1
0007FCB435000000 704K r-x---- [ text ] /lib/sparcv9/libm.so.2
0007FCB4350B0000 56K r-x---- [ text ] /lib/sparcv9/libm.so.2
0007FCB4351BC000 16K rwx---- [ data ] /lib/sparcv9/libm.so.2
0007FCB435200000 256K r-x---- [ text ] /lib/sparcv9/ld.so.1
0007FCB4352F0000 128K rw----- [ anon ]
0007FCB435320000 64K rw----- [ anon ]
0007FCB435340000 8K r------ [ dtrace ] /lib/sparcv9/ld.so.1
0007FCB435370000 128K rw----- [ anon ]
0007FCB4353A0000 128K rw----- [ anon ]
0007FCB4353D0000 128K rw----- [ anon ]
0007FCB435400000 128K rw----- [ anon ]
0007FCB435430000 64K rw----- [ anon ]
0007FCB435442000 24K rwx---- [ data ] /lib/sparcv9/ld.so.1
0007FCB435448000 8K rwx---- [ data ] /lib/sparcv9/ld.so.1
0007FCB435460000 24K rw----- [ anon ]
0007FCB43546E000 8K rw-s--- [ anon ]
0007FCB435472000 8K r--s--- [ anon ]
0007FCB435476000 8K r--s--- [ anon ]
0007FCB43547A000 8K r--s--- [ anon ]
0007FCB43547E000 8K r-x---- [ anon ]
FFFFFCFCE72A0000 64K rw----- [ stack ]
FFFFFCFCE72B0000 40K rw----- [ stack ]
total 6232K
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 $$
4022: /usr/bin/ksh
Address Kbytes RSS Anon Lock Mode Mapped File
0000000100000000 1784 1704 - - r-x---- [ text ] ksh
00000001002BE000 88 88 72 - rwx---- [ data ] ksh
0000000100300000 24 16 16 - rw----- [ bss ] ksh
0000006AB975A000 8 - - - rw----- [ heap ]
0007FD56FE400000 2200 2200 - - r-x---- [ text ] libc.so.1
0007FD56FE726000 80 80 80 - rwx---- [ data ] libc.so.1
0007FD56FE73A000 40 24 24 - rwx---- [ data ] libc.so.1
0007FD56FE800000 760 760 - - r-x---- libm.so.2
0007FD56FE9BC000 16 16 16 - rwx---- libm.so.2
0007FD56FEA00000 256 256 - - r-x---- [ text ] ld.so.1
0007FD56FEB40000 8 8 - - r------ [ dtrace ] ld.so.1
0007FD56FEBD0000 64 64 64 - rw----- [ anon ]
0007FD56FEBF0000 128 128 128 - rw----- [ anon ]
0007FD56FEC1C000 8 8 - - rw-s--- [ anon ]
0007FD56FEC20000 128 128 128 - rw----- [ anon ]
0007FD56FEC42000 24 24 24 - rwx---- [ data ] ld.so.1
0007FD56FEC48000 8 8 8 - rwx---- [ data ] ld.so.1
0007FD56FEC60000 128 128 128 - rw----- [ anon ]
0007FD56FEC90000 128 128 128 - rw----- [ anon ]
0007FD56FECC0000 24 16 16 - rw----- [ anon ]
0007FD56FECD0000 64 64 64 - rw----- [ anon ]
0007FD56FECEA000 8 8 - - r--s--- [ anon ]
0007FD56FECEE000 8 8 - - r--s--- [ anon ]
0007FD56FECF2000 8 8 - - r--s--- [ anon ]
0007FD56FECF6000 8 8 - - r-x---- [ anon ]
FFFFFD103AE20000 64 64 64 - rw----- [ stack ]
FFFFFD103AE30000 24 24 24 - rw----- [ stack ]
---------------- ------ ---- ---- ----
total Kb 6088 5968 984 -
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 shell process has a resident memory size of
5668Kbytes. However, a large amount of the physical memory used by the
shell is shared with other processes. When more than one process runs
the same program, they share physical memory with each other where pos‐
sible, and allocate anonymous memory for any non-shared portion. In the
above example, each additional shell process uses approximately
984Kbytes 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(3C)
0900000 A DISM shared memory mapping, created with SHM_PAGEABLE,
with 4MB of its pages touched
0A00000 An ISM shared memory mapping, created with SHM_SHARE_MMU,
with none of its pages touched
0B00000 An ISM shared memory mapping, created with SHM_SHARE_MMU
0C00000 A remote CMI memory mapping
0D00000 A local CMI memory mapping
example$ pmap -x 4095
4095: ./maps
Address Kbytes RSS Anon Lock Mode Mapped File
00010000 8 8 - - r-x---- [ text ] maps
00020000 8 8 8 - rwx---- [ data ] maps
00022000 56 8 8 - rwx---- [ heap ]
03000000 1024 1024 - - rw-s--- dev:533,2 ino:631625786
04000000 1024 1024 512 - rw----- dev:533,2 ino:631625786
05000000 1024 1024 512 - rw--R-- dev:533,2 ino:631625786
06000000 1024 1024 1024 - rw----- [ anon ]
07000000 512 512 512 - rw--R-- [ anon ]
08000000 8192 8192 - 8192 rwxs--- [ dism shmid=0x0 ]
09000000 8192 8192 - - rwxs--- [ dism shmid=0x1 ]
0A000000 8192 8192 - 8192 rwxsR-- [ ism shmid=0x2 ]
0B000000 8192 8192 - 8192 rwxsR-- [ ism shmid=0x3 ]
0C000000 1048576 1048576 - - r--s--- [ cmi cmi_seg=0x3 (remote) ]
0D000000 262144 262144 - - rw-s--- [ cmi cmi_seg=0x2 ]
FECA0000 2104 1848 - - r-x---- [ text ] libc.so.1
FEEBE000 48 48 48 - rwx---- [ data ] libc.so.1
FEECA000 24 16 16 - rwx---- [ data ] libc.so.1
FF370000 24 16 16 - rw----- [ anon ]
FF380000 240 240 - - r-x---- [ text ] ld.so.1
FF3CC000 8 8 - - r------ [ dtrace ] ld.so.1
FF3D4000 32 24 24 - rw----- [ anon ]
FF3DE000 16 16 16 - rwx---- [ data ] ld.so.1
FF3EE000 8 8 - - r--s--- [ anon ]
FF3F2000 8 8 - - r--s--- [ anon ]
FF3F6000 8 8 - - r--s--- [ anon ]
FF3FA000 8 8 - - r-x---- [ anon ]
FFBF0000 64 64 64 - rw----- [ stack ]
-------- ------- ------- ---- -----
total Kb 40040 39712 2760 24576
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 fur‐
ther 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 shared memory segments are 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 1840
1840: ./maps
Address Kbytes RSS Anon Lock Pgsz Mode Mapped File
00010000 8 8 - - 8K r-x---- [ text ] maps
00020000 8 8 8 - 8K rwx---- [ data ] maps
00022000 8 8 8 - 8K rwx---- [ heap ]
00024000 48 - - - - rwx---- [ heap ]
03000000 1024 1024 - - 8K rw-s--- dev:533,2 ino:569519580
04000000 1024 1024 512 - 8K rw----- dev:533,2 ino:569519580
05000000 1024 1024 512 - 8K rw--R-- dev:533,2 ino:569519580
06000000 1024 1024 1024 - 64K rw----- [ anon ]
07000000 512 512 512 - 8K rw--R-- [ anon ]
08000000 8192 8192 - 8192 4M rwxs--- [ dism shmid=0x0 ]
09000000 8192 8192 - - 4M rwxs--- [ dism shmid=0x1 ]
0A000000 8192 8192 - 8192 4M rwxsR-- [ ism shmid=0x2 ]
0B000000 8192 8192 - 8192 4M rwxsR-- [ ism shmid=0x3 ]
FECA0000 384 384 - - 64K r-x---- [ text ] libc.so.1
FED00000 256 64 - - - r-x---- [ text ] libc.so.1
FED40000 640 640 - - 64K r-x---- [ text ] libc.so.1
FEDE0000 128 128 - - - r-x---- [ text ] libc.so.1
FEE00000 64 64 - - 64K r-x---- [ text ] libc.so.1
FEE10000 128 64 - - - r-x---- [ text ] libc.so.1
FEE30000 320 320 - - 64K r-x---- [ text ] libc.so.1
FEE80000 128 128 - - - r-x---- [ text ] libc.so.1
FEEA0000 16 16 - - - r-x---- [ text ] libc.so.1
FEEA4000 40 40 - - 8K r-x---- [ text ] libc.so.1
FEEBE000 48 48 48 - 8K rwx---- [ data ] libc.so.1
FEECA000 8 - - - - rwx---- [ data ] libc.so.1
FEECC000 16 16 16 - 8K rwx---- [ data ] libc.so.1
FF370000 16 16 16 - 8K rw----- [ anon ]
FF374000 8 - - - - rw----- [ anon ]
FF380000 192 192 - - 64K r-x---- [ text ] ld.so.1
FF3B0000 48 48 - - 8K r-x---- [ text ] ld.so.1
FF3CC000 8 8 - - 8K r------ [ dtrace ] ld.so.1
FF3D4000 24 24 24 - 8K rw----- [ anon ]
FF3DA000 8 - - - - rw----- [ anon ]
FF3DE000 16 16 16 - 8K rwx---- [ data ] ld.so.1
FF3EE000 8 8 - - - r--s--- [ anon ]
FF3F2000 8 8 - - - r--s--- [ anon ]
FF3F6000 8 8 - - - r--s--- [ anon ]
FF3FA000 8 8 - - - r-x---- [ anon ]
FFBF0000 64 64 64 - 64K rw----- [ stack ]
-------- ------ ----- ---- -----
total Kb 40040 39712 2760 24576
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 4220
4220: ./maps
Address Kbytes Swap Mode Mapped File
00010000 8 - r-x---- [ text ] maps
00020000 8 8 rwx---- [ data ] maps
00022000 56 56 rwx---- [ heap ]
03000000 1024 - rw-s--- dev:533,2 ino:634348912
04000000 1024 1024 rw----- dev:533,2 ino:634348912
05000000 1024 512 rw--R-- dev:533,2 ino:634348912
06000000 1024 1024 rw----- [ anon ]
07000000 512 512 rw--R-- [ anon ]
08000000 8192 - rwxs--- [ dism shmid=0x0 ]
09000000 8192 - rwxs--- [ dism shmid=0x1 ]
0A000000 8192 - rwxsR-- [ ism shmid=0x2 ]
0B000000 8192 - rwxsR-- [ ism shmid=0x3 ]
FECA0000 2104 - r-x---- [ text ] libc.so.1
FEEBE000 48 48 rwx---- [ data ] libc.so.1
FEECA000 24 24 rwx---- [ data ] libc.so.1
FF370000 24 24 rw----- [ anon ]
FF380000 240 - r-x---- [ text ] ld.so.1
FF3CC000 8 - r------ [ dtrace ] ld.so.1
FF3D4000 32 32 rw----- [ anon ]
FF3DE000 16 16 rwx---- [ data ] ld.so.1
FF3EE000 8 - r--s--- [ anon ]
FF3F2000 8 - r--s--- [ anon ]
FF3F6000 8 - r--s--- [ anon ]
FF3FA000 8 - r-x---- [ anon ]
FFBF0000 64 64 rw----- [ stack ]
-------- ------ ----
total Kb 40040 3344
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(8) command.
Example 5 Labeling Stacks in a Multi-threaded Process
example$ pmap 8703
8703: ./stacks
00010000 8K r-x---- [ text ] /tmp/stacks
00020000 8K rwx---- [ data ] /tmp/stacks
00022000 56K rwx---- [ heap ]
FE79A000 8K rw--R-- [ stack tid=11 ]
FE89A000 8K rw--R-- [ stack tid=10 ]
FE99A000 8K rw--R-- [ stack tid=9 ]
FEA9A000 8K rw--R-- [ stack tid=8 ]
FEB9A000 8K rw--R-- [ stack tid=7 ]
FEC9A000 8K rw--R-- [ stack tid=6 ]
FECA0000 2048K r-x---- [ text ] /lib/libc.so.1
FEEA0000 56K r-x---- [ text ] /lib/libc.so.1
FEEBE000 48K rwx---- [ data ] /lib/libc.so.1
FEECA000 24K rwx---- [ data ] /lib/libc.so.1
FEFFA000 8K rw--R-- [ stack tid=5 ]
FF0FA000 8K rw--R-- [ stack tid=4 ]
FF1FA000 8K rw--R-- [ stack tid=3 ]
FF200000 64K rw----- [ anon ]
FF31A000 8K rw--R-- [ stack tid=2 ]
FF320000 64K rw----- [ anon ]
FF340000 128K rw----- [ anon ]
FF370000 24K rw----- [ anon ]
FF380000 192K r-x---- [ text ] /lib/ld.so.1
FF3B0000 48K r-x---- [ text ] /lib/ld.so.1
FF3C8000 8K rw----- [ altstack tid=8 ]
FF3CC000 8K r------ [ dtrace ] /lib/ld.so.1
FF3D4000 32K rw----- [ anon ]
FF3DE000 16K rwx---- [ data ] /lib/ld.so.1
FF3E6000 8K rw----- [ altstack tid=4 ]
FF3EA000 8K rw-s--- [ anon ]
FF3EE000 8K r--s--- [ anon ]
FF3F2000 8K r--s--- [ anon ]
FF3F6000 8K r--s--- [ anon ]
FF3FA000 8K r-x---- [ anon ]
FFBF0000 64K rw----- [ stack ]
Example 6 Displaying lgroup Memory Allocation
The following example displays lgroup memory allocation by mapping.
example$ pmap -bL `pgrep nscd`
8629: /usr/sbin/nscd
000000B8886D6000 8K rw----- - [ heap ]
000000B8886D8000 32K rw----- 2 [ heap ]
000000B8886E0000 64K rw----- 2 [ heap ]
000000B8886F0000 256K rw----- 1 [ heap ]
...
0007FE2990700000 64K r-x---- 1 [ text ] libucrypto.so.1
0007FE2990710000 64K r-x---- 2 [ data ] libucrypto.so.1
...
0007FE2995200000 8K r-x---- 1 [ text ] nss_dns.so.1
0007FE2995202000 16K r-x---- 2 [ text ] nss_dns.so.1
0007FE2995306000 8K rwx---- 2 [ data ] nss_dns.so.1
...
0007FE2995800000 64K r-x---- 2 [ text ] nss_ldap.so.1
0007FE2995810000 16K r-x---- 2 [ text ] nss_ldap.so.1
0007FE2995914000 8K rwx---- 2 [ data ] nss_ldap.so.1
...
0007FE2995C00000 16K r-x---- 1 [ text ] nss_files.so.1
0007FE2995C04000 32K r-x---- 2 [ text ] nss_files.so.1
0007FE2995D0C000 8K rwx---- 2 [ data ] nss_files.so.1
...
0007FE2997300000 192K r-x---- 1 [ text ] ld.so.1
0007FE2997330000 64K r-x---- 2 [ text ] ld.so.1
0007FE2997440000 8K r------ - [ dtrace ] ld.so.1
0007FE2997542000 24K rwx---- 2 [ data ] ld.so.1
0007FE2997548000 8K rwx---- 2 [ data ] ld.so.1
0007FE2997600000 64K r-x---- 1 [ text ] nscd
0007FE2997610000 64K r-x---- 2 [ text ] nscd
0007FE2997620000 64K r-x---- 1 [ text ] nscd
0007FE2997630000 16K r-x---- - [ text ] nscd
...
0007FE2997734000 32K rwx---- 2 [ data ] nscd
...
0007FE299777C000 8K rw-s--- 2 [ anon ]
0007FE2997780000 64K rw----- 2 [ anon ]
0007FE2997796000 8K r-x---- - [ anon ]
0007FE299779E000 8K r--s--- 1 [ anon ]
0007FE29977A2000 8K r--s--- 1 [ anon ]
0007FE29977A6000 8K r--s--- - [ anon ]
FFFFFE5DEF5F0000 16K rw----- - [ stack ]
FFFFFE5DEF5F4000 8K rw----- 2 [ stack ]
total 177264K
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(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Availabilitysystem/core-os _ Interface StabilitySee
below.
The command syntax is Committed. The -L option and the output formats
are Uncommitted.
SEE ALSO
basename(1), ldd(1), lgrpinfo(1), madv.so.1(1), mdb(1), plgrp(1), pmad‐
vise(1), proc(1), ps(1), memcntl(2), meminfo(2), mlock(3C), mmap(2),
shmget_osm(2), shmop(2), dlopen(3C), proc(5), attributes(7), cmi(7),
coreadm(8), prstat(8), swap(8)
NOTES
Core files do not contain all the information present in the live run‐
ning image of a process. For example, a segment of memory, reported by
pmap as ISM in a running process, may be reported as heap when pmap is
run against a core file from the same process.
Oracle Solaris 11.4 18 Sep 2021 pmap(1)