スレッド プール プロパティThread Pool Properties

適用対象: はいSQL Server Analysis ServicesはいAzure Analysis ServicesAPPLIES TO: yesSQL Server Analysis Services yesAzure Analysis Services

Analysis ServicesAnalysis Services は、多くの操作でマルチスレッドを使用し、複数のジョブを並列実行することによって、サーバーの全体的なパフォーマンスを向上させます。uses multi-threading for many operations, improving overall server performance by running multiple jobs in parallel. スレッドをより効率的に管理するために、 Analysis ServicesAnalysis Services はスレッド プールを使用してスレッドの事前割り当てを実行し、次のジョブがスレッドを容易に利用できるようにします。To manage threads more efficiently, Analysis ServicesAnalysis Services uses thread pools to preallocate threads and facilitate thread availability for the next job.

Analysis ServicesAnalysis Services の各インスタンスは、スレッド プールの独自セットを維持します。Each instance of Analysis ServicesAnalysis Services maintains its own set of thread pools. テーブル インスタンスと多次元インスタンスでは、スレッド プールの使用方法が異なります。There are differences in how tabular and multidimensional instances use thread pools. たとえば、多次元インスタンスのみが IOProcess スレッド プールを使用します。For example, only multidimensional instances use the IOProcess thread pool. そのため、 PerNumaNodeテーブル インスタンスにとって意味は、この記事で説明されているプロパティ。As such, the PerNumaNode property, described in this article, is not meaningful for Tabular instances. 後の プロパティ リファレンス セクションでは、各プロパティについてモードの要件が示されています。In the Property Reference section below, mode requirements are called out for each property.

注意

NUMA システムに対する表形式の配置は、このトピックの範囲外です。Tabular deployment on NUMA systems is out of scope for this topic. NUMA システムに対して表形式のソリューションを正常に配置できますが、表形式のモデルが採用しているインメモリ データベース テクノロジのパフォーマンス特性による利点は、高度にスケールアップされたアーキテクチャでは制約を受ける可能性があります。Although tabular solutions can be successfully deployed on NUMA systems, the performance characteristics of the in-memory database technology used by tabular models may show limited benefits on a highly scaled up architectures. 詳細については、次を参照してください。 Analysis Services ケース スタディ。大規模な商用ソリューションにおける表形式モデルを使用してハードウェア サイズ決定の表形式ソリューションします。For more information, see Analysis Services Case Study: Using Tabular Models in Large-scale Commercial Solutions and Hardware Sizing a Tabular Solution.

Analysis Services におけるスレッド管理Thread Management in Analysis Services

Analysis ServicesAnalysis Services はマルチスレッドを使用して、並列実行されるタスクの数を増やすことにより、使用可能な CPU リソースを活用します。uses multi-threading to take advantage of the available CPU resources by increasing the number of tasks executing in parallel. ストレージ エンジンはマルチスレッド化されています。The storage engine is multi-threaded. ストレージ エンジン内で実行されるマルチ スレッドのジョブには、オブジェクトの並列処理、ストレージ エンジンにパブリッシュされた独立したクエリの処理、クエリによって要求されたデータ値を返す処理などがあります。Examples of multi-threaded jobs that execute within the storage engine include processing objects in parallel or handling discrete queries that have been pushed to the storage engine, or returning data values requested by a query. 数式エンジンは、実行する計算に順次処理という性質があるため、シングル スレッド化されています。The formula engine, due to the serial nature of the calculations it evaluates, is single threaded. 各クエリは主にシングル スレッド内で実行され、データを要求し、多くの場合はストレージ エンジンから返されるデータを待ちます。Each query executes primarily on a single thread, requesting and often waiting for data returned by the storage engine. クエリ スレッドは実行に長い時間を要する傾向があり、クエリ全体が完了した後にのみ解放されます。Query threads have longer executions, and are released only after the entire query is completed.

SQL Server 2012 (11.x)SQL Server 2012 (11.x) 以降のバージョンの既定では、上位エディションの Windows および SQL Server で実行されている Analysis ServicesAnalysis Services は、640 個を最大として、システム上で使用可能なすべての論理プロセッサを使用します。By default, on versions SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, Analysis ServicesAnalysis Services will use all available logical processors, up to 640 on systems running higher editions of Windows and SQL Server. 起動時に、msmdsrv.exe プロセスは 1 つの特定プロセッサ グループに割り当てられますが、時間の経過に伴って、スレッドは任意のプロセッサ グループ内にある任意の論理プロセッサに対してスケジュールされる可能性があります。Upon start up, the msmdsrv.exe process will be assigned to a specific processor group, but over time threads can be scheduled on any logical processor, in any processor group.

多数のプロセッサを使用した場合の副次的な影響の 1 つとして、クエリと処理の負荷が複数のプロセッサに分散され、共有データ構造に関する競合が増加するために、パフォーマンスの低下が発生する可能性があることが挙げられます。One side-effect of using a large number of processors is that you can sometimes experience performance degradation as query and processing loads are spread out across a large number of processors and contention for shared data structures increase. この現象が発生する可能性があるのは、特に NUMA アーキテクチャを使用するハイエンド システムですが、データを集中的に使用する複数のアプリケーションを同じハードウェア上で実行する非 NUMA システムにも当てはまります。This can occur particularly on high-end systems that use NUMA architecture, but also on non-NUMA systems running multiple data intensive applications on the same hardware.

この問題を緩和するために、特定の Analysis ServicesAnalysis Services 操作の種類と、特定の論理プロセッサ セットの間で関係を設定することができます。To alleviate this problem, you can set affinity between types of Analysis ServicesAnalysis Services operations and a specific set of logical processors. GroupAffinity プロパティを使用すると、 Analysis ServicesAnalysis Servicesの管理対象であるスレッド プールの種類ごとに、どのシステム リソースを使用するかを指定するカスタム関係マスクを作成できます。The GroupAffinity property lets you create custom affinity masks that specify which system resource to use for each of the thread pool types managed by Analysis ServicesAnalysis Services.

表形式インスタンスで GroupAffinity を設定する場合は、SQL Server 2016 Cumulative Update 1 (CU1) 以降をお勧めします。We recommend SQL Server 2016 Cumulative Update 1 (CU1) or later for setting GroupAffinity in tabular instances.

GroupAffinity は、 Analysis ServicesAnalysis Services のさまざまなワークロードに使用されるどのスレッド プールでも設定できるプロパティです。GroupAffinity is a property that can be set on any of the thread pools used for various Analysis ServicesAnalysis Services workloads:

  • ThreadPool \ Parsing \ Short は、短い要求用の解析プールです。ThreadPool \ Parsing \ Short is a parsing pool for short requests. 単一のネットワーク メッセージ内に収まる要求は、短い要求と見なされます。Requests that fit within a single network message are considered short.

  • ThreadPool \ Parsing \ Long は、単一のネットワーク メッセージ内に収まらない他のすべての要求用の解析プールです。ThreadPool \ Parsing \ Long is a parsing pool for all other requests that do not fit within a single network message.

    注意

    いずれかの解析プールに属するスレッドは、クエリの実行に使用できます。A thread from either parsing pool can be used to execute a query. 高速検出要求やキャンセル要求など、短時間で実行されるクエリは、クエリ スレッド プールにキュー登録される代わりに、直ちに実行されます。Queries that execute quickly, such as a fast Discover or Cancel request, are sometimes executed immediately rather than queued to the Query thread pool.

  • ThreadPool \ Query は、解析スレッド プールの処理対象にならないすべての要求を実行するスレッド プールです。ThreadPool \ Query is the thread pool that executes all requests that are not handled by the parsing thread pool. このスレッド プールに属するスレッドは、検出、MDX、DAX、DMX、DDL コマンドなど、あらゆる種類の操作を実行します。Threads in this thread pool will execute all types of operations, such as Discovers, MDX, DAX, DMX, and DDL commands. AA

  • ThreadPool \ IOProcess は、多次元エンジン内のストレージ エンジン クエリに関連付けられた IO ジョブで使用されます。ThreadPool \ IOProcess is used for IO jobs associated with storage engine queries in the multidimensional engine. これらのスレッドによって実行される作業は、他のスレッドに依存しないことが予期されます。The work done by these threads is expected to not have dependencies on other threads. これらのスレッドは通常、パーティションの単一セグメントをスキャンや、セグメント データに対するフィルター処理と集計を実行します。These threads will typically be scanning a single segment of a partition and performing filtering and aggregation on the segment data. IOProcess スレッドは、特に NUMA ハードウェア構成の影響を受けます。IOProcess threads are particularly sensitive to NUMA hardware configurations. したがって、このスレッド プールには、必要に応じてパフォーマンスをチューニングする目的で使用できる PerNumaNode 構成プロパティがあります。As such, this thread pool has the PerNumaNode configuration property which can be used to tune the performance if needed.

  • ThreadPool \ Process は、集計、インデックス作成、コミット操作を含む、継続時間の長いストレージ エンジン ジョブを対象にしています。ThreadPool \ Process is for longer duration storage engine jobs, including aggregations, indexing, and commit operations. ROLAP ストレージ モードも、Processing スレッド プールに属するスレッドを使用します。ROLAP storage mode also uses threads from the Processing thread pool.

  • VertiPaq \ ThreadPool は、表形式モデルでテーブル スキャンを実行するためのスレッド プールです。VertiPaq \ ThreadPool is the thread pool for executing table scans in a tabular model.

要求を処理する際に、作業の実行に必要とされる場合は、 Analysis ServicesAnalysis Services はスレッド プールの上限を超えて追加のスレッドを要求することもできます。To service requests, Analysis ServicesAnalysis Services may exceed the maximum thread pool limit, requesting additional threads if they are necessary to perform the work. ただし、スレッドが自らのタスクの実行を完了した時点で、現在のスレッド数が上限を超えている場合は、そのスレッドはスレッド プールに返される代わりに、単純に終了されます。However, when a thread finishes executing its task, if the current count of threads is greater than the maximum limit, the thread is simply ended, rather than returned to the thread pool.

注意

特定のデッドロック状態が発生する場合のみ、スレッド プールの最大数を上回ると、保護が開始されます。Exceeding the maximum thread pool count is a protection invoked only when certain deadlock conditions arise. 最大値を超えるランナウェイ スレッド作成を防止するために、最大値に達した後は (短い遅延の後) スレッドが徐々に作成されます。To prevent runaway thread creation beyond the maximum, threads are created gradually (after a short delay) after the maximum limit has been reached. スレッドの最大数を超えると、タスクの実行速度が低下する可能性があります。Exceeding maximum thread count can lead to a slowdown in task execution. パフォーマンス カウンターによって示されるスレッド数が常にスレッド プールの最大サイズを上回っている場合は、システムによって要求されるコンカレンシーの度合いに比べてスレッド プールのサイズが小さすぎることを示すインジケーターと見なすこともできます。If the performance counters show the thread counts are regularly beyond the thread pool maximum size, you might consider that as an indicator that thread pool sizes are too small for the degree of concurrency being requested from the system.

既定では、スレッド プールのサイズは Analysis ServicesAnalysis Servicesによって決まり、コアの数に基づく値になります。By default, thread pool size is determined by Analysis ServicesAnalysis Services, and is based on the number of cores. サーバーの起動後に msmdsrv.log ファイルを参照すると、選択済みの既定値を確認できます。You can observe the selected default values by examining the msmdsrv.log file after server startup. パフォーマンス チューニングの練習として、クエリまたは処理のパフォーマンスを向上させる目的で、スレッド プールのサイズを大きくする方針を選択することもできます。As a performance tuning exercise, you might choose to increase the size of the thread pool, as well as other properties, to improve query or processing performance.

スレッド プール プロパティに関するリファレンスThread Pool Property Reference

ここでは、 Analysis ServicesAnalysis Services の各インスタンスの msmdsrv.ini ファイル内で検索するスレッド プール プロパティについて説明します。This section describes the thread pool properties found in the msmdsrv.ini file of each Analysis ServicesAnalysis Services instance. これらのプロパティのサブセットは、SQL Server Management Studio 内でも表示されます。A subset of these properties also appears in SQL Server Management Studio.

プロパティは、アルファベット順に示しています。Properties are listed in alphabetical order.

名前Name Type 説明Description 既定値Default ガイダンスGuidance
IOProcess \ ConcurrencyIOProcess \ Concurrency doubledouble 一度にキューに登録できるスレッド数のターゲットを設定するアルゴリズムを決定する、倍精度浮動小数点値です。A double-precision floating point value that determines the algorithm for setting a target on the number of threads that can be queued at one time. 2.02.0 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

Concurrency はスレッド プールを初期化するために使用され、それらのプールは Windows 内の IO 完了ポートを使用して実装されます。Concurrency is used to initialize thread pools, which are implemented using IO Completion Ports in Windows. 詳しくは、「 I/O 完了ポート 」をご覧ください。See I/O Completion Ports for details.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ GroupAffinityIOProcess \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。IOProcess スレッド プールのスレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of threads in the IOProcess thread pool to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ MaxThreadsIOProcess \ MaxThreads ssNoversionint スレッド プールに含めるスレッドの最大数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the maximum number of threads to include in the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、サーバーはこの値を 64、または論理プロセッサ数の 10 倍のうち、どちらか大きい方に設定します。By default, the server either sets this value to 64, or to 10 times the number of logical processors, whichever is higher. たとえば、ハイパースレッディングが有効な 4 コアのシステムでは、スレッド プールの最大値は 80 スレッドです。For example, on a 4-core system with hyperthreading, the thread pool maximum is 80 threads.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、MaxThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set MaxThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ MinThreadsIOProcess \ MinThreads ssNoversionint スレッド プールに事前に割り当てるスレッドの最小数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the minimum number of threads to preallocate for the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、最小値は 1 です。By default, the minimum is 1.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ PerNumaNodeIOProcess \ PerNumaNode ssNoversionint msmdsrv プロセスを対象にして作成されるスレッド プールの数を決定する、符号付き 32 ビット整数です。A signed 32-bit integer that determines the number of thread pools created for the msmdsrv process. -1-1 有効な値は、-1、0、1、2 です。Valid values are -1, 0, 1, 2

-1 = NUMA ノードの数に基づいて、サーバーが選択する IO スレッド プールの方針が異なります。-1 = The server selects a different IO Thread Pool strategy based on the number of NUMA nodes. NUMA ノード数が 4 未満のシステムでは、サーバーの動作は 0 の場合と同じです (1 つの IOProcess スレッド プールがシステム用に作成されます)。On systems having fewer than 4 NUMA nodes, the server behavior is the same as 0 (one IOProcess thread pool is created for the system). ノード数が 4 以上のシステムでは、値が 1 の場合の動作と同じです (各ノードに対して IOProcess スレッド プールが作成されます)。On systems having 4 or more nodes, the behavior is the same as 1 (IOProcess thread pools are created for each node).

0 = NUMA ノードごとのスレッド プールを無効にし、msmdsrv.exe プロセスが使用する IOProcess スレッド プールは 1 つだけ存在するようになります。0 = Disables per NUMA node thread pools so that there is only one IOProcess thread pool used by the msmdsrv.exe process.

1 = NUMA ノードごとに 1 つの IOProcess スレッド プールを有効にします。1 = Enables one IOProcess thread pool per NUMA node.

2 = 論理プロセッサごとに 1 つの IOProcess スレッド プール。2 = One IOProcess thread pool per logical processor. 各スレッド プール内のスレッドは、論理プロセッサの NUMA ノードに関連付けられ、論理プロセッサに対して最適なプロセッサが設定されます。Threads in each thread pool are affinitized to the NUMA node of the logical processor, with the ideal processor set to the logical processor.

詳細については、「 NUMA ノード内のプロセッサに IO スレッドを関連付けるための PerNumaNode の設定 」をご覧ください。See Set PerNumaNode to affinitize IO threads to processors in a NUMA node for details.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ PriorityRatioIOProcess \ PriorityRatio ssNoversionint 優先順位の高いキューが空でない場合も、優先順位の低いスレッドが時折実行されるようにする目的で使用できる、32 ビット符号付き整数です。A signed 32-bit integer that can be used to ensure that lower priority threads are sometimes executed even when a higher priority queue is not empty. 22 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
IOProcess \ StackSizeKBIOProcess \ StackSizeKB ssNoversionint スレッド実行中にメモリ割り当てを調整するために使用できる、符号付き 32 ビット整数です。A signed 32-bit integer that can be used to adjust memory allocation during thread execution. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

多次元モデルにのみ適用されます。Applies to multidimensional models only.
Parsing \ Long \ ConcurrencyParsing \ Long \ Concurrency doubledouble 一度にキューに登録できるスレッド数のターゲットを設定するアルゴリズムを決定する、倍精度浮動小数点値です。A double-precision floating point value that determines the algorithm for setting a target on the number of threads that can be queued at one time. 2.02.0 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

Concurrency はスレッド プールを初期化するために使用され、それらのプールは Windows 内の IO 完了ポートを使用して実装されます。Concurrency is used to initialize thread pools, which are implemented using IO Completion Ports in Windows. 詳しくは、「 I/O 完了ポート 」をご覧ください。See I/O Completion Ports for details.
Parsing \ Long \ GroupAffinityParsing \ Long \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。解析スレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of parsing threads to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details.
Parsing \ Long \ NumThreadsParsing \ Long \ NumThreads ssNoversionint 長いコマンドに対して作成可能なスレッドの数を定義する、符号付き 32 ビット整数のプロパティです。A signed 32-bit integer property that defines the number of threads that can be created for long commands. 00 0 は、サーバーが既定値を決定することを表します。0 indicates that the server determines the defaults. 既定の動作では、 NumThreads を、4 という絶対値、または論理プロセッサ数の 2 倍のうち、どちらか大きい方に設定します。The default behavior is to set NumThreads to an absolute value of 4, or 2 times the number of logical processors, whichever is higher.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、NumThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set NumThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.
Parsing \ Long \ PriorityRatioParsing \ Long \ PriorityRatio ssNoversionint 優先順位の高いキューが空でない場合も、優先順位の低いスレッドが時折実行されるようにする目的で使用できる、32 ビット符号付き整数です。A signed 32-bit integer that can be used to ensure that lower priority threads are sometimes executed even when a higher priority queue is not empty. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Parsing \ Long \ StackSizeKBParsing \ Long \ StackSizeKB ssNoversionint スレッド実行中にメモリ割り当てを調整するために使用できる、符号付き 32 ビット整数です。A signed 32-bit integer that can be used to adjust memory allocation during thread execution. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Parsing \ Short \ ConcurrencyParsing \ Short \ Concurrency doubledouble 一度にキューに登録できるスレッド数のターゲットを設定するアルゴリズムを決定する、倍精度浮動小数点値です。A double-precision floating point value that determines the algorithm for setting a target on the number of threads that can be queued at one time. 2.02.0 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

Concurrency はスレッド プールを初期化するために使用され、それらのプールは Windows 内の IO 完了ポートを使用して実装されます。Concurrency is used to initialize thread pools, which are implemented using IO Completion Ports in Windows. 詳しくは、「 I/O 完了ポート 」をご覧ください。See I/O Completion Ports for details.
Parsing \ Short \ GroupAffinityParsing \ Short \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。解析スレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of parsing threads to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details.
Parsing \ Short \ NumThreadsParsing \ Short \ NumThreads ssNoversionint 短いコマンドに対して作成可能なスレッドの数を定義する、符号付き 32 ビット整数のプロパティです。A signed 32-bit integer property that defines the number of threads that can be created for short commands. 00 0 は、サーバーが既定値を決定することを表します。0 indicates that the server determines the defaults. 既定の動作では、 NumThreads を、4 という絶対値、または論理プロセッサ数の 2 倍のうち、どちらか大きい方に設定します。The default behavior is to set NumThreads to an absolute value of 4, or 2 times the number of logical processors, whichever is higher.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、NumThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set NumThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.
Parsing \ Short \ PriorityRatioParsing \ Short \ PriorityRatio ssNoversionint 優先順位の高いキューが空でない場合も、優先順位の低いスレッドが時折実行されるようにする目的で使用できる、32 ビット符号付き整数です。A signed 32-bit integer that can be used to ensure that lower priority threads are sometimes executed even when a higher priority queue is not empty. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Parsing \ Short \ StackSizeKBParsing \ Short \ StackSizeKB ssNoversionint スレッド実行中にメモリ割り当てを調整するために使用できる、符号付き 32 ビット整数です。A signed 32-bit integer that can be used to adjust memory allocation during thread execution. 64 ×論理プロセッサ数64 * logical processors 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Process \ ConcurrencyProcess \ Concurrency doubledouble 一度にキューに登録できるスレッド数のターゲットを設定するアルゴリズムを決定する、倍精度浮動小数点値です。A double-precision floating point value that determines the algorithm for setting a target on the number of threads that can be queued at one time. 2.02.0 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

Concurrency はスレッド プールを初期化するために使用され、それらのプールは Windows 内の IO 完了ポートを使用して実装されます。Concurrency is used to initialize thread pools, which are implemented using IO Completion Ports in Windows. 詳しくは、「 I/O 完了ポート 」をご覧ください。See I/O Completion Ports for details.
Process \ GroupAffinityProcess \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。処理スレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of processing threads to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details.
Process \ MaxThreadsProcess \ MaxThreads ssNoversionint スレッド プールに含めるスレッドの最大数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the maximum number of threads to include in the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、サーバーはこの値を、64 という絶対値、または論理プロセッサ数のうち、どちらか大きい方に設定します。By default, the server either sets this value to an absolute value of 64, or the number of logical processors, whichever is higher. たとえば、ハイパースレッディングが有効な 64 コアのシステム (つまり、128 個の論理プロセッサが存在) では、スレッド プールの最大値は 128 スレッドです。For example, on a 64-core system with hyperthreading enabled (resulting in 128 logical processors), the thread pool maximum is 128 threads.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、MaxThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set MaxThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.
Process \ MinThreadsProcess \ MinThreads ssNoversionint スレッド プールに事前に割り当てるスレッドの最小数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the minimum number of threads to preallocate for the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、最小値は 1 です。By default, the minimum is 1.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.
Process \ PriorityRatioProcess \ PriorityRatio ssNoversionint 優先順位の高いキューが空でない場合も、優先順位の低いスレッドが時折実行されるようにする目的で使用できる、32 ビット符号付き整数です。A signed 32-bit integer that can be used to ensure that lower priority threads are sometimes executed even when a higher priority queue is not empty. 22 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Process \ StackSizeKBProcess \ StackSizeKB ssNoversionint スレッド実行中にメモリ割り当てを調整するために使用できる、符号付き 32 ビット整数です。A signed 32-bit integer that can be used to adjust memory allocation during thread execution. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Query \ ConcurrencyQuery \ Concurrency doubledouble 一度にキューに登録できるスレッド数のターゲットを設定するアルゴリズムを決定する、倍精度浮動小数点値です。A double-precision floating point value that determines the algorithm for setting a target on the number of threads that can be queued at one time. 2.02.0 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.

Concurrency はスレッド プールを初期化するために使用され、それらのプールは Windows 内の IO 完了ポートを使用して実装されます。Concurrency is used to initialize thread pools, which are implemented using IO Completion Ports in Windows. 詳しくは、「 I/O 完了ポート 」をご覧ください。See I/O Completion Ports for details.
Query \ GroupAffinityQuery \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。処理スレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of processing threads to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details.
Query \ MaxThreadsQuery \ MaxThreads ssNoversionint スレッド プールに含めるスレッドの最大数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the maximum number of threads to include in the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、サーバーはこの値を、10 という絶対値、または論理プロセッサ数の 2 倍のうち、どちらか大きい方に設定します。By default, the server either sets this value to an absolute value of 10, or 2 times the number of logical processors, whichever is higher. たとえば、ハイパースレッディングが有効な 4 コアのシステムでは、最大スレッド数は 16 です。For example, on a 4-core system with hyperthreading, the maximum thread count is 16.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、MaxThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set MaxThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.
Query \ MinThreadsQuery \ MinThreads ssNoversionint スレッド プールに事前に割り当てるスレッドの最小数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the minimum number of threads to preallocate for the thread pool. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、最小値は 1 です。By default, the minimum is 1.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.

スレッド プールの設定のチューニングに関する詳細については、「 Analysis Services 操作ガイド」をご覧ください。More information about tuning the thread pool settings can be found in the Analysis Services Operations Guide.
Query \ PriorityRatioQuery \ PriorityRatio ssNoversionint 優先順位の高いキューが空でない場合も、優先順位の低いスレッドが時折実行されるようにする目的で使用できる、32 ビット符号付き整数です。A signed 32-bit integer that can be used to ensure that lower priority threads are sometimes executed even when a higher priority queue is not empty. 22 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
Query \ StackSizeKBQuery \ StackSizeKB ssNoversionint スレッド実行中にメモリ割り当てを調整するために使用できる、符号付き 32 ビット整数です。A signed 32-bit integer that can be used to adjust memory allocation during thread execution. 00 詳細プロパティです。 MicrosoftMicrosoft サポートの指示がない限り、変更しないでください。An advanced property that you should not change, except under the guidance of MicrosoftMicrosoft support.
VertiPaq \ CPUsVertiPaq \ CPUs ssNoversionint 表形式クエリに使用するプロセッサの最大数を指定する、符号付き 32 ビット整数です。A signed 32-bit integer that specifies the maximum number of processors to use for tabular queries. 00 0 は、サーバーが既定値を決定することを表します。0 indicates the server determines the defaults. 既定では、サーバーはこの値を、10 という絶対値、または論理プロセッサ数の 2 倍のうち、どちらか大きい方に設定します。By default, the server either sets this value to an absolute value of 10, or 2 times the number of logical processors, whichever is higher. たとえば、ハイパースレッディングが有効な 4 コアのシステムでは、最大スレッド数は 16 です。For example, on a 4-core system with hyperthreading, the maximum thread count is 16.

この値を負の値に設定した場合は、サーバーはこの値に論理プロセッサ数を掛けます。If you set this value to a negative value, the server multiples that value by the number of logical processors. たとえば、32 個の論理プロセッサが存在するサーバーでこの値を -10 に設定すると、最大値は 320 スレッドになります。For example, when set to -10 on a server having 32 logical processors, the maximum is 320 threads.

最大値は、以前に定義したカスタムの関係マスクごとに使用可能なプロセッサに適用されます。The maximum value is subject to available processors per any custom affinity masks that you previously defined. たとえば、32 個のプロセッサのうち 8 個を使用するようにスレッド プールの関係を既に設定している場合、MaxThreads を -10 に設定すると、スレッド プールの上限は 10 x 8 で 80 スレッドになります。For example, if you already set thread pool affinity to use 8 out of 32 processors, and you now set MaxThreads to -10, then the upper bound on the thread pool would 10 times 8, or 80 threads.

このスレッド プールのプロパティで使用する実際の値は、サービスの起動時に msmdsrv log ファイルに書き込まれます。The actual values used for this thread pool property are written to the msmdsrv log file upon service start up.
VertiPaq \ GroupAffinityVertiPaq \ GroupAffinity stringstring システムのプロセッサ グループに対応する 16 進値の配列です。処理スレッドと各プロセッサ グループの論理プロセッサとの関係を設定するために使用されます。An array of hexadecimal values that correspond to processor groups on the system, used to set affinity of processing threads to logical processors in each processor group. なしnone このプロパティを使用して、カスタム関係を作成することもできます。You can use this property to create custom affinities. 既定では、このプロパティは空です。The property is empty by default.

詳細については、「 プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定 」をご覧ください。See Set GroupAffinity to affinitize threads to processors in a processor group for details. 表形式のみに適用されます。Applies to Tabular only.

プロセッサ グループ内のプロセッサにスレッドを関連付けるための GroupAffinity の設定Set GroupAffinity to affinitize threads to processors in a processor group

GroupAffinity は、高度なチューニングの目的で用意されています。GroupAffinity is provided for advanced tuning purposes. GroupAffinity プロパティを使用して、 Analysis ServicesAnalysis Services のスレッド プールと特定のプロセッサ間の関係を設定できます。ただし、ほとんどのインストール環境では、 Analysis ServicesAnalysis Services は、使用可能な論理プロセッサをすべて使用できる場合にパフォーマンスが最も高くなります。You can use the GroupAffinity property to set affinity between Analysis ServicesAnalysis Services thread pools and specific processors; however, for most installations, Analysis ServicesAnalysis Services performs best when it can use all available logical processors. したがって、既定ではグループ関係は指定されていません。Accordingly, group affinity is unspecified by default.

パフォーマンス テストの結果、CPU 最適化が必要なことが示された場合は、Windows Server リソース マネージャーを使用して論理プロセッサとサーバー プロセスの間で関係を設定するなど、より高度なアプローチを考慮することもできます。Should performance testing indicate a need for CPU optimization, you might consider a higher level approach, such as using Windows Server Resource Manager to set affinity between logical processors and a server process. このようなアプローチは、個別のスレッド プールに対してカスタム関係を定義する場合より、実装と管理が容易です。Such an approach can be simpler to implement and manage than defining custom affinities for individual thread pools.

このアプローチが不十分な場合は、スレッド プールに対してカスタム関係を定義することで、精度を高めることができます。If that approach is insufficient, you can achieve greater precision by defining custom affinities for thread pools. 多くの場合、関係設定のカスタマイズは、スレッド プールが非常に多くのプロセッサに分散されることによってパフォーマンスの低下が発生する大規模なマルチコア システム (NUMA または NUMA 以外) で推奨されます。Customizing affinity settings is more likely to be recommended on large multi-core systems (either NUMA or non-NUMA) experiencing performance degradation due to thread pools spread out over too-wide a range of processors. 論理プロセッサ数が 64 未満のシステムで GroupAffinity を設定することもできますが、利点はごくわずかであり、パフォーマンスが低下する可能性さえあります。Although you can set GroupAffinity on systems having fewer than 64 logical processors, the benefit is negligible and might even degrade performance.

注意

のエディションごとに使用できるコアの数が制限されており、 GroupAffinity Analysis ServicesAnalysis Servicesはその制約を受けます。GroupAffinity is constrained by editions that limit the number of cores used by Analysis ServicesAnalysis Services. 起動時に、 Analysis ServicesAnalysis Services はエディション情報と GroupAffinity プロパティを使用して、 Analysis ServicesAnalysis Servicesが管理する各スレッド プールの関係マスクを計算します。At startup, Analysis ServicesAnalysis Services uses edition information and the GroupAffinity properties to compute affinity masks for each thread pool managed by Analysis ServicesAnalysis Services. Standard Edition では最大 24 個のコアを使用できます。Standard edition can use a maximum of 24 cores. 24 個よりも多くのコアを使用する大規模なマルチコア システムに Analysis ServicesAnalysis Services をインストールした場合、 Analysis ServicesAnalysis Services が使用するコアは 24 個に限られます。If you install Analysis ServicesAnalysis Services standard edition on a large multi-core system that has more than 24 cores, Analysis ServicesAnalysis Services will only use 24 of them. プロセッサの最大値の詳細については、「 SQL Server 2016 の各エディションでサポートされる機能」でクロス ボックスのスケール制限を参照してください。For more information about processor maximums, see the cross-box scale limits in Features by editions in SQL Server.

構文Syntax

この値は、各プロセッサ グループに対応する 16 進数であり、この 16 進数は、特定のスレッド プールに対応するスレッドを割り当てるときに Analysis ServicesAnalysis Services が最初に使用しようとする論理プロセッサを表します。The value is hexadecimal for each processor group, with the hexadecimal representing the logical processors that Analysis ServicesAnalysis Services attempts to use first when allocating threads for a given thread pool.

論理プロセッサに対応するビットマスクBitmask for Logical Processors

単一のプロセッサ グループ内で最大 64 個の論理プロセッサを使用できます。You can have up to 64 logical processors within a single processor group. グループ内の各論理プロセッサに対応するビットマスクが 1 (または 0) である場合は、スレッド プールがその論理プロセッサを使用します (または、使用しません)。The bitmask is 1 (or 0) for each logical processor in the group that is used (or not used) by a thread pool. ビットマスクを計算した後、 GroupAffinityの値として、それに対応する 16 進値を計算します。Once you compute the bitmask, you then calculate the hexadecimal value as the value for GroupAffinity.

複数のプロセッサ グループMultiple processor groups

プロセッサ グループは、システムの起動時に決定されます。Processor groups are determined on system startup. GroupAffinity は各プロセッサ グループに対応する 16 進値をコンマ区切りリストの形で受け入れます。GroupAffinity accepts hexadecimal values for each processor group in a comma delimited list. 複数のプロセッサ グループ (ハイエンド システムでは最大 10) が存在している場合は、0x0 を指定することにより、個別のグループをバイパスすることができます。Given multiple processor groups (up to 10 on higher end systems), you can bypass individual groups by specifying 0x0. たとえば、4 つのプロセッサ グループ (0、1、2、3) が存在する 1 台のシステムでは、1 番目および 3 番目の値として 0x0 と入力すると、グループ 0 とグループ 2 を除外できます。For example, on a system with four processor groups (0, 1, 2, 3), you could exclude groups 0 and 2 by entering 0x0 for the first and third values.

<GroupAffinity>0x0, 0xFF, 0x0, 0xFF</GroupAffinity>

プロセッサの affinity mask を計算する手順Steps for computing the processor affinity mask

msmdsrv.ini 内、または SQL Server Management Studio のサーバー プロパティ ページで、 GroupAffinity を設定できます。You can set GroupAffinity in msmdsrv.ini or in server property pages in SQL Server Management Studio.

  1. プロセッサ数とプロセッサ グループ数を特定します。Determine the number of processors and processor groups

    winsysinternals から Coreinfo ユーティリティをダウンロードできます。You can download Coreinfo utility from winsysinternals.

    coreinfo を実行し、Logical Processor to Group Map セクションからこの情報を取得します。Run coreinfo to get this information from the Logical Processor to Group Map section. 論理プロセッサごとに単独の行が生成されます。A separate line is generated for each logical processor.

  2. 次のように、右から左に向かってプロセッサに番号を付けます。 7654 3210Sequence the processors, from right to left: 7654 3210

    この例では 8 個のプロセッサ (0 ~ 7) のみを示していますが、1 つのプロセッサ グループは最大 64 の論理プロセッサを使用することができ、1 台のエンタープライズ クラス Windows サーバーで最大 10 個のプロセッサ グループを存在させることができます。The example shows only 8 processors (0 through 7), but a processor group can have a maximum of 64 logical processors, and there can be up to 10 processor groups in an enterprise-class Windows server.

  3. 使用するプロセッサ グループに対応するビットマスクの計算Compute the bitmask for the processor groups you want to use

    7654 3210

    論理プロセッサを除外するか使用するかに応じて、各桁を 0 または 1 で置き換えます。Replace the number with a 0 or 1, depending on whether you want to exclude or include the logical processor. 8 個のプロセッサが存在する 1 台のシステムで、Analysis Services でプロセッサ 7、6、5、4、および 1 を使用する場合は、計算は次のようになります。On a system having eight processors, your calculation might look like this if you wanted to use processors 7, 6, 5, 4, and 1 for Analysis Services:

    1111 0010

  4. 2 進数から 16 進値への変換Convert the binary number to a Hex value

    16 進対応の計算機または変換ツールを使用し、2 進数をそれに対応する 16 進数に変換します。Using a calculator or conversion tool, convert the binary number to its hexadecimal equivalent. この例では、 1111 00100xF2に変換します。In our example, 1111 0010 converts to 0xF2.

  5. GroupAffinity プロパティに、この 16 進値を入力します。Enter the hex value in the GroupAffinity property

    msmdsrv.ini 内、または SQL Server Management Studio のサーバー プロパティ ページで、 GroupAffinity を、手順 4 で計算した値に設定します。In msmdsrv.ini or in the server property page in Management Studio, set GroupAffinity to the value calculated in step 4.

重要

GroupAffinity の設定は、複数の手順から成る手動のタスクです。Setting GroupAffinity is a manual task encompassing multiple steps. GroupAffinityを計算するときは、計算結果を注意深くご確認ください。When computing GroupAffinity, check your calculations carefully. マスク全体が無効な場合は Analysis ServicesAnalysis Services からエラーが返されますが、有効な設定と無効な設定が組み合わされている場合は、 Analysis ServicesAnalysis Services がプロパティを無視する結果になります。Although Analysis ServicesAnalysis Services will return an error if the entire mask is invalid, a combination of valid and invalid settings results in Analysis ServicesAnalysis Services ignoring the property. たとえば、ビットマスクに余分な値が含まれている場合は、 Analysis ServicesAnalysis Services はその設定を無視し、システム上にあるすべてのプロセッサを使用します。For example, if the bitmask includes extra values, Analysis ServicesAnalysis Services ignores the setting, using all processors on the system. このアクションが発生したことを通知するエラーや警告はありませんが、msmdsrv.log ファイルを調べることで実際の関係の設定方法を確認できます。There is no error or warning to alert you when this action occurs, but you can check the msmdsrv.log file to learn how the affinities are actually set.

NUMA ノード内のプロセッサに IO スレッドを関連付けるための PerNumaNode の設定Set PerNumaNode to affinitize IO threads to processors in a NUMA node

多次元の Analysis Services インスタンスでは、 IOProcess スレッド プールに対して PerNumaNode を設定して、スレッドのスケジューリングと実行をさらに最適化することができ案す。For multidimensional Analysis Services instances, you can set PerNumaNode on the IOProcess thread pool to further optimize thread scheduling and execution. GroupAffinity は特定のスレッド プールでどの論理プロセッサ セットを使用するかを識別するのに対し、 PerNumaNode は複数のスレッド プールを作成するかどうかを指定し、さらに、許容される論理プロセッサの特定のサブセットに対して関連付けることで、1 歩先へ進んだ設定と言えます。Whereas GroupAffinity identifies which set of logical processors to use for a given thread pool, PerNumaNode goes one step further by specifying whether to create multiple thread pools, further affinitized to some subset of the allowed logical processors.

注意

Windows Server 2012 でタスク マネージャーを起動し、コンピューター上の NUMA ノード数を表示します。On Windows Server 2012, use Task Manager to view the number of NUMA nodes on the computer. タスク マネージャーの [パフォーマンス] タブで、 [CPU] を選択し、グラフ領域を右クリックして NUMA ノードを表示します。In Task Manager, on the Performance tab, select CPU and then right-click the graph area to view NUMA nodes. もう 1 つの方法として、Windows Sysinternals から Coreinfo ユーティリティを ダウンロード し、NUMA ノードと各ノードの論理プロセッサを返す coreinfo -n を実行します。Alternatively, download the Coreinfo utility from Windows Sysinternals and run coreinfo -n to return NUMA nodes and logical processors in each node.

このトピックの「 スレッド プール プロパティに関するリファレンス 」で説明したように、 PerNumaNode の有効な値は -1、0、1、2 です。Valid values for PerNumaNode are -1, 0, 1, 2, as described in the Thread Pool Property Reference section in this topic.

NUMA ノードが存在するシステムでは、PerNumaNode=-1 という既定の設定を使用し、 Analysis ServicesAnalysis Services がノード数に基づいてスレッド プール数とスレッド関係を調整できるようにすることをお勧めします。On systems having NUMA nodes, we recommend using the default setting of PerNumaNode=-1, allowing Analysis ServicesAnalysis Services to adjust the number of thread pools and their thread affinity based on node count. システムのノード数が 4 未満の場合、 Analysis ServicesAnalysis ServicesPerNumaNode=0 で示される動作を実装します。これに対して、 PerNumaNode=1 は、4 つ以上のノードが存在するシステムで使用されます。If the system has fewer than 4 nodes, Analysis ServicesAnalysis Services implements the behaviors described by PerNumaNode=0, whereas PerNumaNode=1 is used on systems having 4 or more nodes.

値の選択Choosing a value

既定値をオーバーライドして別の有効な値を使用することもできます。You can also override the default to use another valid value.

PerNumaNode=0 の設定Setting PerNumaNode=0

NUMA ノードは無視されます。NUMA nodes are ignored. IOProcess スレッド プールは 1 つしか存在しなくなり、そのスレッド プール内のすべてのスレッドがすべての論理プロセッサに関連付けられます。There will be just one IOProcess thread pool, and all threads in that thread pool will be affinitized to all logical processors. 既定 (PerNumaNode=-1) では、コンピューターの NUMA ノード数が 4 未満の場合はこれが有効な設定です。By default (where PerNumaNode=-1), this is the operative setting if the computer has fewer than 4 NUMA nodes.

Numa、プロセッサ、およびスレッド プールの対応Numa, processor and thread pool correspondence

PerNumaNode=1 の設定Setting PerNumaNode=1

NUMA ノードごとに IOProcess スレッド プールが作成されます。IOProcess thread pools are created for each NUMA node. 個別のスレッド プールを用意すると、NUMA ノード上のローカル キャッシュなど、ローカル リソースへの連携アクセスが改善されます。Having separate thread pools improves coordinated access to local resources, such as local cache on a NUMA node.

Numa、プロセッサ、およびスレッド プールの対応Numa, processor and thread pool correspondence

PerNumaNode=2 の設定Setting PerNumaNode=2

この設定を使用するのは、集中的な Analysis ServicesAnalysis Services ワークロードを実行している高度なハイエンド システムのみです。This setting is for very high-end systems running intensive Analysis ServicesAnalysis Services workloads. このプロパティは IOProcess スレッド プールの関係を非常に細かなレベルで設定し、個別のスレッド プールを作成して論理プロセッサ レベルで関連付けます。This property sets IOProcess thread pool affinity at its most granular level, creating and affinitizing separate thread pools at the logical processor level.

次の例では、4 つの NUMA ノード、および 32 個の論理プロセッサが存在する 1 台のシステムで PerNumaNode を 2 に設定すると、32 個の IOProcess スレッド プールが作成される結果になります。In the following example, on a system having 4 NUMA nodes and 32 logical processors, setting PerNumaNode to 2 would result in 32 IOProcess thread pools. 最初の 8 個のスレッド プール内にあるスレッドは、いずれも NUMA ノード 0 内の論理プロセッサに関連付けられますが、最適なプロセッサは 0、1、2、...最大で 7 まで設定されます。The threads in the first 8 thread pools would be affinitized to all the logical processors in the NUMA node 0, but with the ideal processor set to 0, 1, 2, up to 7. 続く 8 個のスレッド プールは、いずれも NUMA ノード 1 内の論理プロセッサに関連付けられますが、最適なプロセッサは 8、9、10、...最大で 15 まで設定されます。The next 8 thread pools would be affinitized to all the logical processors in NUMA node 1, with the ideal processor set to 8, 9, 10, up to 15, and so on.

Numa、プロセッサ、およびスレッド プールの対応Numa, processor and thread pool correspondence

この関係レベルでは、スケジューラは必ず、優先 NUMA ノード内にある最適な論理プロセッサを最初に使用しようとします。At this level of affinity, the scheduler always attempts to use the ideal logical processor first, within the preferred NUMA node. その論理プロセッサが使用できない場合は、スケジューラは同じノード内にある別のプロセッサを選択するか、他のスレッドが使用できない場合は同じプロセッサ グループ内にある別のプロセッサを選択します。If the logical processor is unavailable, the scheduler chooses another processor within the same node, or within the same processor group if no other threads are available. 詳細と例については、「 Analysis Services 2012 の構成設定 (Wordpress ブログ)」をご覧ください。For more information and examples, see Analysis Services 2012 Configuration settings (Wordpress Blog).

IOProcess スレッド間での作業の分散Work distribution among IOProcess threads

PerNumaNode プロパティを設定するかどうかを検討するときは、 IOProcess スレッドがどのように使用されるのかを理解しておくと、十分な情報に基づいた意思決定を行うことができます。As you consider whether to set the PerNumaNode property, knowing how IOProcess threads are used can help you make a more informed decision.

IOProcess は、多次元エンジン内のストレージ エンジン クエリに関連付けられている IO ジョブで使用されることに注意してください。Recall that IOProcess is used for IO jobs associated with storage engine queries in the multidimensional engine.

セグメントをスキャンするときに、エンジンはセグメントが属するパーティションを特定し、パーティションで使用されるスレッド プールのキューにセグメント ジョブを登録しようとします。When a segment is scanned, the engine identifies the partition to which the segment belongs, and attempts to queue the segment job to the thread pool used by the partition. 通常は、パーティションに属するすべてのセグメントが同じスレッド プールのキューにタスクを登録します。In general, all segments belonging to a partition will queue their tasks to the same thread pool. NUMA システムでは、パーティションのすべてのスキャンで、その NUMA ノードにローカルで割り当てられているファイル システム キャッシュのメモリが使用されるため、この動作は特に便利です。On NUMA systems, this behavior is particularly advantageous because all scans for a partition will use memory in the file system cache that is allocated locally to that NUMA node.

以下のシナリオに示す調整を行うと、NUMA システムでクエリのパフォーマンスを向上させることができる場合があります。The following scenarios suggest adjustments that can sometimes improve query performance on NUMA systems:

  • パーティション分割が不十分な (たとえば、単一のパーティションを持つ) メジャー グループでは、パーティションの数を増やします。For measure groups that are under-partitioned (for example, having a single partition), increase the number of partitions. パーティションを 1 つだけ使用すると、エンジンは常に 1 つのスレッド プール (スレッド プール 0) のキューにタスクを登録します。Using just one partition will cause the engine to always queue tasks to one thread pool (thread pool 0). パーティションをさらに追加すると、エンジンは追加のスレッド プールを使用できるようになります。Adding more partitions allows the engine to use additional thread pools.

    追加のパーティションを作成できない場合、スレッド プール 0 で使用できるスレッドの数を増やす 1 つの方法として、 PerNumaNode=0 を設定します。Alternatively, if you cannot create additional partitions, try setting PerNumaNode=0 as a way to increase the number of threads available to thread pool 0.

  • セグメント スキャンが複数のパーティションに均等に分散されるデータベースでは、 PerNumaNode を 1 または 2 に設定すると、システムで使用する IOProcess スレッド プールの総数が増えるため、クエリのパフォーマンスを向上させることができます。For databases in which segment scans are evenly distributed across multiple partitions, setting PerNumaNode to 1 or 2 can improve query performance because it increases the overall number of IOProcess thread pools used by the system.

  • 複数のパーティションを使用するソリューションで、1 つのパーティションだけが集中的にスキャンされる場合は、 PerNumaNode=0 を設定して、パフォーマンスが向上するかどうかを確認します。For solutions that have multiple partitions, but only one is heavily scanned, try setting PerNumaNode=0 to see if it improves performance.

パーティション スキャンとディメンション スキャンでは、いずれも IOProcess スレッド プールが使用されますが、ディメンション スキャンではスレッド プール 0 だけが使用されます。Although both partition and dimension scans use the IOProcess thread pool, dimension scans only use thread pool 0. そのため、このスレッド プールにやや不均等な負荷がかかる可能性があります。ただし、ディメンション スキャンは非常に高速で頻度も低い傾向があるため、不均衡は一時的なものです。This can result in a slightly uneven load on that thread pool, but the imbalance should be temporary, as dimension scans tend to be very fast and infrequent.

注意

サーバー プロパティを変更するときは、現在のインスタンスで実行されているすべてのデータベースに構成オプションが適用されることに注意してください。When changing a server property, remember that the configuration option applies to all databases running on the current instance. 最も重要なデータベースまたは最も数が多いデータベースにメリットがもたらされる設定を選択します。Choose settings that benefit the most important databases, or the greatest number of databases. データベース レベルでプロセッサの関係を設定することはできません。また、個々のパーティションと特定のプロセッサ間の関係を設定することもできません。You cannot set processor affinity at the database level, nor can you set affinity between individual partitions and specific processors.

ジョブ アーキテクチャの詳細については、「 SQL Server Analysis Services パフォーマンス ガイド」のセクション 2.2 をご覧ください。For more information about job architecture, see section 2.2 in SQL Server Analysis Services Performance Guide.

Analysis Services 操作ガイド」のセクション 2.4 で説明されているように、処理スレッド プールを増やす場合は、 CoordinatorExecutionMode 設定と CoordinatorQueryMaxThreads 設定に十分注意し、増やされたスレッド プール サイズを最大限活用できるようにしてください。As explained in section 2.4 of the Analysis Services Operations Guide, if you increase the processing thread pool, you should make sure that the CoordinatorExecutionMode settings, as well as the CoordinatorQueryMaxThreads settings, have values that enable you to make full use of the increased thread pool size.

Analysis Services はコーディネーター スレッドを使用して、処理またはクエリの要求を完了するために必要なデータを収集します。Analysis Services uses a coordinator thread for gathering the data needed to complete a processing or query request. コーディネーターは最初に、各パーティションに対して、操作する必要のある 1 つのジョブをキューに登録します。The coordinator first queues up one job for each partition that must be touched. その後、パーティション内でスキャンする必要のあるセグメントの総数に応じて、これらのジョブのそれぞれは引き続き他のジョブをキューに登録します。Each of those jobs then continues to queue up more jobs, depending on the total number of segments that must be scanned in the partition.

CoordinatorExecutionMode の既定値は -4 であり、コアあたり 4 つの並列ジョブに制限され、ストレージ エンジン内のサブキューブ要求によって並列実行できるコーディネーター ジョブの総数が制限されることを意味します。The default value for CoordinatorExecutionMode is -4, meaning a limit of 4 jobs in parallel per core, which constrains the total number of coordinator jobs that can be executed in parallel by a subcube request in the storage engine.

CoordinatorQueryMaxThreads の既定値は 16 であり、各パーティションに対して並列実行できるセグメント ジョブの数が制限されます。The default value for CoordinatorQueryMaxThreads is 16, which limits the number of segment jobs that can be executed in parallel for each partition.

現在のスレッド プールの設定の確認Determine current thread pool settings

各サービスの起動時に、Analysis ServicesAnalysis Services は現在のスレッド プール設定を msmdsrv.log ファイルに出力し、その中には最小スレッド数と最大スレッド数、プロセッサ関係マスク、およびコンカレンシー数が含まれます。At each service startup, Analysis ServicesAnalysis Services outputs the current thread pool settings into the msmdsrv.log file, including minimum and maximum threads, processor affinity mask, and concurrency.

次の例は、ログ ファイルからの抽出であり、ハイパースレッディングが有効になっている 4 コアのシステムでの Query スレッド プールに関する既定の設定 (MinThread=0、MaxThread=0、Concurrency=2) を示しています。The following example is an excerpt from the log file, showing the default settings for the Query thread pool (MinThread=0, MaxThread=0, Concurrency=2), on a 4-core system with hyper-threading enabled. 関係マスクは 0xFF であり、8 つの論理プロセッサを表しています。The affinity mask is 0xFF, indicating 8 logical processors. マスクに対して先頭の 0 が追加されることに注意してください。Notice that leading zeros are prepended to the mask. 先頭の 0 は無視できます。You can ignore the leading zeros.

"10/28/2013 9:20:52 AM) Message: The Query thread pool now has 1 minimum threads, 16 maximum threads, and a concurrency of 16. Its thread pool affinity mask is 0x00000000000000ff. (Source: \\?\C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Log\msmdsrv.log, Type: 1, Category: 289, Event ID: 0x4121000A)"

MinThreadMaxThread を設定するアルゴリズムが、システム構成、特にプロセッサ数を組み込んでいることに注意してください。Recall that the algorithm for setting MinThread and MaxThread incorporates system configuration, particularly the number of processors. 次のブログ記事では、値の計算方法についての洞察を提供します。Analysis Services 2012 の構成設定 (Wordpress ブログ)します。The following blog post offers insights into how the values are calculated: Analysis Services 2012 Configuration settings (Wordpress Blog). これらの設定と動作が、それ以降のリリースで調整される可能性があることに注意してください。Note that these settings and behaviors are subject to adjustment in subsequent releases.

次の一覧に、プロセッサのさまざまな組み合わせを対象にした、他の関係マスクの設定例を示します。The following list shows examples of other affinity mask settings, for different combinations of processors:

  • 8 コアのシステムでプロセッサ 3-2-1-0 のようにすると、このビットマスクが得られます。00001111、および 16 進数値の場合:0xFAffinity for processors 3-2-1-0 on an 8 core system results in this bitmask: 00001111, and a hexadecimal value: 0xF

  • 8 コアのシステムでプロセッサ 7-6-5-4 は、このビットマスクが得られます。11110000、および 16 進数値の場合:0xF0Affinity for processors 7-6-5-4 on an 8 core system results in this bitmask: 11110000, and a hexadecimal value: 0xF0

  • 8 コアのシステムでプロセッサ 5-4-3-2 は、このビットマスクが得られます。00111100、および 16 進数値の場合:0x3CAffinity for processors 5-4-3-2 on an 8 core system results in this bitmask: 00111100, and a hexadecimal value: 0x3C

  • 8 コアのシステムでプロセッサ 7-6-1-0 は、このビットマスクが得られます。11000011、および 16 進数値の場合:0xC3Affinity for processors 7-6-1-0 on an 8 core system results in this bitmask: 11000011, and a hexadecimal value: 0xC3

システムに複数のプロセッサ グループが存在する場合は、グループごとに個別の関係マスクが生成され、コンマ区切りリストの形式で表現されることに注意してください。Recall that on systems having multiple processor groups, a separate affinity mask is generated for each group, in a comma separated list.

MSMDSRV.INI の概要About MSMDSRV.INI

msmdsrv.ini ファイルには、 Analysis ServicesAnalysis Services インスタンスの構成設定が含まれます。これらの構成設定は、そのインスタンスで実行されるすべてのデータベースに影響します。The msmdsrv.ini file contains configuration settings for an Analysis ServicesAnalysis Services instance, affecting all databases running on that instance. サーバー構成プロパティを使用して、他のすべてのデータベースを除外し、1 つのデータベースのパフォーマンスだけを最適化することはできません。You cannot use server configuration properties to optimize performance of just one database to the exclusion of all others. ただし、 Analysis ServicesAnalysis Services の複数のインスタンスをインストールし、類似する特性やワークロードを共有するデータベースにメリットをもたらすプロパティを使用するように各インスタンスを構成できます。However, you can install multiple instances of Analysis ServicesAnalysis Services and configure each instance to use properties that benefit databases sharing similar characteristics or workloads.

すべてのサーバー構成プロパティが、msmdsrv.ini ファイル内に含まれています。All server configuration properties are included in the msmdsrv.ini file. 変更される可能性の高い一部のプロパティは、SSMS のような管理ツール内でも表示されます。Subsets of the properties more likely to be modified also appear in administration tools, such as SSMS.

msmdsrv.ini の内容は、 Analysis ServicesAnalysis Servicesのテーブル インスタンスと多次元インスタンスの両方で同一です。The contents of msmdsrv.ini are identical for both Tabular and Multidimensional instances of Analysis ServicesAnalysis Services. ただし、一部の設定はどちらか 1 つのモードのみに適用されます。However, some settings apply to one mode only. サーバー モードに基づく動作の違いは、プロパティ リファレンスのドキュメントに記載されています。Differences in behavior based on server mode are noted in property reference documentation.

注意

プロパティの設定方法については、「 Analysis Services のサーバー プロパティ」をご覧ください。For instructions on how to set properties, see Server Properties in Analysis Services.

参照See Also

プロセスとスレッドの概要 About Processes and Threads
複数のプロセッサ Multiple Processors
プロセッサ グループ Processor Groups
SQL Server 2012 での Analysis Services のスレッド プールの変更 Analysis Services Thread Pool Changes in SQL Server 2012
Analysis Services 2012 の構成設定 (Wordpress ブログ) Analysis Services 2012 Configuration settings (Wordpress Blog)
64 を超えるプロセッサを搭載したシステムのサポート Supporting Systems That Have More Than 64 Processors
SQL Server Analysis Services 操作ガイドSQL Server Analysis Services Operations Guide