PPGSZ(1) | User Commands | PPGSZ(1) |
ppgsz - set preferred page size for stack, heap, and/or other anonymous segments
/usr/bin/ppgsz [-F] -o option[,option] cmd | -p pid...
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).
The following options are supported:
-F
-o option[,option]
heap=size
stack=size
anon=size
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
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).
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
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
125
126
127
/proc/*
/usr/lib/ld/map.bssalign
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Evolving |
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
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 | OmniOS |