워커스레드
WORKERTHREADS 구성 설정을 사용하면 병렬 Essbase 작업에 대해 스레드 풀 내에서 사용 가능한 스레드 수를 늘리거나 줄일 수 있습니다.
구문
WORKERTHREADS [appname] value-
appname(선택 사항) - 애플리케이션 이름입니다. 응용 프로그램을 지정하지 않으면 지정된 수의 스레드가 모든 응용 프로그램에 적용됩니다.
-
value - 스레드 풀에서 사용할 수 있도록 설정할 스레드 수입니다. 최소값은 5입니다. 최대값은 2048입니다. 기본값은 WORKERTHREADS 설정이 없는 경우 SERVERTHREADS 값의 절반입니다.
설명
과거 Essbase는 병렬 계산, 병렬 데이터 로드 및 병렬 재구조화와 같은 병렬 작업에 대한 스레드를 동적으로 생성했습니다. 하지만 릴리스 11.1.2.4.000부터 다음 병렬 작업은 스레드를 동적으로 생성하지 않고 미리 생성된 스레드 풀에서 설정된 수의 스레드를 사용합니다.
-
CALCPARALLEL 또는 FIXPARALLEL을 사용하여 병렬 계산
-
집계 저장 영역 및 블록 저장 영역 큐브에 대한 병렬 데이터 로드
-
블록 저장 영역 큐브의 경우 병렬 엑스포트
-
병렬 재구성
스레드 작업에 대한 지침
Oracle은 시스템 구조에 따라 다음 설정을 권장합니다.
표 2-1 스레드 작업에 대한 지침
| 매개변수 | 64비트(16개 코어) | 64비트(32개 코어) | 64비트(16개 코어) 및 2개 큐브 | Oracle Exalytics In-Memory Machine, 40코어, X2-4 | Oracle Exalytics In-Memory Machine, SPARC 128 코어 | Oracle Exalytics In-Memory Machine, 60코어, X4-4 |
|---|---|---|---|---|---|---|
| 서버스레드 | 100각주 1 | 100각주 1 | 100각주 1 | 100각주 1 | 200각주 1 | 120각주 1 |
| 워커스레드 | 50 | 50 | 50 | 50 | 100 | 60 |
| 에이전트 스레드 | 30각주 1 | 30각주 1 | 30각주 1 | 30각주 1 | 30각주 1 | 30각주 1 |
| DLTHREADSPREPARE | 2 | 2 | 2 | 2 각주 2 | 2 각주 2 | 2 각주 2 |
| DLTHREADSWRITE | 2각주 3 | 2각주 3 | 2각주 3 | 2각주 3 | 2각주 3 | 2각주 3 |
| 수출 스레드각주 4 | 8 | 8 | 8 | 40 | 40 | 40 |
| 재구성스레드 | 4 | 4 | 4 | 8 | 8 | 8 |
| CALCPARALLEL 최대값각주 5 | 8 | 8 | 8 | 32각주 6 | 32 | 32각주 6 |
| FIXPARALLEL 최대값각주 7 | 8 | 8 | 8 | 32각주 6 | 32 | 32각주 6 |
Footnote 1
Partitioning 및 동시성을 기반으로 조정이 필요할 수 있음
Footnote 2
집계 스토리지 24개
Footnote 3
.txt 로드를 사용하는 경우 1
Footnote 4
EXPORTTHREADS를 설정하는 것 외에도 데이터 엑스포트에 여러 데이터 파일을 지정해야 합니다.
Footnote 5
SET CALCPARALLEL은 계산 스크립트에서 설정해야 합니다.
Footnote 6
16 세 개 이상의 큐브가 동시작업 계산을 실행하는 경우
Footnote 7
계산 스크립트에서 FIXPARALLEL을 설정해야 합니다.
참고
-
WORKERTHREADS는 스레드 풀에서 사용 가능한 스레드 수를 조작하는 구성 설정입니다. 이 가용성 임계값이 구성에서 명시적으로 설정되는지 아니면 기본값인
SERVERTHREADS/2로 유지되는지 여부입니다. 유효 설정이 요청된 병렬 작업에서 요구하는 것보다 미만인 경우 Essbase는 요청된 작업의 병렬화를 암시적으로 낮춰 스레드 풀의 매개변수에 맞춥니다.예를 들어, 데이터 로드를 고려합니다.
파이프라인의 개념은 Essbase 데이터 로드와 관련이 있습니다. 파이프라인은 직렬 또는 병렬로 실행될 수 있는 일련의 메모리 데이터 처리 요소입니다. Essbase 데이터 로드 작업은 5단계로 구성된 파이프라인을 사용합니다. 따라서 모든 데이터 로드 작업에는 최소 5개의 스레드가 필요합니다.
DLTHREADSPREPARE 또는 DLTHREADSWRITE를 사용하는 경우 필요한 최소 데이터 로드 스레드 수가 늘어납니다. 예를 들어, DLTHREADSPREPARE를 4로 설정하고 DLTHREADSWRITE를 2로 설정한 경우 9개의 스레드(최소 5와 4의 증가)가 필요합니다.
앞의 경우처럼 모든 파이프라인에 대해 요청된 스레드 수가 9이지만 WORKERTHREADS가 8로만 설정된 경우 Essbase는 암시적으로 DLTHREADSPREPARE 및 DLTHREADSWRITE를 1로 설정하고 총 스레드 요구사항이 5(최소 및 기본값)인 데이터 로드가 실행됩니다.
-
마찬가지로 병렬 계산, 병렬 엑스포트 또는 병렬 재구성을 실행하는 경우 이러한 작업은 사용 가능한 스레드 수를 초과하지 않는 병렬화로 실행됩니다.
예:
-
WORKERTHREADS가 8로 설정된 상태에서 CALCPARALLEL 16을 시도하면 병렬 계산이 CALCPARALLEL 8로 실행됩니다.
-
WORKERTHREADS가 5로 설정된 상태에서 EXPORTTHREADS 12를 시도하면 병렬 엑스포트가 EXPORTTHREADS 5로 실행됩니다.
-
WORKERTHREADS가 16으로 설정되어 있고 RESTRUCTURETHREADS 32를 시도하면 병렬 재구조화가 RESTRUCTURETHREADS 16으로 실행됩니다.
-
-
동일한 응용 프로그램에서 동시 병렬 작업을 실행하는 경우 총 병렬화는 스레드 풀의 스레드 수에 의해 제한됩니다. 예를 들어, WORKERTHREADS를 16으로 설정하고 CALCPARALLEL 16의 동시 요청 2개를 실행하는 경우 두 계산 요청은 16개의 스레드를 공유합니다. 계산은 최대 16개의 스레드를 사용하여 실행되지만, 스레드 풀 16을 공유하기 때문에 요청된 용량의 절반 가까이에서 실행되고 있습니다.
-
애플리케이션 내에 여러 큐브가 있는 경우 Oracle은 한 큐브에 필요한 병렬 스레드보다 WORKERTHREADS를 약간 더 높게 설정할 것을 권장합니다. 예를 들어, WORKERTHREADS가 16으로 설정되어 있고 시스템의 CPU 수가 16이면 CALCPARALLEL 값을 16보다 작게 설정해야 합니다.
-
다른 서버의 큐브가 @XREF 또는 @XWRITE를 사용하여 서로 참조하는 경우 상호 참조의 소스 큐브에 병렬 계산 스레드(CALCPARALLEL 또는 FIXPARALLEL)보다 많은 수의 SERVERTHREADS가 있는지 확인하십시오.
-
병렬 작업에 대한 스레드 풀링을 사용하면 Essbase 애플리케이션을 시작하기 위해 리소스를 늘려야 합니다. 시작 중
Unable to Request Server Thread오류가 발생하는 경우 프로세스당 스레드 수 및 시스템의 총 스레드 수를 제어하는 운영 체제 설정을 조정합니다(예: Linux의 경우 ulimit를 사용하여 nproc 조정).
예
WORKERTHREADS Sample 32