Azure Batch のコストを管理するための計画
この記事では、Azure Batch のコストを計画および管理する方法について説明します。 サービスをデプロイする前に、「Azure 料金計算ツール」を使用して、Azure Batch のコストを見積もることができます。 後で、Azure リソースをデプロイするときに、推定コストを確認します。
Batch ワークロードを実行し始めた後は、Cost Management 機能を使って、予算の設定とコストの監視を行います。 また、予想コストを確認し、支出の傾向を特定して、対処が必要な領域を特定することもできます。Azure Batch のコストは、Azure で課金される月額料金の一部でしかありません。 この記事では、Azure Batch のコストを計画して管理する方法について説明しますが、サードパーティのサービスを含め、課金は、Azure サブスクリプションで使用されるすべての Azure サービスとリソースに対して行われます。
前提条件
Cost Management のコスト分析では、ほとんどの種類の Azure アカウントがサポートされますが、すべてではありません。 サポートされているアカウントの種類の完全な一覧については、「Understand Cost Management data (Cost Management データの概要)」を参照してください。 コスト データを表示するには、少なくとも Azure アカウントの読み取りアクセス許可が必要です。 Microsoft Cost Management データに対するアクセス権の割り当てについては、データに対するアクセス権の割り当てに関するページを参照してください。
Azure Batch を使用する前にコストを見積もる
Virtual Machines を追加する前に、Azure 料金計算ツールを使ってコストを推定します。
[製品] タブで、[コンピューティング] セクションに移動するか、検索バーで [Batch] を検索します。 [バッチ] タイルで、[見積もりに追加] を選択して、[見積もり] セクションまで下にスクロールします。
Azure Batch は無料のサービスであり、Azure Batch に関連付けられているコストは、ワークロードを実行する基になるリソースに対するコストであることに注意してください。 Azure Batch を見積もりに追加すると、料金計算ツールによって Cloud Services と仮想マシンの選択肢が自動的に作成されます。 Azure Cloud Services と Azure Virtual Machines (VM) の詳細については、各製品のドキュメントを参照してください。 Azure Batch のコストを見積もるために知る必要がある点は、仮想マシンが最も重要なリソースであるということです。
ドロップダウンからオプションを選びます。 さまざまなオプションを選択できます。 推定の合計に最も大きな影響を与えるオプションは、仮想マシンのオペレーティング システム、オペレーティング システムのライセンス (該当する場合)、[インスタンス] での VM サイズの選択、インスタンス数の選択、インスタンスの 1 か月間の実行時間です。
異なるオプションを選ぶと合計推定額が変化することに注意してください。 推定額は、上部の隅と、[Your Estimate] セクションの下部に表示されます。
仮想マシンの実行コストの詳細については、「仮想マシンのコストを管理するための計画に関するドキュメント」を参照してください。
Azure Batch の詳細な課金モデルを理解する
Azure Batch は、新しいリソースをデプロイする際にコストが発生する Azure インフラストラクチャ上で実行されます。 その他のインフラストラクチャ コストが追加で発生する可能性があることを理解しておくことが重要です。
Azure Batch での課金方法
Azure Batch は無料サービスです。 Batch 自体にはコストは発生しません。 ただし、Batch ワークロードの実行に使用される基のコンピューティング リソースとソフトウェア ライセンスには料金が発生する可能性があります。 コストは、プール内の仮想マシン、VM からのデータ転送、またはクラウドに格納されている任意の入力または出力データから発生します。
Azure Batch で発生する可能性があるコスト
Batch 自体は無料のサービスですが、ワークロードを実行する基のリソースの多くは無料ではありません。 これには以下が含まれます。
- Virtual Machines
- 仮想マシンに関連するコストの詳細については、「仮想マシンのコストを管理する計画」の「仮想マシンに対する課金 方法」セクションを参照してください。
- 仮想マシンの構成を使用して作成されたプール内の各 VM には、Azure マネージド ディスクを使用する関連 OS ディスクがあります。 Azure マネージド ディスクには追加のコストがかかり、他のディスク パフォーマンス層にも異なるコストがあります。
- ストレージ
- アプリケーション パッケージを使用してアプリケーションを Batch ノード 仮想マシンにデプロイすると、アプリケーション パッケージが使用する Azure Storage リソースに対して課金されます。 また、リソース ファイルやその他のログ データなどの入力または出力ファイルのストレージに対しても課金されます。
- 一般に、Batch に関連付けられているストレージ データのコストは、コンピューティング リソースのコストよりはるかに低くなります。
- 場合によってはロード バランサー
- ネットワーク リソース
- 仮想マシン構成プールの場合は、静的 IP アドレスを必要とする Standard ロード バランサーが使用されます。 Batch によって使用されるロード バランサーは、ユーザー サブスクリプション モードで構成されているアカウントでは表示されますが、Batch サービス モードのものでは表示されません。
- Standard ロード バランサーでは、Batch プール VM との間でやり取りされるすべてのデータに対して料金が発生します。 プール ノード (タスクまたはノード ファイルの取得など)、タスク アプリケーション パッケージ、リソースまたは出力ファイル、およびコンテナー イメージからデータを取得する一部の Batch API にも料金が発生します。
- 仮想ネットワーク
- お客様が使用するサービスによっては、Batch ソリューションに追加料金が発生する可能性があります。 関連コストが発生する可能性のある Batch で一般的に使用されるサービスには、次のものがあります。
- Application Insights
- Data Factory
- Azure Monitor
リソースの削除後にコストが発生する可能性がある
Azure Batch リソースを削除しても、次のリソースが引き続き存在する可能性があります。 これらを削除するまで、これらのコストは発生し続けます。
- 仮想マシン
- OS ディスクとローカル ディスク以外のデプロイされたディスク
- 既定では OS ディスクは VM と共に削除されますが、VM の作成時に、削除されないように設定できます
- 仮想ネットワーク
- 仮想 NIC とパブリック IP (該当する場合) は、仮想マシンと共に削除されるように設定できます
- 帯域幅
- Load Balancer
仮想ネットワークについては、サブスクリプションごと、およびリージョンごとに 1 つの仮想ネットワークが課金されます。 仮想ネットワークは、複数のリージョンまたはサブスクリプションにまたがることはできません。 vNet 設定内でプライベート エンドポイントを設定しても、料金が発生することがあります。
帯域幅は使用量に基づいて課金されます。転送データが多いほど、料金は高くなります。
Azure Batch での Azure 前払いの使用
Azure Batch は無料サービスですが、Azure 前払いクレジットを使用して、基になるリソースの料金を支払うことができます。 ただし、Azure 前払いのクレジットを使用して、サードパーティの製品やサービス (Azure Marketplace からのものを含む) の料金を支払うことはできません。
コスト分析を表示して予算を作成する
Azure Batch で Azure リソースを使用する場合、コストが発生します。 Azure リソース使用のユニット コストは、期間 (秒、分、時間、日数) やユニット使用量 (バイト、メガバイトなど) によって異なります。Azure のリソースの使用が開始されるとすぐにコストが発生し、コスト分析でコストを確認できます。 Microsoft Cost Management では、クラウドへの投資を最大化するために支出を計画、分析、削減することができます。 表示およびフィルター処理する Batch コストを表示およびフィルター処理したり、将来のコストを予測したりすることができます。また、支出制限を設定し、これらの制限に達したときにアラート発行できます。
Azure portal で、Batch プールまたは Batch アカウントの予算と支出アラートを作成できます。 予算とアラートは、予算オーバーのリスクを関係者に通知するのに役立ちますが、支出アラートの遅延が生じたり、予算をわずかに超過したりする危険性があります。
次のスクリーンショットは、サブスクリプションの [コスト分析] ビューの例を示しています。これは、フィルター処理により、すべての Batch アカウントに関連する累積コストのみを表示しています。 下部のグラフは、選択された期間の総コストを、使用されたサービス、場所、メーターで分類する方法を示しています。 これは例であり、お使いのサブスクリプションに関して発生する可能性のあるコストを反映するものではありませんが、最もコストがかかるのは Batch プール ノードに割り当てられた仮想マシンであるという点では一般的です。
[リソース] フィルターを指定すると、さらに詳細なコスト分析を得ることができます。 Batch アカウントの場合、これらの値は、Batch アカウント名とプール名です。 これを使用すると、特定のプール、複数のプール、または 1 つ以上のアカウントのコストを表示できます。
Batch プールのコスト分析を表示する
バッチ サービス プール割り当てモード
Batch サービスのプール割り当てモードで作成された Batch アカウントの場合:
- Azure portal で、Cost Management + Billingを入力するか、選択します。
- [課金スコープ] セクションでご使用のサブスクリプションを選択します。
- [コスト管理] で、 [コスト分析] を選択します。
- [フィルターの追加] を選択します 最初のドロップダウンで、 [リソース] を選択します。
- 2 番目のドロップダウンで、Batch プールを選択します。 プールを選択すると、そのプールのコスト分析が表示されます。 次のスクリーンショットは、データの例を示しています。
結果のコスト分析には、プールのコストと、そのコストの原因であるリソースが表示されます。 この例では、プールで使用されている VM が最もコストのかかるリソースです。
Note
この例のプールでは仮想マシンの構成を使用します。これはほとんどのプールで推奨されており、Virtual Machines の料金体系に基づいて課金されます。 Cloud Services 構成を使用するプールは、Cloud Services の料金体系に基づいて課金されます。
タグを Batch アカウントに関連付けることができ、これにより、タグを使用してコストをさらにフィルター処理できるようになります。 たとえば、タグを使用して、プロジェクト、ユーザー、またはグループの情報を Batch アカウントに関連付けることができます。 現在、タグを Batch プールに関連付けることはできません。
ユーザー サブスクリプション プール割り当てモード
ユーザー サブスクリプション プール割り当てモードで作成された Batch アカウントの場合:
- Azure portal で、Cost Management + Billingを入力するか、選択します。
- [課金スコープ] セクションでご使用のサブスクリプションを選択します。
- [コスト管理] で、 [コスト分析] を選択します。
- [フィルターの追加] を選択します 最初のドロップダウンで、 [タグ] を選択します。
- 2 番目のドロップダウンで、 [プール名] を選択します。
- 3 番目のドロップダウンで、Batch プールを選択します。 プールを選択すると、そのプールのコスト分析が表示されます。 次のスクリーンショットは、データの例を示しています。
ユーザー サブスクリプション Batch アカウントのすべてのプールのコスト データを表示する場合は、2 番目のドロップダウンで batchaccountname を選択し、3 番目のドロップダウンで Batch アカウントの名前を選択できることに注意してください。
Note
ユーザー サブスクリプション Batch アカウントで作成されたプールは、[リソース] フィルターの下に表示されませんが、サービス名で "仮想マシン" をフィルター処理すると、それらの使用量は引き続き表示されます。
Batch プールの予算を作成する
予算を作成し、60%、80%、100% など、予算のさまざまな割合に達したときに、コスト アラートを発行することができます。 予算では、1 つ以上のフィルターを指定できるため、Batch アカウントのコストを監視し、さまざまな粒度でアラートを発行できます。
- [コスト分析] ページで、 [Budget: none]\(予算: なし\) を選択します。
- [新しい予算の作成 >] を選択します。
- 表示されたウィンドウを使用して、お使いのプールに合わせて予算を構成します。 詳細については、Azure の予算を作成して管理する」を参照してください。
Azure Batch に関連するコストを最小限に抑える
シナリオによっては、可能な限りコストを削減することが必要になる場合があります。 ワークロードの効率を最大化し、潜在的なコストを削減するには、これらの 1 つ以上の戦略の使用を検討してください。
プール ノードの使用量を削減する
Batch の使用に関連する最大のコストは、通常、プール ノードに割り当てられた仮想マシンのコストです。 仮想マシン構成プールの場合、VM の OS ディスクに使用される関連のマネージド ディスクも、コストに大きく影響する可能性があります。
Batch アプリケーションを評価して、プール ノードがジョブ タスクによって十分に利用されているかどうか、またはプール ノードが予想時間より長くアイドル状態になっていないかどうかを確認します。 割り当てられるプール ノードの数を削減する、プール ノードのスケールアップ率を下げる、またはスケール ダウン率を上げることにより、使用率を向上できる場合があります。
カスタム監視に加えて、Batch メトリックは、割り当てられているがアイドル状態のノードを特定するのに役立ちます。 Azure portal の Batch 監視メトリックを使用して、表示するほとんどのプール ノードの状態のメトリックを選択できます。 たとえば、'アイドル ノード数' と '実行中ノード数' を表示して、プール ノードがどの程度使用されているかを示すことができます。
プール ノードがタスクを実行できることを確認する
プール用として一覧表示されている割り当て済みノードには通常コストがかかりますが、プール ノードが、タスクを実行できない状態 ('unusable' や 'starttaskfailed' など) になる可能性があります。 Batch API またはメトリックを使用して、VM のこのカテゴリを監視し、検出することができます。 次に、これらの状態の理由を特定し、これらの異常なノードを削減または排除するための是正措置を講じることができます。
適切なプール ノード VM サイズを使用する
適切な VM サイズが使用されていることを確認します。これにより、タスクを実行するときに VM が十分に利用され、必要な時間内にジョブ タスクを完了するために必要なパフォーマンスが提供されます。 プール ノード VM は、CPU 使用率が低いなど、状況によっては十分に活用されていない可能性があります。 低価格の VM サイズを選択することで、コストを節約できます。
VM の使用率を確認するには、タスクの実行時にノードにログインして、パフォーマンス データを表示するか、Application Insights などの監視機能を使用して、プール ノードからパフォーマンス データを取得できます。
プール スロットを使用してノード要件を低減させる
複数のタスク スロットをプールに指定できるため、対応する数のタスクを各ノードで並行して実行できます。 プール タスク スロットを使用すると、より大きな VM サイズを選択し、ノード上で複数のタスクを並行して実行し、ノードが十分に利用されるようにすることにより、プールで使用されるノードの数を減らすことができます。 ノードが十分に利用されていない場合は、スロットを使用して使用率を向上することができます。 たとえば、シングルスレッド タスク アプリケーションの場合、1 つのコアあたり 1 つのスロットを構成できます。 また、コア数より多いスロット数を構成することもできます。 たとえば、これは、アプリケーションで、外部サービスへの呼び出しが返されるのを長時間待機するのをブロックする場合に適用できます。
taskSchedulingPolicy
を pack
に設定すると、VM が可能な限り利用され、スケーリングが容易になり、タスクを実行していないノードを削除できるようになります。
Azure Spot Virtual Machines を使用する
Azure スポット VM を使用すると、Azure の余剰コンピューティング容量が利用されるので、Batch ワークロードのコストが削減されます。 プールでスポット VM を指定すると、Batch ではこの余剰を使用してワークロードが実行されます。 専用 VM の代わりにスポット VM を使用すると、コストを大幅に節約できます。 スポット VM は、割り当て可能な容量がないか、割り込まれる可能性があるため、必ずしもすべてのワークロードに適しているわけではないことに注意してください。
エフェメラル OS ディスクを使用する
プール ノードでは、既定により、コストが発生するマネージド ディスクが使用されます。 仮想マシンの構成プールの一部の VM サイズでは、エフェメラル OS ディスクを使用して、VM のキャッシュまたは一時的な SSD に OS ディスクを作成することで、マネージド ディスクに関連する余分なコストを回避できます。
仮想マシン インスタンスの予約を購入する
長期間 Batch を使用する予定であれば、ワークロードに Azure の予約を使用することで VM のコストを削減できます。 予約料金は、従量課金制の料金よりもかなり低価です。 予約なしで使用された仮想マシン インスタンスは、従量課金制で料金が発生します。 予約を購入すると、予約割引が適用されます。 VM インスタンスの 1 年または 3 年のプランにコミットすることにより、Batch プールを介して使用される VM などの VM 使用量に大幅な割引が適用されます。
予約割引は "使用しないと失われる" ことに注意してください。一致するリソースが 1 時間使用されていない場合、その時間の予約数量は失われます。 未使用の予約時間は繰り越すことができないため、使用しなければ失われます。 多くの場合、Batch ワークロードでは、負荷に応じて割り当てられた VM の数がスケーリングされ、負荷がない期間を含め、さまざまな負荷があります。 したがって、Batch VM が予約数量を下回ってスケールダウンされた場合、予約時間が失われるため、予約金額の決定には注意が必要です。
自動スケーリングを使用する
自動スケーリングでは、現在のジョブの要求に基づいて、Batch プール内の VM 数が動的にスケーリングされます。 自動スケーリングでは、ジョブの有効期間に基づいてプールがスケールされるので、実行するジョブがある場合にのみ VM がスケールアップされ、使用されます。 ジョブが完了したとき、またはジョブがないときは、コンピューティング リソースを節約するために VM は自動的にスケールダウンされます。 スケーリングを使用すると、必要なリソースのみを使用して Batch ソリューションの全体的なコストを削減できます。
次のステップ
- Microsoft Cost Management + Billing の詳細を確認します。
- Batch での Azure スポット VM の使用について学習します。