8コアCPUが16スレッドをサポートしている場合、プール内のプロセス数としては16が8よりも適切ですか?

user1315789

Python3.7でマルチプロセッシングを使用しています

いくつかの記事は、プールで使用するプロセスの数のためのかなりの数は、CPUコアの数であると言います。

私のAMDRyzen CPUは8コアで、16スレッドを実行できます。

では、プロセスの数は8または16にする必要がありますか?

import multiprocessing as mp
pool = mp.Pool( processes = 16 )         # since 16 threads are supported?
user3666197

Q「では、プロセスの数は8または16にする必要がありますか?」


したがって、サブプロセスの分散ワークロードの群れがキャッシュの再利用を集中的に行う場合(メモリI / Oではない)、SpaceDOMAINキャッシュ可能なデータのサイズが8または16のどちらであるかを決定する際に重要な役割を果たすため、-constraintsルール。

どうして ?
メモリI / Oのコストは、キャッシュ内のデータの場合と比較し、メモリI / OごとTimeDOMAINに約1000倍高価であるため3xx - 4xx [ns]0.1 ~ 0.4 [ns]

決定を下す方法は?
実稼働規模の構成を決定する前に、小規模なテストを行います。


したがって、分散されるワークロードの群れがネットワークI / O、またはその他の注目に値する(ローカルで非特異的な)レイテンシーのソースであるTimeDOMAIN場合、16、160、または単にレイテンシーマスキングトリックを実行することでメリットが得られる可能性があります。 1600スレッド(この場合はプロセスではありません)。

どうして ?
ネットワーク上I / Oを実行するコストは非常に多くの待機時間を提供するため([ms]ネットワークI / O RTT遅延のいくつかは、1E7 ~ 10.000.000CPUコアuop-sごとに実行するのに十分な時間です。これはかなりの時間です。したがって、プロセス全体のスマートインターリーブも、ここでもレイテンシマスクされたスレッドベースの同時処理を使用するのが適している可能性があります(ネットワーク経由のI / Oからのリモート「応答」を待機しているスレッドとして)予想されるI / Oバイトが返されるまで計算するものがないため、GILロックを求めて戦うべきではありませんか?)

決定を下す方法は?
コードを確認して、ネットワーク経由のI / Oフェッチの数と、ゲーム内のキャッシュフットプリントサイズの読み取りの数を確認します(2020 / Q2 +では、L1キャッシュは約数[MB]秒に増加しました)。これらの操作が何度も繰り返される場合は、「遅い」ネットワークごとに1つのスレッドをスピンアップすることを躊躇しないでください-I / Oターゲットは、偶然に作成された「長い」待機のマスキングによって処理が恩恵を受けるためです。ただ安い(「速い」)そして(「多くの」そして「長い」待ち時間のために)かなりまばらなスレッドスイッチングまたは完全なサブプロセスをマッピングするO / S駆動のプロセススケジューラのコストで時間無料のCPUコア。


したがって、分散されるワークロードの群れが上記のケースのいくつかの組み合わせである場合、実際のハードウェアローカル/非ローカルリソースで実験する以外に方法はありません。

どうして ?
ワークロード処理の実際のCPUコアリソースへのマッピングを微調整するための経験則がないためです。


それでも、(ただ取得したい)SpeedUpの代わりに、SlowDownを達成するという既知の罠
取り戻すことで、これまで以上にお金を払ったことが簡単にわかるかもしれません。

すべての場合において、オーバーヘッド-厳格な、リソースを意識し、ワークロードのアトミック性を尊重改訂アムダールの法則は、識別ポイント・オブ・収穫逓減任意の多くの労働者(CPUコア-s)は改善されませんその後、取得を希望しスピードアップをS << 1を取得することの多くの驚きは、Stack Overflowの投稿で表現されているため、やらないこと(アンチパターンによる学習)を好きなだけ読むことができます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Windows 8へのアップグレードを実行している場合、以前のバージョンをインストールする必要がありますか、それともキーを十分に持っているだけですか?

分類Dev

スレッドプールのサイズが実行されたタスクの数よりも小さい場合、newFixedThreadPoolを使用するマルチスレッドプログラムが例外として実行されない

分類Dev

セットアップ内のフォントのバージョンがインストールされているものよりも高い場合は、InnoSetupでフォントをインストールします

分類Dev

プロセスの数がPythonのCPUのスレッドの総数よりも多い場合、アプリケーションをより高速に実行できるのはなぜですか?

分類Dev

AWS Lambda:サーバーレスフレームワークを介してデプロイした場合の「ELFロードコマンドアドレス/オフセットが適切に調整されていません」

分類Dev

プロセッサは起動時に16ビットのリアルモードから32ビットのプロテクトモードに切り替わることがわかっているので、いつ64ビットモードに切り替わるのでしょうか。

分類Dev

kerasチューナーを使用してモデルをセットアップする場合、レイヤー内のユニット数を条件付きスコープ内で定義する必要がありますか?

分類Dev

ラップトップがプリロードされ、Ubuntu で適切に動作しているということは、代わりに Debian をインストールしても同様に動作するということですか?

分類Dev

PhusionPassengerと2つのアプリを実行しているLinuxApacheサーバーには8つのルビープロセスがありますか?

分類Dev

マルチプロセスでプログラムを高速化しようとしているときに、複数のプロセスが単一のプロセスよりも遅いのはなぜですか?Pythonでプールしますか?

分類Dev

アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

分類Dev

アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

分類Dev

占有されているコアの数がスレッドプールのサイズよりも多いのはなぜですか?

分類Dev

gdbの「targetrecord-full」により、printfで「n」コマンドが「プロセスレコードはアドレス0x7ffff7dee6e7の命令0xc5をサポートしていません」で失敗しますか?

分類Dev

私のラップトップは16GBのRAMをサポートすることになっていますが、8GBしか報告されていません(ただし、チップとスロットはすべて機能します)

分類Dev

Java スレッド: 複数のクライアントがサーバーに接続できるようにするプログラムの新しいスレッドを作成するために、コード内の適切な場所を見つける方法

分類Dev

アクセスしようとしているバケットは、jenkinsからs3にアップロードするときに、指定されたエンドポイントを使用してアドレス指定する必要があります

分類Dev

プロセスが複数のリモートコンピューターで実行されているかどうかを確認し、プロセスが実行されていない場合はファイルをコピーし、成功したもののリストを保持します

分類Dev

テーブルに格納されているIPアドレスを16進数に変換するにはどうすればよいですか?私が期待している出力は、IP 141.105.223.182の場合は00:00:8D:69:DF:B6です。

分類Dev

Http GETリクエストにURLEncoderを使用している場合、適切なURLを取得していますが、そのコードをライブまたはサーバーにプッシュするとエラーが発生します

分類Dev

データベースファーストアプローチをすでに適用している場合、別のテーブルとそのモデルが必要な場合はどうすればよいですか?(.NET Core、MVC)

分類Dev

ローカルネットワーク内の他のラップトップ上のWebサーバーへのアクセスをブロックしている可能性があるものは他にありますか?

分類Dev

プロンプトボックスが空の場合、またはキャンセルがヒットした場合に成績が入力されていないかどうかをプログラムに検出させるために、このコードを編集するにはどうすればよいですか?

分類Dev

単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

分類Dev

コアごとの物理プロセッサとスレッドの数を抽出するにはどうすればよいですか?(テキストなし、他の場所で入力として使用する番号のみ)

分類Dev

コアごとの物理プロセッサとスレッドの数を抽出するにはどうすればよいですか?(テキストなし、他の場所で入力として使用する番号のみ)

分類Dev

アクセスのシーケンスが安全であることがわかっている場合、ミューテックスなしでスレッド/ CPUを同期するにはどうすればよいですか?

分類Dev

プリプロセッサが選択されていない場合でも、このReactコードはCodePenでどのように機能しますか?

分類Dev

ユーザーsystemdサービスをセットアップしようとしています:ロード済み:見つかりません(理由:そのようなファイルまたはディレクトリがありません)

Related 関連記事

  1. 1

    Windows 8へのアップグレードを実行している場合、以前のバージョンをインストールする必要がありますか、それともキーを十分に持っているだけですか?

  2. 2

    スレッドプールのサイズが実行されたタスクの数よりも小さい場合、newFixedThreadPoolを使用するマルチスレッドプログラムが例外として実行されない

  3. 3

    セットアップ内のフォントのバージョンがインストールされているものよりも高い場合は、InnoSetupでフォントをインストールします

  4. 4

    プロセスの数がPythonのCPUのスレッドの総数よりも多い場合、アプリケーションをより高速に実行できるのはなぜですか?

  5. 5

    AWS Lambda:サーバーレスフレームワークを介してデプロイした場合の「ELFロードコマンドアドレス/オフセットが適切に調整されていません」

  6. 6

    プロセッサは起動時に16ビットのリアルモードから32ビットのプロテクトモードに切り替わることがわかっているので、いつ64ビットモードに切り替わるのでしょうか。

  7. 7

    kerasチューナーを使用してモデルをセットアップする場合、レイヤー内のユニット数を条件付きスコープ内で定義する必要がありますか?

  8. 8

    ラップトップがプリロードされ、Ubuntu で適切に動作しているということは、代わりに Debian をインストールしても同様に動作するということですか?

  9. 9

    PhusionPassengerと2つのアプリを実行しているLinuxApacheサーバーには8つのルビープロセスがありますか?

  10. 10

    マルチプロセスでプログラムを高速化しようとしているときに、複数のプロセスが単一のプロセスよりも遅いのはなぜですか?Pythonでプールしますか?

  11. 11

    アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

  12. 12

    アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

  13. 13

    占有されているコアの数がスレッドプールのサイズよりも多いのはなぜですか?

  14. 14

    gdbの「targetrecord-full」により、printfで「n」コマンドが「プロセスレコードはアドレス0x7ffff7dee6e7の命令0xc5をサポートしていません」で失敗しますか?

  15. 15

    私のラップトップは16GBのRAMをサポートすることになっていますが、8GBしか報告されていません(ただし、チップとスロットはすべて機能します)

  16. 16

    Java スレッド: 複数のクライアントがサーバーに接続できるようにするプログラムの新しいスレッドを作成するために、コード内の適切な場所を見つける方法

  17. 17

    アクセスしようとしているバケットは、jenkinsからs3にアップロードするときに、指定されたエンドポイントを使用してアドレス指定する必要があります

  18. 18

    プロセスが複数のリモートコンピューターで実行されているかどうかを確認し、プロセスが実行されていない場合はファイルをコピーし、成功したもののリストを保持します

  19. 19

    テーブルに格納されているIPアドレスを16進数に変換するにはどうすればよいですか?私が期待している出力は、IP 141.105.223.182の場合は00:00:8D:69:DF:B6です。

  20. 20

    Http GETリクエストにURLEncoderを使用している場合、適切なURLを取得していますが、そのコードをライブまたはサーバーにプッシュするとエラーが発生します

  21. 21

    データベースファーストアプローチをすでに適用している場合、別のテーブルとそのモデルが必要な場合はどうすればよいですか?(.NET Core、MVC)

  22. 22

    ローカルネットワーク内の他のラップトップ上のWebサーバーへのアクセスをブロックしている可能性があるものは他にありますか?

  23. 23

    プロンプトボックスが空の場合、またはキャンセルがヒットした場合に成績が入力されていないかどうかをプログラムに検出させるために、このコードを編集するにはどうすればよいですか?

  24. 24

    単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

  25. 25

    コアごとの物理プロセッサとスレッドの数を抽出するにはどうすればよいですか?(テキストなし、他の場所で入力として使用する番号のみ)

  26. 26

    コアごとの物理プロセッサとスレッドの数を抽出するにはどうすればよいですか?(テキストなし、他の場所で入力として使用する番号のみ)

  27. 27

    アクセスのシーケンスが安全であることがわかっている場合、ミューテックスなしでスレッド/ CPUを同期するにはどうすればよいですか?

  28. 28

    プリプロセッサが選択されていない場合でも、このReactコードはCodePenでどのように機能しますか?

  29. 29

    ユーザーsystemdサービスをセットアップしようとしています:ロード済み:見つかりません(理由:そのようなファイルまたはディレクトリがありません)

ホットタグ

アーカイブ