동적 WLM 예제
클러스터 WLM이 다음과 같은 동적 속성을 사용하여 2개의 대기열로 구성되어 있다고 가정하겠습니다.
대기열 | 동시성 | 사용할 메모리 비율(%) |
---|---|---|
1 |
4 |
50% |
2 |
4 |
50% |
이번에는 클러스터에 쿼리 처리에 사용할 수 있는 메모리가 200GB 있다고 가정하겠습니다. 이 수치는 임의적인 것으로 이해를 돕기 위해 사용되었습니다. 다음 방정식과 같이 각 슬롯에 할당되는 메모리는 25GB입니다.
(200 GB * 50% ) / 4 slots = 25 GB
이번에는 다음과 같은 동적 속성을 사용하도록 WLM을 변경합니다.
대기열 | 동시성 | 사용할 메모리 비율(%) |
---|---|---|
1 |
3 |
75% |
2 |
4 |
25% |
다음 방정식과 같이 대기열 1에서는 각 슬롯마다 새롭게 할당되는 메모리는 50GB입니다.
(200 GB * 75% ) / 3 slots = 50 GB
새로운 구성을 적용할 때 쿼리 A1, A2, A3 및 A4가 실행 중이고, 쿼리 B1, B2, B3 및 B4가 대기 중이라고 가정하겠습니다. WLM이 쿼리 슬롯을 다음과 같이 동적으로 재구성합니다.
단계 | 실행 중인 쿼리 | 현재 슬롯 수 | 목표 슬롯 수 | 할당되는 메모리 | 사용할 수 있는 메모리 |
---|---|---|---|---|---|
1 | A1, A2, A3, A4 | 4 | 0 | 100GB | 50GB |
2 | 2 | 3 | 0 | 75GB | 75GB |
3 | A3, A4 | 2 | 0 | 50GB | 100GB |
4 | A3, A4, B1 | 2 | 1 | 100GB | 50GB |
5 | 5 | 1 | 1 | 75GB | 75GB |
6 | 6 | 1 | 2 | 125GB | 25GB |
7 | 7 | 0 | 2 | 100GB | 50GB |
8 | 8 | 0 | 3 | 150GB | 0GB |
-
WLM이 쿼리 슬롯마다 메모리 할당을 재계산합니다. 처음에 대기열 1에 할당된 메모리는 100GB였습니다. 하지만 새로운 대기열에 할당되는 총 메모리는 150GB이기 때문에 50GB를 즉시 사용할 수 있습니다. 현재 대기열 1에서 사용하는 슬롯 수는 4개이고, 새로운 동시성 레벨은 3슬롯이므로 새로운 슬롯이 추가되지는 않습니다.
-
하나의 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 3개이며, 75GB의 메모리를 사용할 수 있습니다. 새로운 구성에서는 각 슬롯마다 50GB가 필요하지만 동시성 레벨이 3슬롯이기 때문에 슬롯이 새롭게 추가되지는 않습니다.
-
두 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 100GB가 사용할 수 있는 여유 메모리입니다.
-
여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며, 50GB가 사용할 수 있는 여유 메모리입니다. 이제 대기열에서 대기 중이던 쿼리가 새로운 슬롯으로 라우팅될 수 있습니다.
-
세 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 75GB가 사용할 수 있는 여유 메모리입니다.
-
여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며, 25GB가 사용할 수 있는 여유 메모리입니다. 이제 대기열에서 대기 중이던 쿼리가 새로운 슬롯으로 라우팅될 수 있습니다.
-
네 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 50GB가 사용할 수 있는 여유 메모리입니다.
-
여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며 각각 50GB씩 사용할 수 있는 메모리가 모두 할당되었습니다.
전환이 완료되어 대기 중이던 쿼리가 모든 쿼리 슬롯을 사용할 수 있습니다.