pmadvise - apply advice about memory to a process

NAME

pmadvise - apply advice about memory to a process


SYNOPSIS


   pmadvise -o option[,option] [-F] [-v] pid ...

DESCRIPTION

The pmadvise(1) utility applies advice about how memory will be used in the specified process via madvise(3C). This tool allows a user to apply advice to a specific subrange at a specific instant in time unlike madv.so.1(1) which applies the advice throughout execution of the target program to all segments of a specified type.


OPTIONS

The following options are supported:

-F
 Force. Grabs the target process even if another process has control. Caution should be exercised when using the -F flag. See proc(1).
-o
 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_default

:
An address and length may 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 the length is not specified and the starting address refers to the start of a segment, the advice will be applied to that segment. The length may be qualified by K, M, G, T, P, or E to specify kilobytes, megabytes, gigabytes, terabytes, or exabytes respectively as the unit of measure.

-v
 Print verbose output giving output like pmap(1) showing what advice is being applied where. This may be useful when the advice is being applied to a named region (eg. private, shared, etc.) to get feedback on exactly where the advice is being applied.

The tool will try to process all legal options. If an illegal address range is specified, an error message will be printed and that suboption will be skipped. The tool will quit without processing any options and print a usage message whenthere is a syntax error.

If conflicting advice is given on a region, the order of precedence is from most specific advice to least (ie. most general). In other words, advice specified for a particuliar address range takes precedence over advice for heap and stack which in turn takes precedence over 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

EXAMPLE

Example 1: Applying advice to segment at specified address
:
   % pmap $$
   100666: tcsh
  00010000     312K r-x~--  /usr/bin/tcsh
  0006C000      48K rwx~--  /usr/bin/tcsh
  00078000     536K rwx~--    [ heap ]
  FF100000     856K r-x~--  /lib/libc.so.1
  FF1E6000      32K rwx~--  /lib/libc.so.1
  FF1EE000       8K rwx~--  /lib/libc.so.1
  FF230000     168K r-x~--  /lib/libcurses.so.1
  FF26A000      32K rwx~--  /lib/libcurses.so.1
  FF272000       8K rwx~--  /lib/libcurses.so.1
  FF280000     576K r-x~--  /lib/libnsl.so.1
  FF310000      40K rwx~--  /lib/libnsl.so.1
  FF31A000      24K rwx~--  /lib/libnsl.so.1
  FF364000       8K rwxs-    [ anon ]
  FF370000      48K r-x~--  /lib/libsocket.so.1
  FF38C000       8K rwx~--  /lib/libsocket.so.1
  FF3A0000       8K r-x~--  /platform/sun4u-us3/lib/libc_psr.so.1
  FF3B0000     176K r-x~--  /lib/ld.so.1
  FF3EC000       8K rwx~--  /lib/ld.so.1
  FF3EE000       8K rwx~--  /lib/ld.so.1
  FFBE6000     104K rw~---    [ stack ]
  %
  % pmadvise -o 78000=access_lwp $$
Example 2: Using -v option
:
  % pmadvise -o heap=access_lwp,stack=access_default -v $$
  1720:   -sh
  00010000      88K r-x~--  /sbin/sh
  00036000       8K rwx~--  /sbin/sh
  00038000      16K rwx~--    [ heap ]           <= access_lwp
  FF250000      24K r-x~--  /lib/libgen.so.1
  FF266000       8K rwx~--  /lib/libgen.so.1
  FF272000       8K rwxs-    [ anon ]
  FF280000     840K r-x~--  /lib/libc.so.1
  FF362000      32K rwx~--  /lib/libc.so.1
  FF36A000      16K rwx~--  /lib/libc.so.1
  FF380000       8K r-x~--  /platform/sun4u-us3/lib/libc_psr.so.1
  FF390000      64K rwx~--    [ anon ]
  FF3B0000     168K r-x~--  /lib/ld.so.1
  FF3EA000       8K rwx~--  /lib/ld.so.1
  FF3EC000       8K rwx~--  /lib/ld.so.1
  FFBFE000       8K rw~---    [ stack ]          <= access_default

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 attributes:


     {{{____________________________________________________________}}}
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |{{{_____________________________}}}|{{{_____________________________}}}|
    | Availability                |                             |
    |{{{_____________________________}}}|{{{_____________________________}}}|
    |                             |                             |
    |{{{_____________________________}}}|{{{_____________________________}}}|
    | Interface Stability         |                             |
    |{{{_____________________________}}}|{{{_____________________________}}}|
    |     Command Syntax          | Evolving                    |
    |{{{_____________________________}}}|{{{_____________________________}}}|
    |     Output Format(s)        | Unstable                    |
    |{{{_____________________________}}}|{{{_____________________________}}}|

SEE ALSO

madv.so.1(1), pmap(1), madvise(3C)

 pmadvise - apply advice about memory to a process
last modified by admin on 2009/10/26 12:10
Collectives
Project


© Sun Microsystems Inc. 2009
XWiki Enterprise 1.8.2.19075 - Documentation
Terms Of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines | Site map | Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.