跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11 Information Library (简体中文) |
- 用于设置首选页面大小的共享对象
mpss.so.1
mpss.so.1 是一个共享对象,可以通过它来选择性地为已启动的进程及其后代配置首选栈和/或堆页面大小。要启用 mpss.so.1,需要在环境中提供以下字符串(请参见 ld.so.1(1))以及一个或多个 MPSS(Multiple Page Size Support,多页面大小支持)环境变量:
LD_PRELOAD=$LD_PRELOAD:mpss.so.1
在预装入后,mpss.so.1 共享对象会读取以下环境变量,以确定任何首选页面大小要求以及这些页面大小可能特定于的任何进程。
MPSSHEAP 和 MPSSSTACK 分别指定了堆和栈的首选页面大小。指定的页面大小将应用于所创建的所有进程。
size 必须是一个受支持的页面大小(请参见 pagesize(1))或 0,当为 0 时,系统将选择合适的页面大小(请参见 memcntl(2))。
size 可使用 K、M、G 或 T 加以限定,以分别指定千字节、兆字节、千兆字节或兆兆字节。
config-file 是一个文本文件,其中包含一个或多个 mpss 配置条目,配置条目的格式如下:
exec-name exec-args:heap-size:stack-size
exec-name 指定应用程序或可执行文件的名称。相应的首选页面大小是为与在文件中找到的第一个 exec-name 匹配的新创建进程(请参见 getexecname(3C))设置的。
exec-name 可以是完整的路径名、根基名称或模式字符串。有关模式匹配的讨论,请参见 sh(1) 中的“生成文件名”。
exec-args 是与参数相匹配的选择性指定模式字符串。只有未指定 exec-args 时或者 exec-args 出现在 exec-name 的参数内时,才会设置首选页面大小。
如果未指定 heap-size 和/或 stack-size,则不会设置相应的首选页面大小。
MPSSCFGFILE 优先于 MPSSHEAP 和 MPSSSTACK。未设置 MPSSCFGFILE 时,将从文件 /etc/mpss.conf(若存在该文件)中获取首选页面大小设置。
缺省情况下,使用级别 LOG_ERR 和工具 LOG_USER 通过syslog(3C) 记录错误消息。如果 MPSSERRFILE 包含有效的 pathname(例如 /dev/stderr),则错误消息将记录到该文件中。
示例 1 使用 MPSSCFGFILE 配置首选页面大小
以下 Bourne shell 命令(请参见 sh(1))使用 MPSSCFGFILE 环境变量为其 exec 名称以 foo 开头的一组选定应用程序配置首选页面大小。假设之前已使用某个文本编辑器(如vi(1))创建了 MPSS 配置文件 mpsscfg。cat(1) 命令仅转储内容。
example$ LD_PRELOAD=$LD_PRELOAD:mpss.so.1 example$ MPSSCFGFILE=mpsscfg example$ export LD_PRELOAD MPSSCFGFILE example$ cat $MPSSCFGFILE foo*:512K:64K
在应用程序启动后,可使用 pmap(请参见 proc(1))来查看已配置的实际页面大小。
example$ foobar & example$ pmap -s `pgrep foobar`
如果没有配置所需的页面大小(显示在 pmap 输出中),可能是因为 MPSS 配置文件或环境变量存在错误。请检查错误日志(缺省为:/var/adm/messages)中的错误。
如果未发现任何错误,则可能归因于资源限制或对齐限制。请参见“注意”部分。
示例 2 使用 MPSSHEAP 和 MPSSSTACK 配置首选页面大小
以下 Bourne shell 命令使用 MPSSHEAP 和 MPSSSTACK 环境变量为所有应用程序配置 512K 的堆首选页面大小和 64K 的栈首选页面大小。
example$ LD_PRELOAD=$LD_PRELOAD:mpss.so.1 example$ MPSSHEAP=512K example$ MPSSSTACK=64K example$ export LD_PRELOAD MPSSHEAP MPSSSTACK
示例 3 优先级规则(从“示例 2”继续)
MPSSCFGFILE 中的首选页面大小配置优先于 MPSSHEAP 和 MPSSTACK。将以下命令附加到示例 2 的命令后,这表示将在配置文件中为所有应用程序配置 512K 的堆首选页面大小和 64K 的栈首选页面大小,除了那些应用程序、ls 命令以及所有以 ora1 作为参数并以 ora 开头的应用程序。
example$ MPSSCFGFILE=mpsscfg2 example$ export MPSSCFGFILE example$ cat $MPSSCFGFILE ls:: ora* ora1:4m:4m
用于对齐 bss 的模板链接编辑器 mapfile(请参见“注意”部分)。
配置文件
有关下列属性的描述,请参见 attributes(5):
|
cat(1)、ld(1)、ld.so.1(1)、pagesize(1)、ppgsz(1)、proc(1)、sh(1)、vi(1)、exec(2)、fork(2)、memcntl(2)、getexecname(3C)、getpagesize(3C)、syslog(3C)、proc(4)、attributes(5)
堆和栈首选页面大小是继承的。子进程的首选页面大小与其父进程的相同。在执行 exec(2) 时,除非已通过 mpss 共享对象配置了首选页面大小,否则首选页面大小将重新设置为缺省的系统页面大小。
也可使用 ppgsz(1)(一个 proc 工具)来设置首选栈和/或堆页面大小。它不能基于名称匹配选择性地为后代配置页面大小。
另请参见 ppgsz(1) 中的“注意”部分。