THREADS DE COLABORAÇÃO
A definição de configuração WORKERTHREADS permite que você aumente ou diminua o número de threads disponíveis no pool de threads para operações paralelas do Essbase.
Sintaxe
WORKERTHREADS [appname] value-
appname (opcional) — Nome do aplicativo. Se você não especificar um aplicativo, o número especificado de threads se aplicará a todos os aplicativos.
-
value — O número de threads a serem disponibilizados no pool de threads. O valor mínimo é 5. O valor máximo é 2048. O valor padrão, se a configuração WORKERTHREADS não estiver presente, será metade do valor SERVERTHREADS.
Descrição
Historicamente, os threads criados dinamicamente pelo Essbase para operações paralelas, como cálculo paralelo, carregamento de dados paralelo e reestruturação paralela. No entanto, a partir da Versão 11.1.2.4.000, as seguintes operações paralelas não criam threads dinamicamente, mas usam um número definido de threads de um pool pré-criado de threads:
-
Cálculo paralelo, com CALCPARALLEL ou FIXPARALLEL
-
Carga de dados paralela, para armazenamento agregado e cubos de armazenamento em blocos
-
Exportação paralela, para cubos de armazenamento em blocos
-
Reestruturação paralela
Diretrizes para Operações Encadeadas
A Oracle recomenda as seguintes configurações, dependendo da arquitetura do sistema.
Tabela 2-1 Diretrizes para Operações Encadeadas
| Parâmetro | 64 bits (16 núcleos) | 64 bits (32 núcleos) | 64 bits (16 núcleos) e dois cubos | Oracle Exalytics In-Memory Machine, 40 núcleos, X2-4 | Oracle Exalytics In-Memory Machine, núcleo do SPARC 128 | Oracle Exalytics In-Memory Machine, 60 núcleos, X4-4 |
|---|---|---|---|---|---|---|
| THREADS DE SERVIDOR | 100Rodapé 1 | 100Rodapé 1 | 100Rodapé 1 | 100Rodapé 1 | 200Rodapé 1 | 120Rodapé 1 |
| THREADS DE COLABORAÇÃO | 50 | 50 | 50 | 50 | 100 | 60 |
| THREADS DO AGENTE | 30Rodapé 1 | 30Rodapé 1 | 30Rodapé 1 | 30Rodapé 1 | 30Rodapé 1 | 30Rodapé 1 |
| PREPARAÇÃO DE DLTHREADS | 2 | 2 | 2 | 2 Rodapé 2 | 2 Rodapé 2 | 2 Rodapé 2 |
| DLTHREADSWRITE | 2Rodapé 3 | 2Rodapé 3 | 2Rodapé 3 | 2Rodapé 3 | 2Rodapé 3 | 2Rodapé 3 |
| EXPORTTHREADSRodapé 4 | 8 | 8 | 8 | 40 | 40 | 40 |
| THREADS DE REESTRUTURAÇÃO | 4 | 4 | 4 | 8 | 8 | 8 |
| CALCPARALLEL máximoRodapé 5 | 8 | 8 | 8 | 32Rodapé 6 | 32 | 32Rodapé 6 |
| Máximo de FIXPARALLELRodapé 7 | 8 | 8 | 8 | 32Rodapé 6 | 32 | 32Rodapé 6 |
Rodapé 1
Pode precisar de ajuste com base no particionamento e na simultaneidade
Rodapé 2
24 no armazenamento agregado
Rodapé 3
1 se estiver usando carga .txt
Rodapé 4
Além de definir EXPORTTHREADS, você deve especificar vários arquivos de dados na exportação de dados
Rodapé 5
SET CALCPARALLEL deve ser definido no script de cálculo
Rodapé 6
16 se três ou mais cubos estiverem executando cálculos simultâneos
Rodapé 7
FIXPARALLEL deve ser definido no script de cálculo
Notas
-
WORKERTHREADS é uma definição de configuração para manipular o número de threads disponíveis no pool de threads. Se esse limite de disponibilidade for definido explicitamente na configuração ou deixado para seu valor padrão de
SERVERTHREADS/2, se a definição efetiva for menor que a exigida por uma operação paralela solicitada, o Essbase reduzirá implicitamente o paralelismo da operação solicitada para que ela se ajuste aos parâmetros do pool de threads.Por exemplo, considere carregar dados:
O conceito de um pipeline é relevante para carregamentos de dados do Essbase. Um pipeline é uma série de elementos de processamento de dados na memória que podem ser executados em série ou em paralelo. Uma operação de carregamento de dados do Essbase usa um pipeline que consiste em 5 estágios. Portanto, todas as operações de carregamento de dados precisam de no mínimo 5 threads.
Se você usar DLTHREADSPREPARE ou DLTHREADSWRITE, isso aumentará o número mínimo de threads de carregamento de dados necessários. Por exemplo, se você definir DLTHREADSPREPARE como 4 e DLTHREADSWRITE como 2, será necessário 9 threads (o mínimo 5, mais o aumento de 4).
Se o número de threads solicitados para todos os pipelines for 9, como no caso anterior, mas WORKERTHREADS estiver definido como apenas 8, o Essbase definirá implicitamente DLTHREADSPREPARE e DLTHREADSWRITE como 1, e o carregamento de dados será executado com um requisito de thread total de 5 (o mínimo e o padrão).
-
Da mesma forma, se você executar um cálculo paralelo, uma exportação paralela ou uma reestruturação paralela, essas operações serão executadas com paralelismo que não exceda o número de threads disponíveis.
Por exemplo:
-
Se WORKERTHREADS estiver definido como 8 e você tentar CALCPARALLEL 16, o cálculo paralelo será executado como CALCPARALLEL 8.
-
Se WORKERTHREADS estiver definido como 5 e você tentar EXPORTTHREADS 12, a exportação paralela será executada como EXPORTTHREADS 5.
-
Se WORKERTHREADS estiver definido como 16 e você tentar RESTRUCTURETHREADS 32, a reestruturação paralela será executada como RESTRUCTURETHREADS 16.
-
-
Se você executar operações paralelas simultâneas no mesmo aplicativo, o paralelismo total será limitado pelo número de threads no pool de threads. Por exemplo, se você definir WORKERTHREADS como 16 e executar duas solicitações simultâneas de CALCPARALLEL 16, as duas solicitações de cálculo compartilharão os 16 threads. Os cálculos serão executados usando até 16 threads, mas como eles compartilham o pool de threads de 16, eles estão sendo executados em quase metade da capacidade solicitada.
-
Se você tiver vários cubos em um aplicativo, a Oracle recomenda definir WORKERTHREADS um pouco mais alto do que os threads paralelos necessários para um cubo. Por exemplo, se WORKERTHREADS estiver definido como 16 e o número de CPUs no sistema for 16, você deverá definir o valor CALCPARALLEL como menor que 16.
-
Se os cubos em diferentes servidores fizerem referência uns aos outros usando @XREF ou @XWRITE, certifique-se de que o cubo de origem da referência cruzada tenha um número maior de SERVERTHREADS do que os threads de cálculo paralelos (CALCPARALLEL ou FIXPARALLEL).
-
Com o pool de threads para operações paralelas, são necessários mais recursos para iniciar um aplicativo do Essbase. Se você encontrar o erro
Unable to Request Server Threaddurante a inicialização, ajuste as definições do sistema operacional que controlam o número de threads por processo e o número total de threads no sistema (por exemplo, no Linux, ajuste nproc usando ulimit).
Exemplo
WORKERTHREADS Sample 32Consulte Também
FIXPARALLEL...ENDFIXPARALLEL (bloco de comando de cálculo)