CALCPARALLEL 병렬 계산

Essbase 기본 직렬 계산에서 CALCPARALLEL 병렬 계산으로 변경하려면 하나 또는 두 개의 구성 설정을 변경하고 서버를 재시작하거나 계산 스크립트에 지침을 추가합니다.

지침은 CALCPARALLEL 병렬 계산 사용을 참조하십시오.

다음 항목에서는 병렬 계산의 세부 사항에 대해 설명합니다.

CALPARALLEL의 타당성 분석

Essbase는 CALPARALLEL 병렬 계산 방법 사용이 가능한지 여부를 평가한 후 사용으로 설정한 각 계산 통과를 수행합니다.

Essbase는 아웃라인 및 각 계산 통과에 대해 요청된 계산을 분석합니다. 하나의 계산에는 여러 패스가 필요할 수 있습니다. 일부 상황에서는 동적 계산, 두 패스로 태그 지정된 멤버의 존재 또는 특정 유형의 상호 종속성을 생성하는 계산 등 다중 패스가 필요할 수 있습니다. Calculation Passes를 참조하십시오.

Essbase에서 CALPARALLEL 메소드를 사용한 병렬 계산이 가능한지 확인하면 Essbase는 계산을 서로 독립적인 더 작은 태스크로 분할합니다. 계산 중에 Essbase는 더 작은 태스크를 동시에 수행합니다.

그러나 패스에 참여하는 공식 간에 복잡한 상호 종속성이 있는 경우 Essbase는 직렬 계산으로 정렬됩니다. 이러한 상호 종속성은 병렬 계산을 불가능하게 만들 수 있습니다.

FIXPARALLEL 메소드가 사용 사례에 더 적합한지 여부를 고려합니다. FIXPARALLEL Parallel Calculation을 참조하십시오.

CALCPARALLEL 병렬 계산 지침

Essbase 아웃라인 구조 및 애플리케이션 설계는 병렬 계산을 사용으로 설정하면 계산 성능이 향상될 수 있는지 여부를 결정합니다. CALCPARALLEL 스타일의 병렬 계산을 활성화하기 전에 다음 지침을 검토하십시오. 이 지침은 모든 이점을 얻을 수 있도록 도와줍니다.

  • 계산에 있는 하나 이상의 공식으로 인해 Essbase가 사용으로 설정된 경우에도 CALCPARALLEL 병렬 계산을 사용하지 못할 수 있습니다. 병렬 계산 설정에 관계없이 직렬 계산을 강제 수행할 수 있는 공식에 대한 설명은 CALCPARALLEL 병렬 계산 및 기타 Essbase 기능 간의 관계를 참조하십시오.

  • 계산 작업은 아웃라인의 마지막 n 희소 차원을 따라 생성됩니다. 태스크를 식별하는 데 사용되는 이러한 희소 차원을 태스크 차원이라고 합니다. 태스크 차원 수 nEssbase에 의해 동적으로 선택되거나, 계산 명령 SET CALCTASKDIMS(또는 애플리케이션 구성 설정 CALCTASKDIMS)에 대한 값을 지정하여 숫자를 대체할 수 있습니다.

    MaxL 문 질의 데이터베이스 DBS-NAME get dbstats dimension에서 보고한 대로 실제 차원 크기에 따라 아웃라인의 희소 차원을 가장 작은 크기에서 가장 큰 크기로 정렬합니다. 이 주문 권장 사항은 계산기 캐시 크기를 최적화하고 다른 아웃라인 권장 사항과 일치하기 위한 권장 사항과 일치합니다. 추가 차원(마지막 희소 차원 이상)을 사용해야 하는 상황에 대한 설명 및 사용된 희소 차원 수를 늘리는 방법에 대한 지침은 병렬 계산에 대한 추가 태스크 식별을 참조하십시오.

  • CALCPARALLEL 병렬 계산은 분할되지 않은 응용 프로그램 및 다음과 같은 분할된 응용 프로그램에서 효과적입니다.

  • 계산 및 데이터 업데이트와 같은 업데이트 트랜잭션은 MDX 쿼리 또는 보고서 스크립트보다 더 많은 자원 소비 요청입니다.

CALCPARALLEL 병렬 계산과 다른 Essbase 기능 간의 관계

Essbase 큐브에서 CALCPARALLEL 병렬 계산을 사용하는 경우 검색 성능, 공식, 계산기 캐시 비트맵 및 투명한 분할 영역과 관련된 제한을 고려하십시오.

검색 성능

최대 병렬 계산 성능을 위해 아웃라인 끝에 가장 큰 희소 차원을 배치하면 검색 성능이 저하될 수 있습니다.

공식 제한

일부 공식이 있으면 직렬 계산이 강제로 수행될 수 있습니다. 다음 공식 배치는 직렬 계산을 강제 시행합니다.

  • 모든 저장된 멤버와 저장된 멤버가 종속될 수 있는 동적 계산 멤버를 포함하는 밀집 멤버의 공식으로, 병렬 계산을 위해 태스크를 식별하는 데 사용되는 차원의 멤버에 종속됩니다.

  • @VAR, @ARRAY, @XREF 또는 @XWRITE를 사용하는 계산 스크립트에 선언된 변수에 대한 참조를 포함하는 공식입니다. 대신 병렬 계산에 FIXPARALLEL을 사용하는 것이 좋습니다.

  • @XREF를 사용하는 희소 차원 멤버 공식과 희소 멤버에 대한 차원이 완전히 계산됩니다. @XREF는 뱃치 계산 중 저장된 다른 멤버에 종속되지 않는 밀집 동적 계산 멤버에 있는 경우 일련번호 계산을 강제 적용하지 않습니다.

  • 순환 종속을 유발하는 멤버 공식입니다. 예를 들어 멤버 A에는 멤버 B를 참조하는 공식이 있고 멤버 B에는 멤버 C를 참조하는 공식이 있고 멤버 C에는 멤버 A를 참조하는 공식이 있습니다.

  • 병렬 처리를 위한 태스크를 식별하는 데 사용되는 차원의 멤버 또는 멤버에 대한 종속성을 가진 밀집 또는 희소 멤버에 대한 공식입니다.

  • 다른 희소 차원의 멤버에 대한 참조를 포함하는 희소 차원 멤버 공식입니다.

병렬 계산을 방지할 수 있는 공식을 사용해야 하는 경우 FIXPARALLEL을 사용하는 것이 좋습니다. 그렇지 않으면 공식의 멤버를 동적 계산으로 표시하거나 계산 범위에서 공식을 제외할 수 있습니다. 공식이 병렬 계산을 방해하는지 확인하려면 애플리케이션 로그를 확인하십시오. 관련 오류 메시지는 CALCPARALLEL 병렬 계산 모니터링을 참조하십시오.

계산기 캐시

계산 패스가 시작될 때 Essbase는 계산기 캐시 크기와 병렬도를 확인한 다음 최대 성능에 적합한 계산기 캐시 비트맵 옵션을 사용합니다. 따라서 병렬 계산에 사용되는 비트맵 옵션은 직렬 계산에 사용되는 비트맵 옵션과 다를 수 있습니다.

예를 들어, Essbase가 직렬 계산을 수행하고 여러 비트맵과 단일 앵커 차원을 사용한다고 가정합니다. 계산기 캐시 크기를 명시적으로 변경하지 않고도 Essbase는 단일 비트맵과 단일 앵커 차원만 사용하여 병렬 계산을 수행할 수 있습니다.

다음과 유사한 항목에 대해 각 계산 패스 시작 시 응용 프로그램 로그를 확인하여 비트맵 옵션을 제어하는 계산기 캐시 모드를 결정할 수 있습니다.

Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.

다중 비트맵 모드에서 병렬 계산을 사용할 때 메모리 사용량이 많을 수 있습니다. 이 경우 구성 설정 PARCALCMULTIPLEBITMAPMEMOPT를 사용하여 다중 비트맵 모드에서 메모리 사용을 최적화할 수 있습니다. 이 설정은 MULTIPLEBITMAPMEMCHECK와 함께 사용하거나 별도로 사용할 수 있습니다. PARCALCMULTIPLEBITMAPMEMOPT를 사용으로 설정하려면 응용 프로그램 구성에 다음을 추가합니다.

PARCALCMULTIPLEBITMAPMEMOPT TRUE

투명한 분할 영역 제한 사항

투명 분할 영역을 사용한 병렬 계산에는 다음과 같은 제한 사항이 있습니다.

  • 대상에서 계산이 수행되지 않는 한 투명 분할 영역 간에 병렬 계산을 사용할 수 없습니다.

  • 태스크 차원을 1로 설정해야 합니다. 이렇게 하려면 SET CALCTASKDIMS 계산 명령 또는 CALCTASKDIMS 구성 설정을 사용합니다.

  • 여러 비트맵을 사용할 수 있도록 계산기 캐시를 늘려야 합니다. 다음과 유사한 항목에 대해 각 계산 패스 시작 시 애플리케이션 로그를 확인하여 비트맵 옵션을 제어하는 계산기 캐시 모드를 식별할 수 있습니다.

    Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.

현재 CALCPARALLEL 설정 확인

Essbase 큐브에 대해 CALCPARALLEL 스타일 병렬 계산이 사용으로 설정되었는지 확인하는 데 사용할 애플리케이션 구성 또는 계산 스크립트를 확인할 수 있습니다.

애플리케이션 레벨에서 CALCPARALLEL 스타일 병렬 계산이 사용으로 설정되었는지 여부를 확인하려면 구성 매개변수 CALCPARALLEL을 검색하고 지정된 값을 확인합니다.

또는 큐브(또는 계산 스크립트)에서 병렬 계산을 위해 FIXPARALLEL 명령 블록을 사용할 수 있습니다.

CALCPARALLEL의 경우 계산을 완료하는 작업을 동시에 수행할 수 있는 스레드 수는 1에서 128 사이의 값으로 지정됩니다. 64비트 플랫폼에서 실행되는 블록 스토리지(BSO) 및 집계 스토리지(ASO) 데이터베이스는 최대 128개의 스레드를 지원합니다.

계산 스크립트가 CALCPARALLEL 스타일 병렬 계산을 설정하는지 여부를 확인하려면 SET CALCPARALLEL 명령을 찾습니다. 스크립트에서 병렬 계산을 두 번 이상 사용 또는 사용 안함으로 설정할 수 있으므로 스크립트를 신중하게 검토하십시오.

CALCPARALLEL 병렬 계산 사용

Essbase 큐브와 함께 CALCPARALLEL 스타일 병렬 계산을 사용하려면 애플리케이션에 대해 사용으로 설정하거나 하나 이상의 계산 스크립트에 대해서만 구현할 수 있습니다.

Essbase 큐브와 함께 CALCPARALLEL 병렬 계산을 사용하려면 다음 방법 중 하나를 사용합니다.

이 워크플로우에 따라 CALCPARALLEL 스타일의 병렬 계산을 사용으로 설정합니다.

  1. 애플리케이션 구성에서 병렬 계산을 사용으로 설정하려면 현재 상태를 확인하여 항목이 있는지 확인합니다. 현재 CALCPARALLEL 설정 확인에 설명된 프로세스를 사용합니다.
  2. 계산 스크립트에 SET CALCPARALLEL을 추가합니다.
  3. 필요한 경우 Essbase에서 두 개 이상의 희소 차원을 사용하여 병렬 계산을 위한 태스크를 식별할 수 있습니다.
  4. 계산을 실행합니다.

참고:

사이트에 필요한 경우 CALCPARALLEL 및 SET CALCPARALLEL 사용을 결합할 수 있습니다. 예를 들어, 서버 레벨에서 CALCPARALLEL을 off로 설정하고 계산 스크립트를 사용하여 필요에 따라 병렬 계산을 사용 및 사용 안함으로 설정할 수 있습니다.

병렬 계산을 위한 추가 작업 식별

기본적으로 Essbase는 반복 기법을 사용하여 CALCPARALLEL 스타일 병렬 계산에 사용할 최적의 태스크 차원 수를 선택합니다.

필요한 경우 Essbase가 CALCPARALLEL 스타일 병렬 계산에 특정 개수의 태스크 차원을 사용하도록 설정할 수 있습니다.

예를 들어, 마지막 희소 차원의 멤버에 FIX 문이 있는 경우 아웃라인의 마지막 다음 희소 차원도 포함할 수 있습니다. 이 두 차원의 각 고유 멤버 조합이 잠재적 태스크로 식별되기 때문에 점점 더 작은 태스크가 생성되어 병렬 처리 및 로드 밸런싱 개선의 기회가 늘어납니다.

병렬 계산을 위한 태스크 차원 수를 지정하려면 다음을 수행합니다.

  1. 확실하지 않은 경우 현재 CALCPARALLEL 설정 확인에 설명된 프로세스를 사용하여 병렬 계산이 사용으로 설정되었는지 확인합니다. CALCPARALLEL이 사용으로 설정되지 않은 경우(또는 계산 스크립트에 사용된 SET CALCPARALLEL) CALCTASKDIMS는 영향을 주지 않습니다.
  2. 선택 사항: Essbase는 병렬 계산에 사용할 태스크 차원의 기본 숫자 n를 선택하고 이 숫자는 애플리케이션 로그 파일에 정보 메시지(예: Parallelizing using [2] task dimensions)로 인쇄됩니다. 기본 n 설정을 대체하려면 응용 프로그램에 대한 CALCTASKDIMS 구성 설정을 추가하거나 수정하거나 계산 스크립트 명령 SET CALCTASKDIMS를 사용합니다.
  3. 계산 스크립트를 실행합니다.

경우에 따라 Essbase는 CALCTASKDIMS 또는 SET CALCTASKDIMS에서 지정한 것보다 적은 수의 차원을 사용하여 태스크를 식별하는 경우도 있습니다.

로그 메시지를 사용하여 CALCPARALLEL 튜닝

로그 메시지를 주의 깊게 분석하면 Essbase가 병렬 계산 프로세스를 태스크로 분할하는 방법을 최적화하는 데 도움이 될 수 있습니다.

CALCPARALLEL 병렬 계산을 사용하는 경우 다음 로그 메시지가 발생할 수 있습니다.

Current selection of task dimensions [n] will generate insufficient number of tasks [n] for parallel calculation. See whether calculation time can be improved by increasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.

이 메시지가 나타나면 병렬 계산 중에 Essbase가 태스크 차원의 수를 늘리지 않도록 재정의합니다. 이로 인해 태스크가 너무 작아질 수 있습니다. 작업이 너무 작아지면 계산 스케줄링 오버헤드가 병렬화의 이점을 능가할 수 있습니다. 그러나 작업이 너무 크면 병렬 계산 스레드가 작업하기에 충분한 작업이 없을 수 있습니다.

다음 잠재적 태스크 차원이 첫 번째 희소 차원이 아닌 경우 SET CALCTASKDIMS 계산 명령(또는 CALCTASKDIMS 구성 설정)을 사용하여 태스크 차원 수를 1씩 늘리고 계산 속도가 향상되는지 여부를 확인합니다. 또한 FIXPARALLEL을 사용하여 CALCPARALLEL과 다른 사용자정의 태스크 선택을 수행하는 것이 좋습니다(FIXPARALLEL 병렬 계산 참조).

Current number of task dimensions [n] for parallel calculation might have caused too many tasks [n] to be generated. See whether calculation time can be improved by decreasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.

병렬 계산의 경우 작업 수가 충분하면 데이터 비대칭의 영향을 줄이는 데 도움이 됩니다. 그러나 태스크가 너무 많으면(적절하게 크기가 조정된 태스크의 경우에도) 스케줄링 오버헤드가 이점보다 클 수 있습니다. Essbase는 최적 범위를 대상으로 합니다. 위의 메시지가 표시되면 Essbase가 태스크 차원을 하나 더 추가하여 권장되는 최소 태스크 수를 충족하려고 시도했음을 의미합니다. 이렇게 하면 태스크 수에 대한 상한 경계가 교차되었을 수 있습니다.

Essbase에서 선택한 마지막 태스크 차원이 유일한 태스크 차원이 아닌 경우 SET CALCTASKDIMS 계산 명령(또는 CALCTASKDIMS 구성 설정)을 사용하여 태스크 차원을 하나씩 줄이고 계산 속도가 향상되는지 확인합니다. 또는 FIXPARALLEL을 사용하여 CALCPARALLEL과 다른 사용자 정의 작업을 선택하는 것이 좋습니다.

CALCPARALLEL 병렬 계산 모니터

애플리케이션 로그에서 병렬 계산과 관련된 이벤트를 볼 수 있습니다. 각 계산 통과에 대해 Essbase는 병렬 계산을 지원하기 위해 애플리케이션 로그에 여러 유형의 정보를 기록합니다.

병렬 계산을 사용할 수 있는 경우

병렬 계산을 사용으로 설정하고 Essbase에서 병렬 계산을 수행할 수 있음을 확인한 경우 Essbase는 애플리케이션 로그에 메시지를 기록합니다.

Calculating in parallel with n threads

nCALCPARALLEL 또는 SET CALCPARALLEL에 지정된 동시 작업 수를 나타냅니다.

공식으로 인해 병렬 계산을 사용할 수 없는 경우

병렬 계산을 방지하는 각 공식(직렬 계산 강제 수행)에 대해 Essbase는 애플리케이션 로그에 메시지를 기록합니다.

Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.

memberName는 관련 공식이 있는 멤버의 이름을 나타냅니다. 애플리케이션 로그에서 해당 메시지를 확인하고 공식 제거를 고려하거나, 가능한 경우 관련 멤버 또는 멤버에 동적 계산 태그를 지정하여 계산 패스에서 기능하지 않도록 할 수 있습니다.

Essbase는 CALCPARALLEL 또는 SET CALCPARALLEL 값이 아닌 데이터를 기반으로 동시에 실행할 수 있는 태스크 수를 지정하는 메시지를 애플리케이션 로그에 기록합니다.

Calculation task schedule [576,35,14,3,2,1]

위의 예제 메시지는 576개의 작업을 동시에 실행할 수 있음을 나타냅니다. 576개 작업이 완료된 후 35개 이상의 작업을 동시에 수행할 수 있습니다.

병렬 계산의 이점은 처음 몇 단계에서 가장 효과적이며 동시 작업이 더 적어질수록 감소합니다.

병렬도는 작업 스케줄의 작업 수에 따라 다릅니다. 개수가 클수록 병렬로 실행할 수 있는 작업이 많아지고 성능이 향상됩니다.

병렬 계산으로 인해 빈 작업이 발생하는 경우

Essbase는 애플리케이션 로그 파일에 비어 있는 태스크 수를 나타내는 메시지를 기록합니다(계산이 포함되지 않음).

Info(1012681) Empty tasks [291,1,0,0,0,0]

위의 예에서 Essbase는 레벨 0의 태스크 중 291개가 비어 있음을 나타냅니다.

계산 태스크 스케줄에 지정된 태스크에 대한 빈 태스크 비율이 50%보다 큰 경우(예: 291/576) 데이터 모델의 높은 희소성으로 인해 병렬화로 인해 성능이 향상되지 않을 수 있습니다.

고밀도 희소 할당을 변경하여 빈 작업 수를 줄이고 병렬 계산으로 인한 성능 향상을 실현할 수 있습니다.