3

我有一台运行 Solaris OS 的服务器。我想将处理器数量绑定到某个进程。我尝试了以下命令:

1)ps:获取进程id。

bash-3.00$ ps -ef | grep java
bileng 10708 10695   3 12:20:59 pts/1       0:26 /opt/billengine/jdk1.6.0_29/bin/sparcv9/java -Dprogram.name=run.sh -Xloggc:./jb

2)psrinfo:获取处理器id。

bash-3.00$ /usr/sbin/psrinfo
0       on-line   since 11/04/2013 16:22:17
1       on-line   since 11/04/2013 16:22:18
2       on-line   since 11/04/2013 16:22:18
3       on-line   since 11/04/2013 16:22:18
4       on-line   since 11/04/2013 16:22:18
5       on-line   since 11/04/2013 16:22:18
6       on-line   since 11/04/2013 16:22:18
7       on-line   since 11/04/2013 16:22:18

3) pbind:将进程绑定到处理器。

我想将处理器号 4 到 7 绑定到进程 id 说 10708。因此,我尝试了以下命令:

bash-3.00$ /usr/sbin/pbind -b 4-7 10708       
/usr/sbin/pbind: invalid processor ID 4-7

4)但是,当我尝试将单个处理器 id 绑定到进程 id 时,它可以工作:

bash-3.00$ /usr/sbin/pbind -b 4 10708
process id 10708: was not bound, now 4

5)但我的要求是将多个处理器绑定到单个进程 id

我尝试浏览所有手册页和文档,但无法获得线索。

任何人都可以请提出一些相同的指示。

谢谢。

4

2 回答 2

3

在 Solaris 中执行此操作的工具是psrset

您创建一个处理器集

 psrset -c 4-7

这将返回新处理器集的 ID

 created processor set ps_id

然后你可以将一个进程绑定到一个处理器集

 psrset -b ps_id pid
于 2012-04-23T08:45:13.663 回答
2

在 Solaris 11.2 中,您可以使用 processor_affinity(2) 系统调用来执行此操作。可以在此处找到描述此内容的博客条目:https ://blogs.oracle.com/observatory/entry/multi_cpu_binding_mcb当然还有一个手册页:

http://docs.oracle.com/cd/E36784_01/html/E36872/processor-affinity-2.html

于 2015-05-29T16:19:33.257 回答