動的な WLM の例 - Amazon Redshift

動的な WLM の例

次の動的プロパティを使用して、キューが 2 つ存在するクラスター WLM が設定されているとします。

キュー Concurrency % Memory to Use

1

4

50%

2

4

50%

ここでは、クラスターがクエリ処理に 200 GB のメモリを使用できるとします (この値は任意の数値であり、あくまでも例です)。次の式に示すように、各スロットには 25 GB 割り当てられます。

(200 GB * 50% ) / 4 slots = 25 GB

次に、次の動的プロパティを使用するように WLM を変更します。

キュー Concurrency % Memory to Use

1

3

75%

2

4

25%

次の式に示すように、キュー 1 内の各スロットの新しいメモリ割り当ては 50 GB です。

(200 GB * 75% ) / 3 slots = 50 GB

新しい設定の適用時にクエリ A1、A2、A3、A4 が実行中であり、クエリ B1、B2、B3、B4 がキューに入っているとします。WLM は、クエリスロットを次のように動的に再設定します。

ステップ 実行中のクエリ 現在のスロットカウント 目標スロットカウント 割り当て済みメモリ 利用可能なメモリ
1 A1、A2、A3、A4 4 0 100 GB 50 GB
2 A2、A3、A4 3 0 75 GB 75 GB
3 A3、A4 2 0 50 GB 100 GB
4 A3、A4、B1 2 1 100 GB 50 GB
5 A4、B1 1 1 75 GB 75 GB
6 A4、B1、B2 1 2 125 GB 25 GB
7 B1、B2 0 2 100 GB 50 GB
8 B1、B2、B3 0 3 150 GB 0 GB
  1. WLM は、各クエリスロットへのメモリ割り当てを再計算します。最初は、キュー 1 には 100 GB 割り当てられていました。新しいキューの合計割り当ては 150 GB のため、新しいキューはすぐに 50 GB 使用可能になります。キュー 1 が 4 つのスロットを使用するようになり、新しい同時実行レベルは 3 つのスロットになったため、新しいスロットは追加されません。

  2. 1 つのクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 3 つ、使用可能なメモリは 75 GB になりました。新しい設定では新しいスロットごとに 50 GB 必要ですが、新しい同時実行レベルは 3 つのスロットのため、新しいスロットは追加されません。

  3. 2 つ目のクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 100 GB になります。

  4. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは 3 つになり、空きメモリは 50 GB になります。キューに入っているクエリを新しいスロットにルーティングできるようになりました。

  5. 3 つ目のクエリが完了すると、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 75 GB になります。

  6. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは 3 つになり、空きメモリは 25 GB になります。キューに入っているクエリを新しいスロットにルーティングできるようになりました。

  7. 4 つ目のクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 50 GB になります。

  8. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは、それぞれ 50 GB のスロットが 3 つになり、使用可能なすべてのメモリが割り当てられました。

移行が完了し、キューに入ったクエリがすべてのクエリスロットを使用できるようになります。