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 tar-
get 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 addi-
tional heap memory allo-
cated 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
SunOS 5.11 Last change: 23 Jan 2003 1
User Commands ppgsz(1)
stack as it expands.
anon=size This option specifies
the preferred page size
for all existing
MAPRIVATE 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 MAPRIVATE anonymous
segments created in the
future. See MAPANON in
mmap(2).
Anonymous memory refers
to MAPRIVATE 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
MCHATADVISE 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, Giga-
bytes, or Terabytes, respectively.
SunOS 5.11 Last change: 23 Jan 2003 2
User Commands ppgsz(1)
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 speci-
fied. ppgsz launches cmd and applies
page size option(s) to the new pro-
cess.
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 pre-
ferred 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 exist-
ing qualifying anonymous segments to 512k for process ID
SunOS 5.11 Last change: 23 Jan 2003 3
User Commands ppgsz(1)
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).
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 23 Jan 2003 4
User Commands ppgsz(1)
ATRIBUTE TYPE ATRIBUTE VALUE
Availability SUNWesu (32-bit)
SUNWesxu (64-bit)
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(4), attributes(5)
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.
SunOS 5.11 Last change: 23 Jan 2003 5
|