PPGSZ(1) User Commands PPGSZ(1)
NAME
ppgsz - set preferred page size for stack, heap, and/or other
anonymous segments
SYNOPSIS
/usr/bin/ppgsz [
-F]
-o option[,
option]
cmd |
-p pid...
DESCRIPTION
The
ppgsz utility sets the preferred page size for stack, heap,
and/or other anonymous segments for the target process(es), that is,
the launched
cmd or the process(es) in the pid list.
ppgsz stops the
target process(es) while changing the page size. See
memcntl(2).
OPTIONS
The following options are supported:
-F Force. Sets the preferred page size options(s)
for target process(es) even if controlled by
other process(es). Caution should be exercised
when using the
-F flag. See
proc(1).
-o option[,
option]
The
options are:
heap=
size This option specifies the
preferred page size for the heap
of the target process(es).
heap is defined to be the bss
(uninitialized data) and the brk
area that immediately follows the
bss (see
brk(2)). The preferred
heap page size is set for the
existing heap and for any
additional heap memory allocated
in the future. See NOTES.
stack=
size This option specifies the
preferred page size for the stack
of the target process(es). The
preferred stack page size is set
for the existing stack and newly
allocated parts of the stack as
it expands.
anon=
size This option specifies the
preferred page size for all
existing
MAP_PRIVATE anonymous
segments of the target
process(es), other than
heap and
stack, which are large enough to
fit at least one aligned page of
the specified size. For the
segments that are large enough,
the preferred page size is set
starting at the first size-
aligned address in the segment.
The
anon preferred pagesize is
not applied to
MAP_PRIVATE anonymous segments created in the
future. See
MAP_ANON in
mmap(2).
Anonymous memory refers to
MAP_PRIVATE pages that are not
directly associated with a file
in some filesystem. The
ppgsz command uses
memcntl(2) to set
the preferred page size for
anonymous segments. See
MC_HAT_ADVISE in
memcntl(2).
At least one of the above options must be
specified.
size must be a supported page size (see
pagesize(1)) or
0, in which case the system
will select an appropriate page size. See
memcntl(2).
size defaults to bytes and can be specified in
octal (
0), decimal, or hexadecimal (
0x). The
numeric value can be qualified with
K,
M,
G, or
T to specify Kilobytes, Megabytes, Gigabytes,
or Terabytes, respectively.
4194304,
0x400000,
4096K,
0x1000K, and
4M are different ways to
specify 4 Megabytes.
-p pid Sets the preferred page size option(s) for the
target process(es) in the process-id (
pid) list
following the
-p option. The pid list can also
consist of names in the
/proc directory. Only
the process owner or the super-user is
permitted to set page size.
cmd is interpreted if
-p is not specified.
ppgsz launches
cmd and applies page size
option(s) to the new process.
The heap and stack preferred page sizes are
inherited. Child process(es) created (see
fork(2)) from the launched process or the
target process(es) in the pid list after
ppgsz completes will inherit the preferred heap and
stack page sizes. The preferred page sizes of
all segments are set back to the default system
page size on
exec(2) (see
getpagesize(3C)). The
preferred page size for all other anonymous
segments is not inherited by children of the
launched or target process(es).
EXAMPLES
Example 1: Setting the preferred heap and stack page size
The following example sets the preferred heap page size to
4M and the
preferred stack page size to
512K for all
ora--owned processes
running commands that begin with
ora:
example%
ppgsz -o heap=4M,stack=512K -p `pgrep -u ora '^ora'` Example 2: Setting the preferred anonymous page size
The following example sets the preferred page size of existing
qualifying anonymous segments to
512k for process ID
953:
example%
ppgsz -o anon=512k -p 953EXIT STATUS
If
cmd is specified and successfully invoked (see
exec(2)), the exit
status of
ppgsz will be the exit status of
cmd. Otherwise,
ppgsz will
exit with one of the following values:
0 Successfully set preferred page size(s) for processes in the
pid list.
125 An error occurred in
ppgsz. Errors include: invalid argument,
invalid page size(s) specified, and failure to set preferred
page size(s) for one or more processes in the pid list or
cmd.
126 cmd was found but could not be invoked.
127 cmd could not be found.
FILES
/proc/* Process files.
/usr/lib/ld/map.bssalign A template link-editor
mapfile for
aligning bss (see NOTES).
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Evolving |
+--------------------+-----------------+
SEE ALSO
ld(1),
mpss.so.1(1),
pagesize(1),
pgrep(1),
pmap(1),
proc(1),
brk(2),
exec(2),
fork(2),
memcntl(2),
mmap(2),
sbrk(2),
getpagesize(3C),
proc(5),
attributes(7) Linker and Libraries GuideNOTES
Due to resource constraints, the setting of the preferred page size
does not necessarily guarantee that the target process(es) will get
the preferred page size. Use
pmap(1) to view the
actual heap and
stack page sizes of the target process(es) (see
pmap -s option).
Large pages are required to be mapped at addresses that are multiples
of the size of the large page. Given that the heap is typically not
large page aligned, the starting portions of the heap (below the
first large page aligned address) are mapped with the system memory
page size. See
getpagesize(3C).
To provide a heap that will be mapped with a large page size, an
application can be built using a link-editor (
ld(1))
mapfile containing the
bss segment declaration directive. Refer to the
section Mapfile Option in the
Linker and Libraries Guide for more
details of this directive and the template
mapfile provided in
/usr/lib/ld/map.bssalign. Users are cautioned that an alignment
specification may be machine-specific and may lose its benefit on
different hardware platforms. A more flexible means of requesting the
most optimal underlying page size may evolve in future releases.
mpss.so.1(1), a preloadable shared object, can also be used to set
the preferred stack and/or heap page sizes.
January 23, 2003 PPGSZ(1)