5

私はシェルスクリプトを持っています。そのスクリプトでは、6 つの新しいプロセスを開始しています。私のシステムには 4 つの CPU があります。シェルスクリプトを実行すると、生成された新しいプロセスは、オペレーティングシステムによってデフォルトで CPU の 1 つに自動的に割り当てられます。ここで、スクリプトの合計実行時間を短縮したいと考えています。プロセッサの空き使用率を確認してから、プロセスを実行するプロセッサを選択する方法はありますか?

使用率が 75% を超える CPU でプロセスを実行したくありません。代わりに待機して、使用率が 75% 未満の CPU で実行します。

4 つの CPU の使用率をチェックし、選択した CPU でプロセスを実行するようにスクリプトをプログラムする必要があります。

誰かが例を手伝ってくれますか?

4

2 に答える 2

2

GNU Parallelをお勧めします:

GNU parallel は、1 台以上のコンピューターを使用して並列でジョブを実行するためのシェル ツールです。ジョブは、入力の各行に対して実行する必要がある単一のコマンドまたは小さなスクリプトです。典型的な入力は、ファイルのリスト、ホストのリスト、ユーザーのリスト、URL のリスト、またはテーブルのリストです。ジョブは、パイプから読み取るコマンドにすることもできます。次に、GNU parallel は入力を分割し、それをコマンドに並列にパイプできます。

さらに、 を使用しますnice

于 2013-07-30T10:24:06.257 に答える
1

taskset次のコマンドを使用して、特定の CPU を使用する必要があることをスケジューラに伝えることができます。

taskset -c 1 process

processCPU1で実行する必要があるスケジューラーに通知します。

ただし、ほとんどの場合、組み込みの Linux スケジューラーはうまく機能するはずです。

于 2013-07-30T10:25:58.353 に答える