CLIアプリケーションがあり、いくつかの操作(メディアファイルの処理など)を実行したいとします。アプリケーションインスタンスを実行するときにCPUの20%を消費します。残りの80%はアイドル状態です。
私はほぼすべてのCPUを使用するためにできるだけ多くのアプリケーションインスタンスを実行できるプロセスマネージャの一種が欲しいです。アプリケーションは何をすべきか、兄弟を邪魔しない方法を知っていますが、それ自体を作成/管理することはできません。
このようなマネージャーはありますか?私はSupervisorを使用して各アプリケーションの1つのインスタンスを使用してさまざまなアプリケーションの固定セットを実行してきましたが、CPUの可用性に応じて同じアプリケーションのさまざまなインスタンスを実行するために使用できるかどうかはわかりません。
答え1
たとえば、最大致死率のためにいくつかのソフトウェアがあります。HTCondor
しかし、これらのフレームワークは、状況に応じて必要なものよりも設定コストが高く、学習曲線が長い場合が多いです。
よりシンプルで柔軟性の低いソリューションは、現在のCPU負荷を確認し、それに応じてwait
プロセスを終了するのか、それとも1つ以上のタスクを作成するのか(それからwait
プロセスが終了するように)決定する小さなスクリプトを書くことです。このスクリプトは、同様のものから発展した可能性がありHTCondor
ます。
Makefile
最初のものを使用してから、各make -j 4 ...
「タスク」がCPUの20%〜25%を占めることを知って使用する方が簡単です。これは、ジョブがどのくらいのCPUを使用しているかを知っており、すべてのジョブを一覧表示できると想定しています。したがって、タスクリストから作成Makefile
できない場合はそれほど柔軟ではありません。Makefile