Cálculo Paralelo CALCPARALLEL
Para alterar do cálculo serial padrão do Essbase para o cálculo paralelo CALCPARALLEL, altere uma ou duas configurações e reinicie o servidor ou adicione uma instrução ao script de cálculo.
Para obter instruções, consulte Ativar Cálculo Paralelo CALCPARALLEL.
Os próximos tópicos discutem os detalhes do cálculo paralelo.
Análise da Viabilidade do CALPARALLEL
O Essbase avalia se o uso do método CALPARALLEL de cálculo paralelo é possível antes de cada passagem de cálculo para a qual você o ativou.
O Essbase analisa o outline e o cálculo solicitado para cada passagem de cálculo. Lembre-se de que um cálculo pode exigir várias passagens. Algumas situações podem criar a necessidade de várias passagens, incluindo o cálculo dinâmico, a presença de um membro marcado como duas passagens ou cálculos que criam certos tipos de interdependências. Consulte Aprovações de Cálculo.
Se o Essbase determinar que o cálculo paralelo usando o método CALPARALLEL é possível, o Essbase dividirá o cálculo em tarefas menores que são independentes umas das outras. Durante o cálculo, o Essbase executa as tarefas menores simultaneamente.
No entanto, o Essbase recorre ao cálculo serial se houver interdependências complexas entre fórmulas que participam da passagem. Tais interdependências podem tornar impossível o cálculo paralelo.
Considere se o método FIXPARALLEL pode ser mais adequado ao seu caso de uso. Consulte Cálculo Paralelo FIXPARALLEL.
Diretrizes de Cálculo Paralelo CALCPARALLEL
A estrutura do outline do Essbase e o design do aplicativo determinam se a ativação do cálculo paralelo pode melhorar o desempenho do cálculo. Antes de ativar o cálculo paralelo no estilo CALCPARALLEL, revise as seguintes diretrizes, o que o ajudará a obter o benefício total.
-
Uma ou mais fórmulas presentes em um cálculo podem impedir que o Essbase use o cálculo paralelo CALCPARALLEL, mesmo que esteja ativado. Para obter uma descrição das fórmulas que podem forçar o cálculo serial, independentemente das configurações de cálculo paralelo, consulte Relacionamento entre Cálculo Paralelo CALCPARALLEL e Outros Recursos do Essbase.
-
As tarefas de cálculo são geradas ao longo das últimas n dimensões esparsas de um outline. Essas dimensões esparsas usadas para identificar tarefas são chamadas de dimensões de tarefa. O número de dimensões de tarefa, n, é selecionado dinamicamente pelo Essbase ou você pode substituir o número especificando um valor para o comando de cálculo SET CALCTASKDIMS (ou configuração de aplicativo CALCTASKDIMS).
Ordene as dimensões esparsas em um outline do menor para o maior, com base no tamanho real da dimensão (conforme reportado pela instrução MaxL dimensão get dbstats do banco de dados de consulta DBS-NAME). Esta recomendação de ordenação é consistente com as recomendações para otimizar o tamanho do cache da calculadora e consistente com outras recomendações de estrutura. Para obter uma descrição das situações que podem precisar usar dimensões adicionais (mais do que a última dimensão esparsa) e instruções sobre como aumentar o número de dimensões esparsas usadas, consulte Identificar Tarefas Adicionais para Cálculo Paralelo.
-
O cálculo paralelo CALCPARALLEL é eficaz em aplicações não particionadas e estas aplicações particionadas:
-
Partições replicadas
-
Partições transparentes se o cálculo ocorrer no banco de dados de destino. O número de dimensões esparsas especificado por SET CALCTASKDIMS em um script de cálculo deve ser definido como 1. Para obter informações sobre limitações impostas pelo uso de cálculo paralelo com partições transparentes, consulte Relacionamento entre Cálculo Paralelo CALCPARALLEL e Outros Recursos do Essbase; para obter informações sobre o uso de SET CALCTASKDIMS, consulte Identificar Tarefas Adicionais para Cálculo Paralelo.
-
-
As transações de atualização, como cálculos e atualizações de dados, são mais solicitações que consomem recursos do que consultas MDX ou scripts de relatório.
Relação entre Cálculo Paralelo CALCPARALLEL e Outros Recursos do Essbase
Se você estiver usando o cálculo paralelo CALCPARALLEL no cubo do Essbase, considere limitações relativas ao desempenho de recuperação, fórmulas, bitmap de cache da calculadora e partições transparentes.
Desempenho de Recuperação
Colocar a maior dimensão esparsa no final do outline para desempenho máximo de cálculo paralelo pode retardar o desempenho de recuperação.
Limitações da Fórmula
A presença de algumas fórmulas pode forçar o cálculo serial. As seguintes colocações de fórmula provavelmente forçarão o cálculo serial:
-
Uma fórmula em um membro denso, incluindo todos os membros armazenados e quaisquer membros de Cálculo Dinâmico dos quais um membro armazenado possa ser dependente, que causa uma dependência de um membro da dimensão que é usada para identificar tarefas para cálculo paralelo.
-
Uma fórmula que contém referências a variáveis declaradas em um script de cálculo que usa @VAR, @ARRAY, @XREF ou @XWRITE. Considere usar FIXPARALLEL para cálculo paralelo.
-
Uma fórmula de membro de dimensão esparsa usando @XREF, e a dimensão para o membro esparso é totalmente calculada. @XREF não força o cálculo serial quando está em membros de Cálculo Dinâmico denso que não dependem de outros membros armazenados durante o cálculo do lote.
-
Fórmula de membro que causa uma dependência circular. Por exemplo, o membro A tem uma fórmula que se refere ao membro B, e o membro B tem uma fórmula que se refere ao membro C e o membro C tem uma fórmula que se refere ao membro A.
-
Uma fórmula em um membro denso ou esparso com uma dependência de um membro ou membros da dimensão usada para identificar tarefas para processamento paralelo.
-
Uma fórmula de membro de dimensão esparsa que contém referências a membros de outras dimensões esparsas.
Se você precisar usar uma fórmula que possa impedir o cálculo paralelo, considere o uso de FIXPARALLEL. Caso contrário, você poderá marcar o membro da fórmula como Cálculo Dinâmico ou excluir a fórmula do escopo do cálculo. Para verificar se uma fórmula está impedindo o cálculo paralelo, verifique o log do aplicativo. Para obter mensagens de erro relevantes, consulte Monitorar Cálculo Paralelo CALCPARALLEL.
Cache da Calculadora
No início de uma passagem de cálculo, o Essbase verifica o tamanho do cache da calculadora e o grau de paralelismo e, em seguida, usa a opção de bitmap do cache da calculadora apropriada para o desempenho máximo. Portanto, a opção bitmap usada para o cálculo paralelo pode ser diferente da usada para o cálculo serial.
Por exemplo, suponha que o Essbase execute um cálculo serial e use vários bitmaps e uma única dimensão de ancoragem. Sem a alteração explícita do tamanho do cache da calculadora, o Essbase pode executar um cálculo paralelo usando apenas um bitmap e uma única dimensão de ancoragem.
Você pode determinar o modo de cache da calculadora que controla as opções de bitmap, verificando o log do aplicativo no início de cada cálculo para uma entrada semelhante à seguinte:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.Ao usar o cálculo paralelo em vários modos de bitmap, você pode encontrar alto uso de memória. Em caso afirmativo, você pode usar a definição de configuração PARCALCMULTIPLEBITMAPMEMOPT para otimizar o uso de memória em vários modos de bitmap. Esta configuração pode ser usada com, ou separadamente, MULTIPLEBITMAPMEMCHECK. Para ativar PARCALCMULTIPLEBITMAPMEMOPT, adicione o seguinte à configuração do seu aplicativo:
PARCALCMULTIPLEBITMAPMEMOPT TRUELimitações da Partição Transparente
O cálculo paralelo com partições transparentes tem as seguintes limitações:
-
Não é possível usar o cálculo paralelo em partições transparentes, a menos que o cálculo ocorra no destino.
-
Defina as dimensões da tarefa como 1. Para fazer isso, use o comando de cálculo SET CALCTASKDIMS ou a configuração CALCTASKDIMS.
-
Você deve aumentar o cache da calculadora para que vários bitmaps possam ser usados. Você pode identificar o modo de cache da calculadora que controla as opções de bitmap verificando o log do aplicativo no início de cada cálculo para uma entrada semelhante à seguinte:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
Verificar Configurações CALCPARALLEL Atuais
É possível verificar a configuração do aplicativo ou o script de cálculo que você planeja usar para ver se o cálculo paralelo de estilo CALCPARALLEL está ativado para o cubo do Essbase.
Para verificar se o cálculo paralelo de estilo CALCPARALLEL foi ativado no nível do aplicativo, procure o parâmetro de configuração CALCPARALLEL e verifique seu valor especificado.
Como alternativa, o cubo (ou scripts de cálculo) pode estar usando blocos de comando FIXPARALLEL para cálculo paralelo.
Para CALCPARALLEL, o número de threads que podem executar tarefas simultaneamente para concluir um cálculo é especificado por um valor entre 1 e 128. Os bancos de dados de armazenamento em blocos (BSO) e armazenamento agregado (ASO) executados em plataformas de 64 bits suportam até 128 threads.
Para verificar se um script de cálculo define o cálculo paralelo de estilo CALCPARALLEL, procure o comando SET CALCPARALLEL. Revise o script com cuidado, pois ele pode ativar ou desativar o cálculo paralelo mais de uma vez.
Ativar Cálculo Paralelo CALCPARALLEL
Para usar o cálculo paralelo no estilo CALCPARALLEL com o cubo do Essbase, você pode habilitá-lo para o aplicativo ou pode implementá-lo apenas para um ou mais scripts de cálculo.
Para usar o cálculo paralelo CALCPARALLEL com o cubo do Essbase, use um destes métodos:
-
Adicione ou edite as definições de configuração do aplicativo CALCPARALLEL e CALCTASKDIMS.
-
Use os comandos de cálculo SET CALCPARALLEL e SET CALCTASKDIMS em um script de cálculo.
Siga este fluxo de trabalho para ativar o cálculo paralelo no estilo CALCPARALLEL:
Dica:
Você pode combinar o uso de CALCPARALLEL e SET CALCPARALLEL se o site o exigir. Por exemplo, é possível definir CALCPARALLEL como desativado no nível do servidor e usar um script de cálculo para ativar e desativar o cálculo paralelo conforme necessário.
Identificar Tarefas Adicionais para Cálculo Paralelo
Por padrão, o Essbase usa uma técnica iterativa para selecionar o número ideal de dimensões de tarefa a serem usadas para o cálculo paralelo no estilo CALCPARALLEL.
Por exemplo, se você tiver uma instrução FIX em um membro da última dimensão esparsa, poderá incluir a próxima à última dimensão esparsa do outline também. Como cada combinação exclusiva de membros dessas duas dimensões é identificada como uma tarefa potencial, mais e menos tarefas são criadas, aumentando as oportunidades de processamento paralelo e melhorando o balanceamento de carga.
Para especificar o número de dimensões de tarefa para cálculo paralelo:
- Se você não tiver certeza, verifique se o cálculo paralelo está ativado, usando o processo descrito em Verificar Configurações CALCPARALLEL Atuais. Sem a opção CALCPARALLEL ativada (ou SET CALCPARALLEL usada em um script de cálculo), CALCTASKDIMS não tem efeito.
- Opcional: O Essbase seleciona um número padrão, n, de dimensões de tarefa a serem usadas para cálculo paralelo e esse número é impresso no arquivo de log do aplicativo como uma mensagem informativa; por exemplo:
Parallelizing using [2] task dimensions. Para substituir a configuração padrão n, adicione ou modifique a configuração CALCTASKDIMS para o aplicativo ou use o comando de script de cálculo SET CALCTASKDIMS. - Execute o script de cálculo.
Em alguns casos, o Essbase usa menos dimensões para identificar tarefas do que o especificado por CALCTASKDIMS ou SET CALCTASKDIMS.
Ajustar CALCPARALLEL com Mensagens de Log
Uma análise cuidadosa das mensagens de log pode ajudá-lo a otimizar como o Essbase divide os processos de cálculo paralelo em tarefas.
Se você estiver usando o cálculo paralelo CALCPARALLEL, poderá encontrar as seguintes mensagens de log:
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.
Se essa mensagem for encontrada, isso significa que, durante um cálculo paralelo, o Essbase se absteve de aumentar o número de dimensões de tarefa, caso isso tenha resultado em tarefas muito pequenas. Quando as tarefas se tornam muito pequenas, a sobrecarga de programação de cálculo pode ultrapassar os benefícios do paralelismo. No entanto, quando as tarefas são muito grandes, pode não haver tarefas suficientes para que os threads de cálculo paralelo funcionem.
Se a próxima dimensão de tarefa potencial não for a primeira dimensão esparsa, considere aumentar o número de dimensões de tarefa em um, usando o comando de cálculo SET CALCTASKDIMS (ou a configuração CALCTASKDIMS), e observe se isso melhora a velocidade do cálculo. Além disso, considere o uso de FIXPARALLEL para fazer seleções de tarefas personalizadas diferentes de CALCPARALLEL (consulte Cálculo Paralelo de 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.
Para o cálculo paralelo, ter um número suficiente de tarefas ajuda a reduzir os efeitos da distorção de dados. No entanto, muitas tarefas (mesmo para tarefas de tamanho adequado) podem fazer com que a sobrecarga de agendamento supere os benefícios. O Essbase tem como alvo um intervalo ideal. Se você vir a mensagem acima, isso significa que o Essbase tentou atender ao número mínimo recomendado de tarefas adicionando mais uma dimensão de tarefa; ao fazer isso, é possível que o limite superior da contagem de tarefas tenha sido ultrapassado.
Se a última dimensão de tarefa selecionada pelo Essbase não for a única dimensão de tarefa, considere diminuir as dimensões de tarefa em um, usando o comando de cálculo SET CALCTASKDIMS (ou a definição de configuração CALCTASKDIMS) e observe se isso melhora a velocidade do cálculo. Como alternativa, considere usar FIXPARALLEL para fazer seleções de tarefas personalizadas que sejam diferentes de CALCPARALLEL.
Monitorar Cálculo Paralelo CALCPARALLEL
Você pode exibir eventos relacionados ao cálculo paralelo no log do aplicativo. Para cada passagem de cálculo, o Essbase grava vários tipos de informações no log do aplicativo para suportar o cálculo paralelo.
Quando o Cálculo Paralelo Pode ser Usado
Se você tiver ativado o cálculo paralelo e o Essbase tiver determinado que o cálculo paralelo pode ser executado, o Essbase gravará uma mensagem no log do aplicativo:
Calculating in parallel with n threadsn representa o número de tarefas simultâneas especificadas em CALCPARALLEL ou SET CALCPARALLEL.
Quando o Cálculo Paralelo Não Pode Ser Usado Devido a uma Fórmula
Para cada fórmula que impede o cálculo paralelo (força o cálculo serial), o Essbase grava uma mensagem no log do aplicativo:
Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.memberName representa o nome do membro em que existe a fórmula relevante. Você pode procurar essas mensagens no log do aplicativo e considerar remover a fórmula ou, se possível, marcar os membros relevantes como Cálculo Dinâmico para que eles não sejam exibidos na passagem de cálculo.
O Essbase grava uma mensagem no log do aplicativo especificando o número de tarefas que podem ser executadas simultaneamente (com base nos dados, não no valor de CALCPARALLEL ou SET CALCPARALLEL):
Calculation task schedule [576,35,14,3,2,1]O exemplo de mensagem acima indica que 576 tarefas podem ser executadas simultaneamente. Após a conclusão das 576 tarefas, mais 35 podem ser executadas simultaneamente, e assim por diante.
O benefício do cálculo paralelo é maior nas primeiras etapas e diminui à medida que menos tarefas simultâneas são executadas.
O grau de paralelismo depende do número de tarefas no cronograma de tarefas. Quanto maior o número, mais tarefas podem ser executadas em paralelo e maiores os ganhos de desempenho.
Quando o Cálculo Paralelo Resulta em Tarefas Vazias
O Essbase grava uma mensagem no arquivo de log do aplicativo indicando quantas tarefas estão vazias (não contêm cálculos):
Info(1012681) Empty tasks [291,1,0,0,0,0]No exemplo acima, o Essbase indica que 291 das tarefas no nível 0 estavam vazias.
Se a proporção de tarefas vazias para as tarefas especificadas no cronograma de tarefas de cálculo for maior que 50% (por exemplo, 291 / 576), o paralelismo pode não estar dando a você um desempenho melhor por causa da alta dispersão no modelo de dados.
Você pode alterar atribuições densa-esparsas para reduzir o número de tarefas vazias e aumentar os ganhos de desempenho do cálculo paralelo.