3

SolarisOSを実行しているサーバーがあります。プロセッサの数を特定のプロセスにバインドしたい。次のコマンドを試しました。

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そしてもちろんmanページがあります:

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

于 2015-05-29T16:19:33.257 に答える