pmadvise - applies advice about memory to a process
pmadvise -o option[,option] [-F] [-l] [-v] pid...
pmadvise applies advice about how memory is used in the specified process using madvise(3C).
pmadvise allows users to apply advice to a specific sub-range at a specific instant in time. pmadvise differs from madv.so.1(1) in that madv.so.1(1) applies the advice throughout execution of the target program to all segments of a specified type.
The following options are supported:
Force by grabbing the target process even if another process has control.
You should exercise caution when using the –F option. See proc(1).
Show unresolved dynamic linker map names.
Specify advice to apply in the following form:
private=advice shared=advice heap=advice stack=advice address[:length]=advice
where the advice can be one of the following:
normal random sequential willneed dontneed free access_lwp access_many access_many_pset access_default
An address and length can be given to specify a subrange to apply the advice. The address should be hexadecimal and the length should be in bytes by default.
If length is not specified and the starting address refers to the start of a segment, the advice is applied to that segment. length can be qualified by K, M, G, T, P, or E to specify kilobytes, megabytes, gigabytes, terabytes, or exabytes respectively as the unit of measure.
Print verbose output. Display output as pmap(1) does, showing what advice is being applied where. This can be useful when the advice is being applied to a named region (for example, private, shared, and so forth) to get feedback on exactly where the advice is being applied.
pmadvise tries to process all legal options. If an illegal address range is specified, an error message is printed and the offending option is skipped. pmadvise quits without processing any options and prints a usage message when there is a syntax error.
If conflicting advice is given on a region, the order of precedence is from most specific advice to least, that is, most general. In other words, advice specified for an explicit address range takes precedence over advice for heap and stack which in turn takes precedence over advice for private and shared memory.
Moreover, the advice in each of the following groups are mutually exclusive from the other advice within the same group:
MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL MADV_WILLNEED, MADV_DONTNEED, MADV_FREE MADV_ACCESS_DEFAULT, MADV_ACCESS_LWP, MADV_ACCESS_MANY
The following operands are supported:
The following example applies advice to a segment at a specified address:
% pmap $$ | grep heap 00000001AEC8C000 8K rw----- [ heap ] % % pmadvise -o 78000=access_lwp $$ %Example 2 Using the –v Option
The following example displays verbose output from pmadvise. In the interest of brevity, some output has been elided.
% pmadvise -o heap=access_lwp,stack=access_default -v $$ 0000000100000000 1728K r-x---- [ text ] /usr/bin/sh 00000001001B0000 56K r-x---- [ text ] /usr/bin/sh 00000001002BE000 8K rwx---- [ data ] /usr/bin/sh 00000001002C0000 64K rwx---- [ data ] /usr/bin/sh 00000001002D0000 16K rwx---- [ data ] /usr/bin/sh 0000000100300000 24K rw----- [ bss ] /usr/bin/sh 0000000EEBFC4000 8K rw----- [ heap ] <= access_lwp 0007FCB434C00000 2176K r-x---- [ text ] /lib/sparcv9/libc.so.1 ... 0007FCB435000000 704K r-x---- [ text ] /lib/sparcv9/libm.so.2 ... 0007FCB435200000 256K r-x---- [ text ] /lib/sparcv9/ld.so.1 ... 0007FCB435370000 128K rw----- [ anon ] ... FFFFFCFCE72A0000 64K rw----- [ stack ] <= access_default FFFFFCFCE72B0000 40K rw----- [ stack ] <= access_default
The following exit values are returned:
An error occurred.
proc tools support files
See attributes(7) for descriptions of the following attributes:
The command syntax is Committed. The output formats are Uncommitted.