手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

mpss.so.1(1)

名称

mpss.so.1 - 用于设置首选页面大小的共享目标文件

用法概要

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=size
MPSSSTACK=size

MPSSHEAP 和 MPSSSTACK 分别指定了堆和栈的首选页面大小。指定的页面大小将应用于所创建的所有进程。

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

size 可使用 KMGT 加以限定,以分别指定千字节、兆字节、千兆字节或兆兆字节。

MPSSCFGFILE=config-file

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(若存在该文件)中获取首选页面大小设置。

MPSSERRFILE=pathname

缺省情况下,使用级别 LOG_ERR 和工具 LOG_USER 通过syslog(3C) 记录错误消息。如果 MPSSERRFILE 包含有效的 pathname(例如 /dev/stderr),将在其中记录错误消息。

示例

示例 1 使用 MPSSCFGFILE 配置首选页面大小

以下 Bourne shell 命令(请参见 sh(1))使用 MPSSCFGFILE 环境变量为其 exec 名称以 foo 开头的一组选定应用程序配置首选页面大小。假设之前已使用某个文本编辑器(如 vi(1))创建了 MPSS 配置文件 mpsscfgcat(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 使用 MPSSHEAPMPSSSTACK 配置首选页面大小

以下 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。将以下命令附加到 Example 2 的命令后,这表示将在配置文件中为所有应用程序配置 512K 的堆首选页面大小和 64K 的栈首选页面大小,除了那些应用程序、ls 命令以及所有以 ora1 作为参数并以 ora 开头的应用程序。

example$ MPSSCFGFILE=mpsscfg2
example$ export MPSSCFGFILE
example$ cat $MPSSCFGFILE
ls::
ora* ora1:4m:4m

文件

/usr/lib/ld/map.bssalign

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

/etc/mpss.conf

配置文件

属性

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

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

另请参见

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) 中的“附注”部分。