我有一台运行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 。
我尝试了所有的手册页和文档,但无法得到线索。
任何人都可以就此提出一些建议。
感谢。
答案 0 :(得分:3)
在Solaris中执行此操作的工具是psrset
使用
创建处理器集 psrset -c 4-7
这将返回新处理器集的ID
created processor set ps_id
然后,您可以使用
将进程绑定到处理器集 psrset -b ps_id pid
答案 1 :(得分:0)
在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