2017-08-28 1 views
1

分散マルチプロセッシングワーカーでワーカーリソース(http://distributed.readthedocs.io/en/latest/resources.html)を定義すると、すべてのプロセスに対して定義されたリソースプールはありますか?分散ワーカーのワーカーリソースを除外します

例えば

、労働者のホスト上で、私が実行しています:

dask-worker --nprocs 8 --resources HOST=1 

を今、私はresources={"HOST":1}を必要とするタスク(複数可)を提出した場合は、そのマシン上のプロセスの一つだけが、このタスクを実行します。この保証はありません特定の瞬間に?

答えて

1

resourcesキーワードは、すべてのプロセスに均等に適用されます。 すべて労働者には、HOSTのリソースが1つ手に入ります。一般的に、機関のクラスタでの成熟した展開では、--nprocsキーワードを避けて、各dask-workerプロセスを個別に作成することをお勧めします。これはもっと明白です。

dask-worker scheduler-address:8786 --resources 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
dask-worker scheduler-address:8786 
+0

私の例では、これらの作業者のうちの1人だけが特定のタスクを実行するようにする方法がありますか?依然としてnprocsを使用し、HOST:1という要件を定義すると、すべてのプロセスが同時に実行されます。一方、私がホストを必要とするならば:8人...どれも実行されませんか? 一般的な乳母のいない別のプロセスについては同じ質問があります。 – evilkonrex

+0

リソースは、タスクが複数回実行されるのを制限するものではなく、どの作業者がどのタスクを実行できるかを制限します。上記の '--nprocs'を避ける例は完全に明示的でなければなりません。 '--nprocs'キーワードを避けることをお勧めします。 – MRocklin

+0

私は、--nprocsを使用してから独自のプロセスマネージャを使用して、複数のプロセスを明示的に開始することにします。 もう少し詳しく説明しましょう。単一のホスト上のワーカープロセスが依然として特定のリソースを共有するという考え方です。したがって、ホスト上のすべてのリソースを必要とするタスクを実行すると、このホスト上の1人のワーカーだけが同時に実行できます。マルチスレッドワーカーでは簡単だと思いますが、複数のワーカープロセスに対してこのケースをサポートする機能はありますか? PS - われわれのワーカーコードにリソース同期を実装している可能性がありますが、複雑になります – evilkonrex

関連する問題