手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ppgsz(1)

名称

ppgsz - 为栈、堆和/或其他匿名段设置首选页面大小

用法概要

/usr/bin/ppgsz [-F] -o option[,option] cmd | -p pid...

描述

ppgsz 实用程序为目标进程(即启动的 cmd 或 pid 列表中的进程)的栈、堆和/或其他匿名段设置首选页面大小。ppgsz 在更改页面大小时会停止目标进程。请参见 memcntl(2)

选项

支持以下选项:

–F

强制。为目标进程设置首选页面大小选项(即使目标进程被其他进程所控制)。使用 –F 标志时应谨慎。请参见 proc(1)

–o option[,option]

这些选项如下所示:

heap=size

此选项用于为目标进程的堆指定首选页面大小。heap 被定义为 bss(未初始化的数据)及紧随其后的 brk 区域(请参见 brk(2))。首选堆页面大小是为现有堆以及将来分配的任何其他堆内存设置的。请参见“附注”部分。

stack=size

此选项用于为目标进程的栈指定首选页面大小。首选栈页面大小是为现有栈以及栈扩展时新分配的栈部分配置的。

anon=size

此选项用于为目标进程的所有现有 MAP_PRIVATE 匿名段(而不是)指定首选页面大小,这些匿名段足够大,至少能够容纳一个指定大小的对齐页面。对于足够大的段,首选页面大小是从段中的第一个大小对齐的地址开始设置的。anon 首选页面大小不应用于将来创建的 MAP_PRIVATE 匿名段。请参见 mmap(2) 中的 MAP_ANON

匿名内存指的是与没有与某个文件系统中的文件直接关联的 MAP_PRIVATE 页面。ppgsz 命令使用 memcntl(2) 为匿名段设置首选页面大小。请参见 memcntl(2) 中的 MC_HAT_ADVISE

必须至少指定以上选项之一。

size 必须是受支持的页面大小(请参见 pagesize(1))或 0,在后一种情况下,将由系统来选择合适的页面大小。请参见 memcntl(2)

size 的缺省单位为字节,可指定为八进制 (0)、十进制或十六进制 (0x) 格式的。可以使用 KMGT 对数字值加以限定,以分别指定千字节、兆字节、千兆字节或兆兆字节。41943040x4000004096K0x1000K4M 这几种不同的方式指定的都是 4 兆字节。

–p pid

为跟在 –p 选项后的进程 ID (pid) 列表中的目标进程设置首选页面大小选项。pid 列表还可以包含 /proc 目录中的名称。只允许进程所有者或超级用户设置页面大小。

如果未指定 –p,将会解释 cmdppgsz 将启动 cmd,并将页面大小选项应用于新进程。

堆和栈首选页面大小是继承的。在 ppgsz 完成后,从已启动的进程或 pid 列表中的目标进程创建的子进程(请参见 fork(2))将继承首选堆和栈页面大小。在执行 exec(2) 时,所有段的首选页面大小都将重新设置为缺省系统页面大小(请参见 getpagesize(3C))。已启动的进程或目标进程的子进程不会继承其他所有匿名段的首选页面大小。

示例

示例 1 设置首选堆和栈页面大小

下面的示例针对所有以 ora 开头的归 ora 所有的进程运行命令将首选堆页面大小设置为 4M,将首选栈页面大小设置为 512K

example% ppgsz -o heap=4M,stack=512K -p `pgrep -u ora '^ora'`
示例 2 设置首选匿名页面大小

下面的示例针对进程 ID 953 将现有合格匿名段的首选页面大小设置为 512k

example% ppgsz -o anon=512k -p 953

退出状态

如果指定并成功调用了 cmd(请参见 exec(2)),则 ppgsz 的退出状态将是 cmd 的退出状态。否则,ppgsz 将以下列值之一退出:

0

成功为 pid 列表中的进程设置了首选页面大小。

125

ppgsz 中出现错误。错误包括:参数无效、指定的页面大小无效,以及无法为 pid 列表中的一个或多个进程或 cmd 设置首选页面大小。

126

找到了 cmd,但无法调用。

127

找不到 cmd

文件

/proc/*

进程文件。

/usr/lib/ld/map.bssalign

用于对齐 bss 的模板链接编辑器 mapfile(请参见“附注”部分)。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/extended-system-utilities
接口稳定性
Committed(已确定)

另请参见

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)

Oracle Solaris 11.2 链接程序和库指南

附注

由于资源限制,首选页面大小的设置不一定可以保证目标进程将获得首选页面大小。可以使用 pmap(1) 查看目标进程的堆和栈页面的实际大小(请参见 pmap –s 选项)。

在是大页面大小的倍数的地址上,需要映射大页面。因为堆通常不是以大页面对齐的,堆的起始部分(位于第一个以大页面对齐的地址下)是以系统内存页面大小映射的。请参见 getpagesize(3C)

要提供将以大页面大小映射的堆,可使用包含 bss 段声明指令的链接编辑器 (ld(1)) mapfile 来构建一个应用程序。有关此指令以及 /usr/lib/ld/map.bssalign 中提供的模板 mapfile 的更多详细信息,请参阅Oracle Solaris 11.2 链接程序和库指南 中的 "Mapfile Option" 部分。用户需要注意的是,对齐规范可能是特定于计算机的,在不同的硬件平台上可能会失去其作用。未来的发行版中可能会出现更灵活的请求最佳底层页面大小的方式。

还可以使用 mpss.so.1(1)(一个可预装入的共享目标文件)来设置首选栈和/或堆页面大小。