シェルスクリプト実行時のプロセス選好を設定する

シェルスクリプト実行時のプロセス選好を設定する

次のアプリケーションを起動できるスクリプト(.sh)があります。

#!/bin/sh
./application1 configuration1.cfg  param1 param2 param3 &

sleep 2

./application2 configuration2.cfg  param1 param2 param3 &

sleep 2

など

プロセスを開始するときにCPUアフィニティを割り当てる方法はありますか?

あとは本当にやりたかったです。 C ++ではプログラムでこれを行うことができますが、シェルが最善の方法のようです。

それでは、起動後に実際にそのCPU/コアに固定されているかどうかを確認できますか?

答え1

ユーティリティプログラムがありますが、tasksetutil-linuxの一部であることは、この目的のためのものです。たとえば、

taskset -c 0-15 script

実行され、scriptIDが0〜15のCPUのみを使用するように制限されます。

スクリプトが実際に正しいCPUで実行されるように制限されていることを確認するには、ファイルを表示します。ファイルには(ビットマップ、CPU 0が許可されている場合は最下位ビットが設定されます)、および(CPU IDリスト)/proc/<pid>/statusという項目が含まれています。 )。Cpus_allowedCpus_allowed_list

答え2

私自身も「学習経験」をしていますが、これが関連している可能性があります。

特定のCPUのバックグラウンドでbashスクリプトを実行するには、次のようにします。

taskset -c 1 ./myScript &

myScriptに次の行を含めます。

echo MyScript: $$\($BASHPID\) taskset -cp $BASHPID

$BASHPIDは私にとって新しいものです。 「現在の Bash プロセスのプロセス ID です。場合によっては $$ と異なる場合があります。」

個人的には、私は特定のCPUのバックグラウンドでbash機能を実行するのに苦労しています。

taskset -c 1 ./myFunction &

...提供:ワークセット:myFunctionを実行できません:対応するファイルまたはディレクトリがありません

数回の間違った起動後

(taskset -cp 1 $BASHPID;myFunction)&

…有望に見えますね。

関連情報