Go to main content

手册页部分 8:系统管理命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

psrset(8)

名称

psrset - 创建和管理 pset

用法概要

psrset -a [-F] pset_id processor_id...
psrset -b pset_id pid [/lwpid]...
psrset -c [-F] [processor_id]...
psrset -d pset_id...
psrset -e pset_id command [argument(s)]
psrset -f pset_id
psrset [-i] [pset_id]...
psrset -n pset_id
psrset -p [processor_id]...
psrset [-q] [pid [/lwpid]]...
psrset -Q [pset_id]...
psrset -r [-F] processor_id...
psrset -u pid [/lwpid]...
psrset -U [pset_id]...

描述

psrset 实用程序可控制 pset 的管理。pset 允许将进程或 LWP 绑定到处理器组,而非单个处理器。分配给 pset 的处理器只能运行已绑定到该 pset 的 LWP。

此命令不能用于修改或绑定到资源池框架创建的 pset。这些 pset 称为“池 pset”。这包括分配已分配给池 pset 的处理器。使用 pooladm(8)poolcfg(8)poolbind(8) 修改并绑定池 pset。

除缺省处理器集之外,在任何给定时间只有单个区域中的处理器和/或 LWP 能够绑定到每个处理器集。

选项

支持以下选项:

–a

将指定的处理器分配给指定的处理器集。通过附加 –F 选项,在更改 pset 之前,所有绑定到指定处理器的 LWP 都将取消绑定。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

目标 pset 不能是池 pset。此外,已分配或已指派给池 pset 的所有指定处理器都无法再通过 psrset(8) 指派给 pset。要处理分配给池 pset 的处理器,请使用池实用程序。请参见 poolcfg(8)

–b

将指定进程的所有或部分 LWP 绑定到指定 pset。

绑定到 pset 的 LWP 仅限于在该集中的处理器上运行。进程只能被绑定到非空 pset,即已分配有处理器的 pset。

绑定将被继承,因此由绑定 LWP 创建的新 LWP 和进程将会具有相同的绑定。将交互式 shell 绑定到处理器,例如,绑定 shell 执行的所有命令。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

只有 psrset(8) 创建的 pset 是有效的绑定目标。池 pset 不是有效的绑定目标。请参见 poolcfg(8)poolbind(8)

使用专用 CPU 或绑定至池 pset 的区域中的各个进程或线程不得绑定至其他 pset,包括缺省 pset、psrset(8) 创建的 pset 和其他池 pset。绑定属于此类区域的进程或线程将会失败。

–c

创建新的 pset 并显示新处理器集 ID。通过附加 –F 选项,在将绑定到指定处理器的所有 LWP 分配给正在创建的 pset 之前,将会取消绑定这些 LWP。

如果指定了处理器列表,还会尝试将这些处理器分配给 pset。如果分配成功,在将 LWP 绑定到 pset 之前,这些处理器会一直空闲。该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

已分配或已指派给池 pset 的所有指定处理器都无法再通过 psrset(8) 指派给 pset。要处理分配给池 pset 的处理器,请使用池实用程序。请参见 poolcfg(8)

在某个给定时间只有有限数量的 pset 可以处于活动状态(已创建且未销毁)。该限制始终大于系统中的处理器数量。如果当最大数量的 pset 已处于活动状态时使用了 –c 选项,命令将失败。

当 LC_MESSAGES 语言环境类别指定 “C” 语言环境时,以下格式用于 –c 选项输出的第一行。在其他语言环境中,字符串 createdprocessorset 可以替换为与该语言环境对应的更合适的字符串。


"created processor set %d\n" processor set ID
–d

删除指定的 pset,释放与之关联的所有处理器和进程。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

只有 psrset(8) 创建的 pset 是有效的目标。

–e

在指定 pset 中执行命令(带可选参数)。

命令进程和任意子进程仅由 pset 中的处理器执行。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

只有 psrset(8) 创建的 pset 是有效的目标。

–f

为指定 pset 内的所有处理器禁用中断。请参见 psradm(8)

如果集中的某些处理器无法禁用其中断,其他处理器仍禁用其中断,则命令会报告错误,并返回非零退出状态。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

–F

通过对绑定到指定处理器的所有线程取消绑定,强制执行指定的 pset 操作。只有 –a–c–r 选项能与该选项结合使用。建议管理员为 pbind(8) 使用 –Q 选项,以找出此类操作会影响哪些线程。

–i

显示分配给每个指定 pset 的处理器列表。如果未指定任何参数,会显示所有 pset 以及分配给它们的处理器的列表。如果未为 psrset 命令指定选项,这也是缺省操作。

–n

为指定 pset 内的所有处理器启用中断。请参见 psradm(8)

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

–p

显示指定处理器列表的 pset 分配。如果未指定任何参数,会指定系统中所有处理器的 pset 分配。

–q

显示指定进程或所有进程的 pset 绑定。如果一个进程由具有不同绑定的多个 LWP 组成,且未显式指定 LWP,则只显示其中一个绑定 LWP 的绑定。部分 LWP 的绑定可以通过将 “/lwpids” 附加到进程 ID 来显示。可以使用 “-” 和 “,” 分隔符选择多个 LWP。请参见“示例”部分。

–Q

显示绑定到指定处理器集列表的 LWP,或者具有 pset 绑定的所有 LWP。

–r

从其当前的处理器集中删除处理器列表。删除的处理器将返回到通用处理器池,这在资源池框架中也称为缺省 pset。

使用 pbind(8) 绑定了 LWP 的处理器无法使用 –F 选项指派给 pset 或从 pset 中删除。

该选项仅限具有 PRIV_SYS_RES_CONFIG 特权的用户使用。

目标 pset 不能位于池 pset 中。要处理分配给池 pset 的处理器,请使用池实用程序。请参见 poolcfg(8)

–u

删除指定进程部分或所有 LWP 的 pset 绑定,从而允许它们在未通过 pbind 绑定到单个处理器时在任何联机处理器上执行。

具有 PRIV_SYS_RES_CONFIG 特权的用户可以从任何活动的 pset 取消绑定任何进程或 LWP。其他用户可以从没有设置 PSET_NOESCAPE 属性的 pset 取消绑定进程和 LWP。此外,用户必须具有控制受影响进程的权限,用户的实际或有效用户 ID 必须与目标进程的实际或已保存用户 ID 匹配。

使用专用 cpu 或绑定到池 pset 的区域可能没有取消绑定单个进程或线程。取消绑定属于此类区域的进程或线程将会失败。

–U

删除绑定到指定 pset 列表的所有 LWP 的绑定,或者在未指定任何参数时绑定到任意 pset 的所有 LWP 的绑定。

只有 psrset(8) 创建的 pset 是有效的取消绑定目标。池 pset 不是有效的取消绑定目标。使用 poolbind(8) 将已绑定至常规池的进程绑定至缺省池。

操作数

支持下列操作数:

pid

指定 pid 作为进程 ID。

lwpid

要控制或查询的指定进程的 LWPID 集。选择 LWP ID 的语法如下:

2,3,4-8       LWP IDs 2, 3, and 4 through 8
-4            LWPs whose IDs are 4 or below
4-            LWPs whose IDs are 4 or above
processor_id

processor_id 指定为单个处理器编号(例如,3)、由空格分隔的多个处理器编号(例如,1 2 3)或者处理器编号的范围(例如,1-4)。也可以组合使用范围和单个或多个 processor_id(例如,1‐3 5 7‐8 9)。

pset_id

pset_id 指定为处理器集 ID。

退出状态

将返回以下退出值:

0

成功完成。

non-0

出现错误。

属性

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

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

另请参见

processor_bind(2)processor_info(2)pset_bind(2)pset_create(2)pset_info(2)sysconf(3C)libpool(3LIB)attributes(7)privileges(7)resource-management(7)pbind(8)pooladm(8)poolbind(8)poolcfg(8)psradm(8)psrinfo(8)

诊断

以下输出表示指定进程不存在或者已退出:


psrset: cannot query pid 31: No such process

以下输出表示用户没有权限绑定该进程:


psrset: cannot bind pid 31: Insufficient privileges

以下输出表示用户无权分配该处理器:


psrset: cannot assign processor 4: Insufficient privileges

以下输出表示指定处理器未联机或指定处理器不存在:


psrset: cannot assign processor 8: Invalid argument

以下输出表示指定进程中的一个 LWP 绑定到一个处理器,不能绑定到不包含该处理器的 pset:


psrset: cannot bind pid 67: Device busy

以下输出表示指定处理器不能添加到 pset。这可能是由于将 LWP 绑定到该处理器,或者因为该处理器无法与该集中的其他处理器结合在同一 pset 中,或者因为该处理器是当前 pset 中的最后一个处理器:


psrset: cannot assign processor 7: Device busy

以下输出表示指定 pset 不存在:


psrset: cannot execute in processor set 8: Invalid argument

以下输出表示系统中所允许的最大数量的 pset 已处于活动状态:


psrset: cannot create processor set: Cannot allocate memory

以下输出表示目标 pset 是由资源池工具创建的:


psrset: cannot assign processor 7: Operation not supported
psrset: cannot bind pid 31: Operation not supported
psrset: cannot bind pid 31: Operation not supported 
psrset: could not remove processor set 1: Operation not supported
psrset: cannot exec in processor set 1: Operation not supported
psrset: cannot remove processor 7: Operation not supported
psrset: cannot unbind pid 31: Operation not supported