web-dev-qa-db-ja.com

最大並列実行制限を見つける方法は?

並列実行に制限はありますか?はいの場合、最大制限を見つける方法は?

「&」で連結された一連のスクリプトを作成し、evalを使用してそれらをすべて一緒に実行するスクリプトを作成しています。このようなもの:

scriptBuilder="ksh -x script1.sh & ksh -x script2.sh & ksh -x script3.sh";
eval $scriptBuilder;

サーバーでの並列実行の上限を確認したいだけです。

5
Sas

コマンドulimit -uは、開始できるプロセスの最大数を示します。ただし、実際にはそれほど多くのプロセスをバックグラウンドで開始しないでください。マシンはプロセス間の切り替えに時間を費やし、実際の作業を完了させることができません。

CPUにバインドされたタスクの場合、マシン上のコアと同じ数、または1つ以上のタスクを実行します。これは、これらすべてのプロセスとそのファイルキャッシュに対応するのに十分なRAMがある場合です。並列プロセスが、データのリロードを継続するためにI/O帯域幅を求めて競合している場合、実行速度は、それらを順番に実行します。 /proc/cpuinfoでコアの数を見つける

プロセッサーごとに1つのタスクを実行する簡単な方法は、 GNU parallel を使用することです。

タスクがI/Oバウンドであり、同じペリフェラルを使用している場合(たとえば、同じディスク上のファイルにアクセスする場合)、通常はそれらを順次実行するのが最善です。