1

ワーカー ロールを 4 コアの仮想マシンで実行するように指定したとします。すべてのコアを利用するにはどうすればよいですか?

RoleEntryPoint.Run()リクエストハンドラーをインストールするためにオーバーライドするメソッドがあるようです。

すべてのコアを利用するためのリクエストを処理するにはどうすればよいですか? 手動でスレッドを生成し、それらに処理​​を委譲するだけですか、それとも自動的に行うのに役立つ巧妙な抽象化が用意されていますか?

4

4 に答える 4

2

スレッドを生成するか、.Net 4 タスクを使用して、スレッド プールを使用してジョブを .Net にスケジュールさせます。

于 2011-05-20T07:54:32.620 に答える
2

ここで説明されているように、WorkerRole::OnStart() に複数のワーカーを追加する必要があります。

于 2011-06-17T00:20:14.757 に答える
1

4つのコアすべてをビジー状態に保つ別の方法は、各コアがそのインスタンスで実行されるように、アプリケーションをWebロールの複数のインスタンスにスケールアウトすることです(Windows Azureでは、各インスタンスが独自の仮想マシンで実行されることに注意してください)。Windows Azureでは、コアごとに時間単位で支払うため、4つのワーカーロールインスタンスごとに1つのコアを使用すると、単一のワーカーロールインスタンスで4つのコアを実行する場合と同じコストになります。

4つのワーカーロールインスタンスを使用する利点は、任意の時点で実行する必要のあるコンピューティングの量に応じて、3、2、または10のインスタンスにさらに便利に調整できることです。実行中のインスタンスの数を変更するのは簡単です。アプリケーションを再デプロイする必要はありません。インスタンスのサイズを変更するには、再デプロイする必要があります。また、インスタンスサイズ(部分、1、2、4、および8コア)だけでは粒度が低くなります。たとえば、6コアのインスタンスサイズはありません。

インスタンスが1つしかない場合、WindowsAzureSLAは有効ではないことにも注意してください。さまざまなSLAが開始する前に、最低2つのインスタンスが必要です。これは、AzureのFabric Controllerが、アプリケーション全体を停止することなく、アプリケーションの一部(O / Sパッチなど)を更新できるようにするための一部です。

警告:クラウドを念頭に置いて設計されていないレガシーコードの場合、複数のインスタンスが実行されていると正しく機能しないコードが存在する可能性があります。つまり、効果的に「スケールアウト」することはできません。この場合、より大きなインスタンスサイズ(4コアなど)で実行することで「スケールアップ」できます。

于 2011-06-16T21:06:20.000 に答える
1

Oliver に +1 - 各リクエストで TPL タスクを生成します。フレームワーク ランタイムはそこからすべてを処理する必要があります。

于 2011-05-23T03:50:57.480 に答える