効率的に Batch リソースを一覧表示するクエリを作成するCreate queries to list Batch resources efficiently

ここでは、Batch .NET ライブラリを使ってジョブ、タスク、コンピューティング ノード、その他のリソースを照会するときにサービスから返されるデータの量を減らすことで、Azure Batch アプリケーションのパフォーマンスを強化する方法について説明しています。Here you'll learn how to increase your Azure Batch application's performance by reducing the amount of data that is returned by the service when you query jobs, tasks, compute nodes, and other resources with the Batch .NET library.

ほぼすべての Batch アプリケーションでは、Batch サービスに対して問い合わせを行う操作 (各種の監視など) が定期的に、それもかなりの頻度で必要となります。Nearly all Batch applications need to perform some type of monitoring or other operation that queries the Batch service, often at regular intervals. たとえば、ジョブのキューにタスクが残っているかどうかを調べるためには、ジョブ内のすべてのタスクに関するデータを取得する必要があります。For example, to determine whether there are any queued tasks remaining in a job, you must get data on every task in the job. プール内のノードの状態を調べるためには、そのプールに存在するすべてのノードのデータを取得する必要があります。To determine the status of nodes in your pool, you must get data on every node in the pool. この記事では、このようなクエリを最も効率的な方法で実行する方法について説明します。This article explains how to execute such queries in the most efficient way.

注意

Batch サービスは、一般的なシナリオ (ジョブ内のタスクのカウントと Batch プール内のコンピューティング ノードのカウント) 用の特別な API をサポートしています。The Batch service provides special API support for the common scenarios of counting tasks in a job, and counting compute nodes in Batch pool. これらに対してリスト クエリを使用する代わりに、Get Task Counts 操作と List Pool Node Counts 操作を呼び出すことができます。Instead of using a list query for these, you can call the Get Task Counts and List Pool Node Counts operations. これらの操作は、リスト クエリよりも効率的ですが、返される情報は限定されます。These operations are more efficient than a list query, but return more limited information. 状態ごとのタスクとコンピューティング ノードのカウントに関するページを参照してください。See Count tasks and compute nodes by state.

DetailLevel での条件指定Meet the DetailLevel

運用環境の Batch アプリケーションでは、ジョブ、タスク、コンピューティング ノードのようなエンティティは数千単位になることがあります。In a production Batch application, entities like jobs, tasks, and compute nodes can number in the thousands. これらのリソースに関する情報を要求する場合、クエリのたびに Batch サービスからアプリケーションに大量のデータが送信される可能性があります。When you request information on these resources, a potentially large amount of data must "cross the wire" from the Batch service to your application on each query. クエリによって返される情報の項目数と種類を制限することで、クエリの時間を短縮し、それによってアプリケーションのパフォーマンスを向上させることができます。By limiting the number of items and type of information that is returned by a query, you can increase the speed of your queries, and therefore the performance of your application.

次の Batch .NET API コード スニペットは、ジョブに関連付けられている "すべて" のタスクと、各タスクの "すべて" のプロパティを取得します。This Batch .NET API code snippet lists every task that is associated with a job, along with all of the properties of each task:

// Get a collection of all of the tasks and all of their properties for job-001
IPagedEnumerable<CloudTask> allTasks =
    batchClient.JobOperations.ListTasks("job-001");

ただしリスト クエリは、"詳細レベル" を適用した方が、はるかに効率的に実行できます。You can perform a much more efficient list query, however, by applying a "detail level" to your query. 具体的には、ODATADetailLevel オブジェクトを JobOperations.ListTasks メソッドに指定します。You do this by supplying an ODATADetailLevel object to the JobOperations.ListTasks method. 次のスニペットでは、完了したタスクの ID、コマンド ライン、コンピューティング ノード情報のプロパティだけが返されます。This snippet returns only the ID, command line, and compute node information properties of completed tasks:

// Configure an ODATADetailLevel specifying a subset of tasks and
// their properties to return
ODATADetailLevel detailLevel = new ODATADetailLevel();
detailLevel.FilterClause = "state eq 'completed'";
detailLevel.SelectClause = "id,commandLine,nodeInfo";

// Supply the ODATADetailLevel to the ListTasks method
IPagedEnumerable<CloudTask> completedTasks =
    batchClient.JobOperations.ListTasks("job-001", detailLevel);

この例のシナリオでジョブに何千ものタスクがある場合、通常は 2 つ目のクエリの結果は最初のものより速く返されます。In this example scenario, if there are thousands of tasks in the job, the results from the second query will typically be returned much quicker than the first. Batch .NET API を使って項目をリストするときの ODATADetailLevel の使い方については、 以下で詳しく説明しています。More information about using ODATADetailLevel when you list items with the Batch .NET API is included below.

重要

アプリケーションの最大限の効率とパフォーマンスを確保するために、.NET API リスト呼び出しには " 常に " ODATADetailLevel オブジェクトを指定することを強くお勧めします。We highly recommend that you always supply an ODATADetailLevel object to your .NET API list calls to ensure maximum efficiency and performance of your application. 詳細レベルを指定することによって、Batch サービスの応答時間の短縮、ネットワーク使用率の改善、クライアント アプリケーションによるメモリ使用量の最小化といった効果が期待できます。By specifying a detail level, you can help to lower Batch service response times, improve network utilization, and minimize memory usage by client applications.

filter、select、expandFilter, select, and expand

Batch .NET API と Batch REST API には、リストとして返される項目の数と、クエリごとに返される情報の量を減らす機能が用意されています。The Batch .NET and Batch REST APIs provide the ability to reduce both the number of items that are returned in a list, as well as the amount of information that is returned for each. これを行うには、リスト クエリの実行時に filterselectexpand 文字列を指定します。You do so by specifying filter, select, and expand strings when performing list queries.

filterFilter

filter 文字列は、返される項目の数を減らす式です。The filter string is an expression that reduces the number of items that are returned. たとえば、あるジョブの実行中のタスクのみ、またはタスクの実行準備が完了しているコンピューティング ノードのみをリストします。For example, list only the running tasks for a job, or list only compute nodes that are ready to run tasks.

  • filter 文字列は、プロパティ名、演算子、値で構成される 1 つ以上の式から成ります。The filter string consists of one or more expressions, with an expression that consists of a property name, operator, and value. 指定できるプロパティは、クエリする各エンティティ型に固有です。各エンティティでサポートされる演算子も同様です。The properties that can be specified are specific to each entity type that you query, as are the operators that are supported for each property.
  • 論理演算子の andor を使用して、複数の式を結合できます。Multiple expressions can be combined by using the logical operators and and or.
  • たとえば、実行中の "レンダリング" タスクのみをリストする場合の filter 文字列は (state eq 'running') and startswith(id, 'renderTask')となります。This example filter string lists only the running "render" tasks: (state eq 'running') and startswith(id, 'renderTask').

electSelect

select 文字列は、各項目に対して返されるプロパティの値を制限します。The select string limits the property values that are returned for each item. プロパティ名の一覧を指定すると、指定されたプロパティ値のみがクエリ結果で返されます。You specify a list of property names, and only those property values are returned for the items in the query results.

  • select 文字列は、プロパティ名のコンマ区切りリストで構成されます。The select string consists of a comma-separated list of property names. クエリするエンティティ型のすべてのプロパティを指定できます。You can specify any of the properties for the entity type you are querying.
  • たとえば、各タスクで 3 つのプロパティのみを返すように指定する場合の select 文字列は id, state, stateTransitionTimeになります。This example select string specifies that only three property values should be returned for each task: id, state, stateTransitionTime.

expandExpand

expand 文字列は、特定の情報を取得するために必要な API 呼び出しの数を減らします。The expand string reduces the number of API calls that are required to obtain certain information. expand 文字列を使用すると、1 つの API 呼び出しで各項目の情報をより多く取得できます。When you use an expand string, more information about each item can be obtained with a single API call. 最初にエンティティの一覧を取得し、次に一覧の各項目の情報を要求する代わりに、expand 文字列を使用して、1 つの API 呼び出しで同じ情報を取得します。Rather than first obtaining the list of entities, then requesting information for each item in the list, you use an expand string to obtain the same information in a single API call. API 呼び出しの少なさは、パフォーマンスの向上を意味します。Less API calls means better performance.

  • select 文字列と同様に、expand 文字列はリスト クエリ結果に特定のデータを含めるかどうかを制御します。Similar to the select string, the expand string controls whether certain data is included in list query results.
  • expand 文字列がサポートされるのは、ジョブ、ジョブのスケジュール、タスク、およびプールをリストする場合のみです。The expand string is only supported when it is used in listing jobs, job schedules, tasks, and pools. 現在サポートされているのは統計情報のみです。Currently, it only supports statistics information.
  • すべてのプロパティが必要なときに select 文字列が指定されていない場合は、expand 文字列を使用して統計情報を取得する 必要がありますWhen all properties are required and no select string is specified, the expand string must be used to get statistics information. select 文字列を使用してプロパティのサブセットを取得する場合は、 stats を select 文字列に指定でき、expand 文字列を指定する必要はありません。If a select string is used to obtain a subset of properties, then stats can be specified in the select string, and the expand string does not need to be specified.
  • たとえば、一覧の各項目の統計情報が返されるように指定する場合、expand 文字列は statsのようになります。This example expand string specifies that statistics information should be returned for each item in the list: stats.

注意

3 種類のクエリ文字列 (filter、select、expand) のいずれかを組み立てる際に、プロパティ名および大文字と小文字が REST API 要素と一致することを確認する必要があります。When constructing any of the three query string types (filter, select, and expand), you must ensure that the property names and case match that of their REST API element counterparts. たとえば、.NET CloudTask クラスを使用する場合は、.NET プロパティが CloudTask.State であっても、State の代わりに state を指定する必要があります。For example, when working with the .NET CloudTask class, you must specify state instead of State, even though the .NET property is CloudTask.State. .NET と REST API 間のプロパティ マッピングについては、以下の表を参照してください。See the tables below for property mappings between the .NET and REST APIs.

filter、select、expand 文字列の規則Rules for filter, select, and expand strings

  • filter、select、expand 文字列に指定されるプロパティ名は、Batch REST API に表示される場合のプロパティ名に相当します。これは、Batch .NET や他のいずれかの Batch SDK を使用する場合も同様です。Properties names in filter, select, and expand strings should appear as they do in the Batch REST API--even when you use Batch .NET or one of the other Batch SDKs.

  • すべてのプロパティ名では大文字と小文字が区別されますが、プロパティの値は大文字と小文字を区別しません。All property names are case-sensitive, but property values are case insensitive.

  • 日付/時刻文字列は、次の 2 つの形式のいずれかを使用でき、前に DateTimeを付ける必要があります。Date/time strings can be one of two formats, and must be preceded with DateTime.

    • W3C-DTF 形式の例: creationTime gt DateTime'2011-05-08T08:49:37Z'W3C-DTF format example: creationTime gt DateTime'2011-05-08T08:49:37Z'
    • RFC 1123 形式の例: creationTime gt DateTime'Sun, 08 May 2011 08:49:37 GMT'RFC 1123 format example: creationTime gt DateTime'Sun, 08 May 2011 08:49:37 GMT'
  • ブール文字列は、truefalse のいずれかです。Boolean strings are either true or false.

  • 無効なプロパティまたは演算子を指定すると、 400 (Bad Request) エラーが発生します。If an invalid property or operator is specified, a 400 (Bad Request) error will result.

Batch .NET の効率的クエリEfficient querying in Batch .NET

Batch .NET API 内で、ODATADetailLevel クラスを使用して、リスト操作に対して filter、select、expand 文字列を指定します。Within the Batch .NET API, the ODATADetailLevel class is used for supplying filter, select, and expand strings to list operations. ODataDetailLevel クラスには、3 つのパブリック文字列プロパティがあり、それらをコンストラクターで指定するか、オブジェクトに直接設定できます。The ODataDetailLevel class has three public string properties that can be specified in the constructor, or set directly on the object. そのうえで、ListPoolsListJobsListTasks などの各種リスト操作のパラメーターとして、ODataDetailLevel オブジェクトを渡します。You then pass the ODataDetailLevel object as a parameter to the various list operations such as ListPools, ListJobs, and ListTasks.

次のコード スニペットでは Batch .NET API を使用して、特定のプール セットの統計値を Batch サービスに効率的に問い合わせます。The following code snippet uses the Batch .NET API to efficiently query the Batch service for the statistics of a specific set of pools. このシナリオでは、Batch ユーザーにはテスト プールと運用プールの両方が与えられています。In this scenario, the Batch user has both test and production pools. テスト プールの ID 接頭辞は "test" であり、運用プールの ID 接頭辞は "prod" です。The test pool IDs are prefixed with "test", and the production pool IDs are prefixed with "prod". このスニペットで、 myBatchClientBatchClient クラスの適切に初期化されたインスタンスです。In the snippet, myBatchClient is a properly initialized instance of the BatchClient class.

// First we need an ODATADetailLevel instance on which to set the filter, select,
// and expand clause strings
ODATADetailLevel detailLevel = new ODATADetailLevel();

// We want to pull only the "test" pools, so we limit the number of items returned
// by using a FilterClause and specifying that the pool IDs must start with "test"
detailLevel.FilterClause = "startswith(id, 'test')";

// To further limit the data that crosses the wire, configure the SelectClause to
// limit the properties that are returned on each CloudPool object to only
// CloudPool.Id and CloudPool.Statistics
detailLevel.SelectClause = "id, stats";

// Specify the ExpandClause so that the .NET API pulls the statistics for the
// CloudPools in a single underlying REST API call. Note that we use the pool's
// REST API element name "stats" here as opposed to "Statistics" as it appears in
// the .NET API (CloudPool.Statistics)
detailLevel.ExpandClause = "stats";

// Now get our collection of pools, minimizing the amount of data that is returned
// by specifying the detail level that we configured above
List<CloudPool> testPools =
    await myBatchClient.PoolOperations.ListPools(detailLevel).ToListAsync();

ヒント

Select 句と Expand 句で構成される ODATADetailLevel のインスタンスも、返されるデータの量を制限するために、PoolOperations.GetPool などの適切な Get メソッドに渡すことができます。An instance of ODATADetailLevel that is configured with Select and Expand clauses can also be passed to appropriate Get methods, such as PoolOperations.GetPool, to limit the amount of data that is returned.

Batch REST から NET API へのマッピングBatch REST to .NET API mappings

filter、select、および expand 文字列のプロパティ名は、REST API の対応部分の名前および大文字と小文字の両方を反映している 必要がありますProperty names in filter, select, and expand strings must reflect their REST API counterparts, both in name and case. 次の表では、.NET および REST API の対応部分の間のマッピングを示します。The tables below provide mappings between the .NET and REST API counterparts.

filter 文字列のマッピングMappings for filter strings

  • .NET リスト メソッド:この列の各 .NET API メソッドは、ODATADetailLevel オブジェクトをパラメーターとして受け付けます。.NET list methods: Each of the .NET API methods in this column accepts an ODATADetailLevel object as a parameter.
  • REST リスト要求:この列のリンク先となる各 REST API ページには、filter 文字列で許可されるプロパティと操作を指定する表が含まれています。REST list requests: Each REST API page linked to in this column contains a table that specifies the properties and operations that are allowed in filter strings. ODATADetailLevel.FilterClause 文字列を組み立てるときに、これらのプロパティ名と操作を使用します。You will use these property names and operations when you construct an ODATADetailLevel.FilterClause string.
.NET リスト メソッド.NET list methods REST リスト要求REST list requests
CertificateOperations.ListCertificatesCertificateOperations.ListCertificates アカウントの証明書を一覧表示するList the certificates in an account
CloudTask.ListNodeFilesCloudTask.ListNodeFiles タスクに関連付けられているファイルを一覧表示するList the files associated with a task
JobOperations.ListJobPreparationAndReleaseTaskStatusJobOperations.ListJobPreparationAndReleaseTaskStatus ジョブのジョブ準備タスクとジョブ リリース タスクの状態を一覧表示するList the status of the job preparation and job release tasks for a job
JobOperations.ListJobsJobOperations.ListJobs アカウントのジョブを一覧表示するList the jobs in an account
JobOperations.ListNodeFilesJobOperations.ListNodeFiles ノードのファイルを一覧表示するList the files on a node
JobOperations.ListTasksJobOperations.ListTasks ジョブに関連付けられているタスクを一覧表示するList the tasks associated with a job
JobScheduleOperations.ListJobSchedulesJobScheduleOperations.ListJobSchedules アカウントのジョブ スケジュールを一覧表示するList the job schedules in an account
JobScheduleOperations.ListJobsJobScheduleOperations.ListJobs ジョブ スケジュールに関連付けられているジョブを一覧表示するList the jobs associated with a job schedule
PoolOperations.ListComputeNodesPoolOperations.ListComputeNodes プールのコンピューティング ノードを一覧表示するList the compute nodes in a pool
PoolOperations.ListPoolsPoolOperations.ListPools アカウントのプールを一覧表示するList the pools in an account

select 文字列のマッピングMappings for select strings

  • Batch .NET の型:Batch .NET API の型です。Batch .NET types: Batch .NET API types.
  • REST API のエンティティ:この列内の各ページには、その型の REST API プロパティ名を列挙した表が 1 つ以上含まれています。REST API entities: Each page in this column contains one or more tables that list the REST API property names for the type. select 文字列を構築する際に、これらのプロパティ名が使用されます。These property names are used when you construct select strings. ODATADetailLevel.SelectClause 文字列を構築するときには、これらの同じプロパティ名を使用します。You will use these same property names when you construct an ODATADetailLevel.SelectClause string.
Batch .NET の型Batch .NET types REST API のエンティティREST API entities
証明書Certificate 証明書に関する情報を取得するGet information about a certificate
CloudJobCloudJob ジョブに関する情報を取得するGet information about a job
CloudJobScheduleCloudJobSchedule ジョブ スケジュールに関する情報を取得するGet information about a job schedule
ComputeNodeComputeNode ノードに関する情報を取得するGet information about a node
CloudPoolCloudPool プールに関する情報を取得するGet information about a pool
CloudTaskCloudTask タスクに関する情報を取得するGet information about a task

例: filter 文字列の構築Example: construct a filter string

ODATADetailLevel.FilterClause の filter 文字列を構築する場合は、「filter 文字列のマッピング」に示した表を参照して、実行するリスト操作に対応する REST API のドキュメント ページを見つけます。When you construct a filter string for ODATADetailLevel.FilterClause, consult the table above under "Mappings for filter strings" to find the REST API documentation page that corresponds to the list operation that you wish to perform. そのページの最初の複数行の表に、フィルター可能なプロパティとサポートされている演算子が表示されます。You will find the filterable properties and their supported operators in the first multirow table on that page. たとえば、終了コードがゼロ以外のタスクをすべて取得する場合は、ジョブに関連付けられているタスクの一覧表示に関するページのこの行で、適用可能なプロパティ文字列と許可される演算子を指定します。If you wish to retrieve all tasks whose exit code was nonzero, for example, this row on List the tasks associated with a job specifies the applicable property string and allowable operators:

プロパティProperty 許可される操作Operations allowed TypeType
executionInfo/exitCode eq, ge, gt, le , lt Int

したがって、終了コードがゼロ以外のタスクをすべて一覧表示するための filter 文字列は次のようになります。Thus, the filter string for listing all tasks with a nonzero exit code would be:

(executionInfo/exitCode lt 0) or (executionInfo/exitCode gt 0)

例: select 文字列の構築Example: construct a select string

ODATADetailLevel.SelectClause を構築する場合は、「select 文字列のマッピング」に示した表を参照して、一覧表示するエンティティのタイプに対応する REST API ページに移動します。To construct ODATADetailLevel.SelectClause, consult the table above under "Mappings for select strings" and navigate to the REST API page that corresponds to the type of entity that you are listing. そのページの最初の複数行の表に、選択可能なプロパティとサポートされている演算子が表示されます。You will find the selectable properties and their supported operators in the first multirow table on that page. たとえば、リストの各タスクの ID とコマンド ラインのみを取得する場合は、タスクに関する情報の取得に関するページの該当する表でこれらの行を見つけます。If you wish to retrieve only the ID and command line for each task in a list, for example, you will find these rows in the applicable table on Get information about a task:

プロパティProperty TypeType メモNotes
id String The ID of the task.
commandLine String The command line of the task.

リストされている各タスクの ID とコマンド ラインのみを含めるための select 文字列は次のようになります。The select string for including only the ID and command line with each listed task would then be:

id, commandLine

コード サンプルCode samples

効率的なリスト クエリ コードのサンプルEfficient list queries code sample

GitHub の EfficientListQueries サンプル プロジェクトで、効率的なリスト クエリがアプリケーションのパフォーマンスに及ぼす影響を確認します。Check out the EfficientListQueries sample project on GitHub to see how efficient list querying can affect performance in an application. この C# コンソール アプリケーションは、大量のタスクを作成してジョブに追加します。This C# console application creates and adds a large number of tasks to a job. その後、JobOperations.ListTasks メソッドを何度か呼び出します。その際に渡す ODATADetailLevel オブジェクトの各種プロパティの値を設定で変更することによって、取得するデータ量を変化させています。Then, it makes multiple calls to the JobOperations.ListTasks method and passes ODATADetailLevel objects that are configured with different property values to vary the amount of data to be returned. 次のような出力が表示されます。It produces output similar to the following:

Adding 5000 tasks to job jobEffQuery...
5000 tasks added in 00:00:47.3467587, hit ENTER to query tasks...

4943 tasks retrieved in 00:00:04.3408081 (ExpandClause:  | FilterClause: state eq 'active' | SelectClause: id,state)
0 tasks retrieved in 00:00:00.2662920 (ExpandClause:  | FilterClause: state eq 'running' | SelectClause: id,state)
59 tasks retrieved in 00:00:00.3337760 (ExpandClause:  | FilterClause: state eq 'completed' | SelectClause: id,state)
5000 tasks retrieved in 00:00:04.1429881 (ExpandClause:  | FilterClause:  | SelectClause: id,state)
5000 tasks retrieved in 00:00:15.1016127 (ExpandClause:  | FilterClause:  | SelectClause: id,state,environmentSettings)
5000 tasks retrieved in 00:00:17.0548145 (ExpandClause: stats | FilterClause:  | SelectClause: )

Sample complete, hit ENTER to continue...

経過時間を見るとわかるように、プロパティと返される項目の数を制限することで、クエリの応答時間を大幅に短縮できます。As shown in the elapsed times, you can greatly lower query response times by limiting the properties and the number of items that are returned. このサンプル プロジェクトと他のサンプル プロジェクトは、GitHub の azure-batch-samples リポジトリにあります。You can find this and other sample projects in the azure-batch-samples repository on GitHub.

BatchMetrics ライブラリとコード サンプルBatchMetrics library and code sample

前出の EfficientListQueries コード サンプルに加えて、azure-batch-samples GitHub リポジトリには BatchMetrics というプロジェクトが存在します。In addition to the EfficientListQueries code sample above, you can find the BatchMetrics project in the azure-batch-samples GitHub repository. BatchMetrics サンプル プロジェクトには、Batch API を使って Azure Batch ジョブの進行状況を効率的に監視する方法が紹介されています。The BatchMetrics sample project demonstrates how to efficiently monitor Azure Batch job progress using the Batch API.

BatchMetrics サンプルには、独自のプロジェクトに組み込むことのできる .NET クラス ライブラリ プロジェクトのほか、ライブラリの使い方を実践的に紹介する簡単なコマンドライン プログラムが含まれています。The BatchMetrics sample includes a .NET class library project which you can incorporate into your own projects, and a simple command-line program to exercise and demonstrate the use of the library.

プロジェクト内のサンプル アプリケーションでは、次の操作が示されています。The sample application within the project demonstrates the following operations:

  1. 必要なプロパティだけをダウンロードするために特定の属性を選択します。Selecting specific attributes in order to download only the properties you need
  2. 前回のクエリ以降に行われた変更のみをダウンロードするために状態遷移の時刻を条件としてフィルタリングします。Filtering on state transition times in order to download only changes since the last query

たとえば BatchMetrics ライブラリには、以下のメソッドが存在します。For example, the following method appears in the BatchMetrics library. このメソッドは、照会したエンティティの id プロパティと state プロパティのみを取得するよう指定する ODATADetailLevel を返します。It returns an ODATADetailLevel that specifies that only the id and state properties should be obtained for the entities that are queried. この ODATADetailLevel には、パラメーターに指定された DateTime 以降に状態が変化したエンティティのみを取得するための指定も含まれています。It also specifies that only entities whose state has changed since the specified DateTime parameter should be returned.

internal static ODATADetailLevel OnlyChangedAfter(DateTime time)
{
    return new ODATADetailLevel(
        selectClause: "id, state",
        filterClause: string.Format("stateTransitionTime gt DateTime'{0:o}'", time)
    );
}

次の手順Next steps

並列ノード タスクParallel node tasks

同時実行ノード タスクで Azure Batch コンピューティング リソースの使用率を最大にする 」があります。Maximize Azure Batch compute resource usage with concurrent node tasks is another article related to Batch application performance. ワークロードの種類によっては、並列タスクの実行環境となるコンピューティング ノードの規模を大きくしてノード数を減らすことによってパフォーマンス上のメリットが得られる場合があります。Some types of workloads can benefit from executing parallel tasks on larger--but fewer--compute nodes. 同記事の「 サンプル シナリオ 」で、そのようなシナリオについて詳しく説明されています。Check out the example scenario in the article for details on such a scenario.