跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11 Information Library (简体中文) |
- 为栈、堆和/或其他匿名段设置首选页面大小
/usr/bin/ppgsz [-F] -o option[,option] cmd | -p pid...
ppgsz 实用程序为目标进程(即启动的 cmd 或 pid 列表中的进程)的栈、堆和/或其他匿名段设置首选页面大小。ppgsz 在更改页面大小时会停止目标进程。请参见 memcntl(2)。
支持下列选项:
强制。为目标进程设置首选页面大小选项(即使目标进程被其他进程所控制)。使用 -F 标志时应谨慎。请参见 proc(1)。
这些选项如下所示:
此选项用于为目标进程的堆指定首选页面大小。堆被定义为 bss(未初始化的数据)及紧随其后的 brk 区域(请参见 brk(2))。首选堆页面大小是为现有堆以及将来分配的任何其他堆内存设置的。请参见“注释”。
此选项用于为目标进程的栈指定首选页面大小。首选栈页面大小是为现有栈以及栈扩展时新分配的栈部分配置的。
此选项用于为目标进程的所有现有 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) 格式的。可以使用 K、M、G 或 T 对数字值加以限定,以分别指定千字节、兆字节、千兆字节或兆兆字节。4194304、0x400000、4096K、0x1000K 和 4M 这几种不同的方式指定的都是 4 兆字节。
为跟在 -p 选项后的进程 ID (pid) 列表中的目标进程设置首选页面大小选项。pid 列表还可以包含 /proc 目录中的名称。只允许进程所有者或超级用户设置页面大小。
如果未指定 -p,将会解释 cmd。ppgsz 将启动 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 将以下列值之一退出:
成功为 pid 列表中的进程设置了首选页面大小。
ppgsz 中出现错误。错误包括:参数无效、指定的页面大小无效,以及无法为 pid 列表中的一个或多个进程或 cmd 设置首选页面大小。
找到了 cmd,但无法调用。
找不到 cmd。
进程文件。
用于对齐 bss 的模板链接编辑器 mapfile(请参见“注意”部分)。
有关下列属性的描述,请参见 attributes(5):
|
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)
由于资源限制,首选页面大小的设置不一定可以保证目标进程将获得首选页面大小。可以使用 pmap(1) 查看目标进程的堆和栈页面的实际大小(请参见 pmap -s 选项)。
在是大页面大小的倍数的地址上,需要映射大页面。因为堆通常不是以大页面对齐的,堆的起始部分(位于第一个以大页面对齐的地址下)是以系统内存页面大小映射的。请参见 getpagesize(3C)。
要提供将以大页面大小映射的堆,可使用包含 bss 段声明指令的链接编辑器 (ld(1)) 映射文件来构建一个应用程序。有关此指令以及 /usr/lib/ld/map.bssalign 中提供的映射文件模板的更多详细信息,请参阅《链接程序和库指南》中的“映射文件选项”部分。用户需要注意的是,对齐规范可能是特定于计算机的,在不同的硬件平台上可能会失去其作用。在将来的发行版中,可能会开发出用于请求最佳基础页面大小的更灵活方式。
还可以使用 mpss.so.1(1)(一个可预装入的共享对象)来设置首选栈和/或堆页面大小。