0

.NET 4 および 4.5 のホワイトペーパーには、並列ライブラリが IO アクセスのパフォーマンスをどのように高速化できるかについてのコメントがあります。(以下のバッファ付きシリアル キューの例)

ここに画像の説明を入力

質問:

.NET 4 並列バッファリング、または .NET 4.5 Async/Awaitを Azure ストレージと正常に統合した人はいますか?

もしそうなら、ThreadPool にどのような影響がありましたか? また、これを ASP.NET のスレッドプールの外で実行すると有利でしょうか?

Webrole と Worker のみの実装に興味があります。

ソース:

4

1 に答える 1

0

TPL または async/await は、純粋にフレームワーク コンストラクトです。それらは、スレッドを管理したり、手動で非同期呼び出しを使用した場合と同じタスクを「単純に」簡単にします。Azure ストレージと統合する必要はありません。

TPL とその上に構築された async/await 機能は、スケジューラを使用して作業をスケジュールします。デフォルトのスケジューラは、ワークスティーリング手法を使用して4.0 ThreadPoolを使用します。これは、ThreadPool への作業のスケジューリングについて心配する必要がないことを意味します。

ストリーム操作の高速化に関して言えば、パフォーマンスの向上は、複雑なストリーム操作を分割し、ステップのパイプラインを作成することによってもたらされます。各ステップは非同期で実行され、別のコアまたはハイパースレッドが利用可能な場合はそれらを使用する可能性があります。これにより、IO バウンド操作を CPU バウンド操作と並行して実行できます。

あなたの例では、TransforStream は、ブロックを入力ストリームからエンクリプター、そしてコンプレッサーに非同期的にコピーします。これにより、各ステップを可能な限り高速に非同期で実行できます。入力ストリームはディスクからの読み取りを続け、圧縮機と暗号化機はメモリ内のデータを処理します。

Windows Azure ストレージのパフォーマンスに関しては、TPL 固有の問題ではありません。各パーティションまたは BLOB は最大 IO 操作を処理できることに注意してください。最適なオプションは、異なるパーティションに並列リクエストを送信できるようにデータをパーティション化することです。「ホット」パーティションを作成しないパーティショニング スキームを使用する必要があります。パーティショニングはすべての Azure アプリケーションにとって重要ですが、非同期操作を使用すると、Web 要求ごとにより多くの IO 要求が実行されることになります。

ご質問への回答として、Azure での TPL の使用は、他のアプリケーションと何ら変わりはありません。

于 2012-05-22T07:19:32.467 に答える