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

退出打印视图

更新时间: 2014 年 7 月
 
 

pbind(1M)

名称

pbind - 控制和查询进程或 LWP 的绑定

用法概要

pbind -b [-c | 
g | l] [target_list] [
-n] [-s | w] [-xft] [
-i idtype] [idlist]
pbind -b [-c | 
g | l] [target_list] [
-n] [-s | w] [-xft] [
-e command [argument(s)]]
pbind [-q] [-c | 
g | l] [-i idtype] [
idlist]
pbind -u [-i 
idtype] idlist
pbind -Q [-c | 
g | l] [target_list]
pbind -U [-c | 
g | l] [target_list]

描述

pbind 控制和查询进程和 LWP(lightweight process,轻量级进程)到 CPU 的绑定和关联。使用此实用程序,用户可以确定应在哪个处理器上计划运行一个或多个 LWP、应该强还是弱强制执行此类绑定以及子 LWP 应如何继承该绑定。pbind 还可用于执行带有指定绑定的命令。

使用强关联,目标 LWP 将仅在指定的处理器上运行,而使用弱关联则会尽力尝试在此类 CPU 上执行 LWP。pbind 确定的绑定不是专用的,即处理器还可以执行其他 LWP。反过来,这意味着如果其他更高级别 LWP 正在占用同一处理器则会禁止运行绑定的线程。

目标 CPU 可以通过其处理器 ID 来直接指定,也可以通过其处理器组 (Processor Group, PG) 或地址组 (lgroup) ID 来间接指定。用户还可以指定负向关联,指示应避免使用指定的 CPU。

查询特定 LWP 的绑定时,用户可以要求生成的 CPU 集应该通过其 ID、包含 CPU 的处理器组或地址组来进行标识。同样,查询或删除特定处理器的所有绑定时,用户可以通过这些处理器各自的 PG 或 lgroup ID 来进行标识。

缺省情况下,绑定将在 exec(2)、fork(2) 和 thr_create(3C) 中继承,但是用户可以要求应在一个或多个此类操作中打破继承。

非常重要的是,请注意 pbind 确定的运行时行为取决于指定 CPU 的连续联机状态及其与目标 LWP 的相同处理器集的关联。如果这些底层条件更改,LWP 将失去其对给定 CPU 的关联并且在条件恢复时将需要进行重置。

超级用户可以绑定或取消绑定任何进程或 LWP,而其他用户可以绑定或取消绑定他们有权对其发送信号的任何进程或 LWP,即与该用户具有相同有效用户 ID 的任何进程。

选项

支持以下选项:

–b

此选项以及一个或多个标识符一起指示哪些 CPU、处理器组或地址组是所请求的绑定的目标。

有效目标类型及其相应解释如下:

–c

CPU 或处理器 ID(缺省值)。所有给定 CPU 必须存在并且处于联机状态。使用 psrinfo 命令确定 target_list 是否存在并且处于联机状态。有关更多信息,请参见 psrinfo(1M)

–g

处理器组 ID。有关更多信息,请参见 pginfo(1M)

–l

地址组 ID。指定的 lgroup 必须包含至少一个联机 CPU 才能继续操作。有关详细信息,请参见 lgrpinfo(1M)。

–n

指示应避免使用给定的目标处理器。

–s

指示强强制执行绑定(缺省)并且仅应在给定处理器上执行指定 LWP。

–w

指示弱强制执行绑定并且最好应在给定处理器上执行指定 LWP,但是如果需要可以在其他位置运行该 LWP。

–i idtype

此选项与 idlist 参数共同指定要应用绑定的一个或多个进程或 LWP。idlist 的解释取决于 idtype 的值,如果省略则缺省为 pid。

–i pid[/lwps]

idlist 是进程 ID 的列表(每个 ID 可能后跟正斜杠 (/))以及以逗号分隔的 LWP ID 的列表。通过 - 分隔范围开始和结束来指示 LWP ID 的范围。

–i ppid

idlist 是父进程 ID 的列表。绑定命令应用于父进程 ID 位于列表中的所有进程。

–i pgid

idlist 是进程组 ID 的列表。绑定命令应用于指定进程组中的所有进程。

–i uid

idlist 是用户 ID 的列表。绑定命令应用于有效用户 ID 等于列表中 ID 的所有进程。

–i gid

idlist 是组 ID 的列表。绑定命令应用于有效组 ID 等于列表中 ID 的所有进程。

–i taskid

idlist 是任务 ID 列表。绑定命令应用于指定任务中的所有进程。

–i projid

idlist 是项目 ID 的列表。绑定命令应用于有效项目 ID 等于列表中 ID 的所有进程。

–i zoneid

idlist 是区域 ID 的列表。绑定命令应用于有效区域 ID 等于列表中 ID 的所有进程。

请注意,P_MYID 标识符可以与上面的任何 ID 类型一起使用来指示所需 ID 是给定类型的调用 LWP 的 ID(例如,P_PIDP_MYID 将产生调用者 LWP 的进程标识符)。

–x

不要在 exec(2) 中继承关联。

–f

不要在 fork(2) 中继承关联。

–t

不要在 thr_create(3C) 中继承关联。

–e

执行带有指定绑定的命令。

–q

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

此外,可以包括 [–gl] 选项来要求报告应包括哪些处理器组或地址组(包含指定 LWP 绑定到的 CPU)。缺省情况下,始终显示处理器 ID。

–Q

显示绑定到指定 CPU 列表、处理器组或地址组的 LWP,或者具有处理器绑定的所有 LWP。对于由多个 LWP 组成的进程,将显示单个 LWP 的绑定。

–u

删除指定进程的所有或部分 LWP 的绑定,允许在任何联机处理器上执行它们。

–U

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

返回值

成功完成时,pbind 返回 0。如果发生错误,将返回正整数,指示生成的错误号。

错误

pbind 命令在以下情况下将失败:

ESRCH

不存在指定的进程或 LWP。

EINVAL

指定的 idtype 或 ID 不存在,所有目标处理器都处于脱机、故障状态,部分不同处理器集或给定选项组合无效。

EPERM

{PRIV_PROC_OWNER} 特权未在有效调用进程集中声明并且其实际或有效用户 ID 与绑定的 LWP 之一的实际或有效用户 ID 不匹配。

示例

示例 1 将进程 101048 绑定到 CPU 1 的等效方式
# pbind -b 1 101048
pbind(1M): pid 101048 strongly bound to processor(s) 1.
# pbind -b -c 1 101048
pbind(1M): pid 101048 strongly bound to processor(s) 1.
# pbind -b -c 1 -i pid 101048
pbind(1M): pid 101048 strongly bound to processor(s) 1.
# pbind -b -c 1 -s -i pid 101048
pbind(1M): pid 101048 strongly bound to processor(s) 1.
示例 2 将进程 101048 重新绑定到 CPU 0-3
# pbind -b -c 0-3 101048
pbind(1M): pid 101048 strongly bound to processor(s) 1.
pbind(1M): pid 101048 strongly bound to processor(s) 0 1 2 3.
示例 3 将进程 101048 重新绑定到处理器组 1 中的 CPU
# pbind -b -g 1 101048
pbind(1M): pid 101048 strongly bound to Processor Group(s) 1 2.
pbind(1M): pid 101048 strongly bound to Processor Group(s) 1.
示例 4 将进程 101048 重新绑定到地址组 2 中的 CPU
# pbind -b -l 2 101048
pbind(1M): pid 101048 strongly bound to Locality Group(s) 0 1.
pbind(1M): pid 101048 strongly bound to Locality Group(s) 0 2.
示例 5 将进程 101048 弱绑定到 CPU 2
# pbind -b 2 -w 101048
pbind(1M): pid 101048 weakly bound to processor(s) 2.
示例 6 将进程 101048 绑定到除 CPU 1 之外的所有 CPU
# pbind -b 1 -n 101048
pbind(1M): pid 101048 strongly bound to processor(s) 0 2 3.
示例 7 将进程 101048 弱绑定到所有 CPU(处理器组 1 中的 CPU 除外)
# pbind -b -g 1 -n -w 101048
pbind(1M): pid 101048 strongly bound to Processor Group(s) 1 2.
pbind(1M): pid 101048 weakly bound to Processor Group(s) 2
示例 8 根据 CPU、处理器组和地址组查询进程 101048 的绑定
# pbind -q 101048
pbind(1M): pid 101048 weakly bound to processor(s) 2 3.
# pbind -q -g 101048
pbind(1M): pid 101048 weakly bound to Processor Group(s) 2.
# pbind -q -l 101048
pbind(1M): pid 101048 weakly bound to Locality Group(s) 0 2.
示例 9 查询进程 101048 的绑定
# pbind -q -i pid 101048
pbind(1M): pid 101048 weakly bound to processor(s) 2 3.
示例 10 根据处理器组查询进程 101048 的绑定
# pbind -q -g -i pid 101048
pbind(1M): pid 101048 weakly bound to Processor Group(s) 2.
示例 11 查询 CPU 2 的所有绑定
# pbind -Q 2
pbind(1M): LWP 101048/1 weakly bound to processor(s) 2 3.
pbind(1M): LWP 102122/1 weakly bound to processor(s) 2 3.
示例 12 取消绑定进程 101048
# pbind -u 101048
pbind(1M): pid 101048 successfully unbound.
示例 13 从 CPU 1 取消绑定所有进程
# pbind -U 1
示例 14 从地址组 2 取消绑定所有进程
# pbind -U -l 2
示例 15 执行带有指定绑定的 ls(1)
# pbind -b -c 3 -e ls
file1  file2  file3  file4

属性

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

属性类型
属性值
可用性
system/core-os

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

另请参见

psrinfo(1M)psradm(1M)psrset(1M)pginfo(1M)lgrpinfo(1)processor_info(2)processor_bind(2)pset_create(2)pset_assign(2)pset_bind(2)pset_destroy(2)exec(2)fork(2)thr_create(3C)procset.h(3HEAD)attributes(5)privileges(5)

诊断

pbind: cannot query pid 31: No such process

指定的进程不存在或已退出。

pbind: cannot bind pid 31: Not owner

用户无权绑定进程。

pbind: cannot bind pid 31: Invalid argument

指定处理器不处于联机状态。