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 953


EXIT 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 Guide

NOTES


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)

tribblix@gmail.com :: GitHub :: Privacy