Calcolo parallelo CALCPARALLEL
Per passare dal calcolo seriale predefinito di Essbase al calcolo parallelo CALCPARALLEL, modificare una o due impostazioni di configurazione e riavviare il server oppure aggiungere un'istruzione allo script di calcolo.
Per istruzioni, vedere Abilita calcolo parallelo CALCPARALLEL.
Gli argomenti successivi illustrano i dettagli del calcolo parallelo.
Analisi della fattibilità di CALPARALLEL
Essbase valuta se è possibile utilizzare il metodo CALPARALLEL di calcolo parallelo prima di ogni passaggio di calcolo per il quale è stato abilitato.
Essbase analizza il profilo e il calcolo richiesti per ogni passaggio di calcolo. Ricorda che un calcolo può richiedere più passaggi. Alcune situazioni possono creare la necessità di più passaggi, tra cui il calcolo dinamico, la presenza di un membro contrassegnato come a due passaggi o calcoli che creano determinati tipi di interdipendenze. Vedere Passaggi calcolo.
Se Essbase determina che è possibile eseguire il calcolo parallelo utilizzando il metodo CALPARALLEL, Essbase divide il calcolo in task più piccoli indipendenti l'uno dall'altro. Durante il calcolo, Essbase esegue i task più piccoli contemporaneamente.
Tuttavia, Essbase utilizza il calcolo seriale se esistono interdipendenze complesse tra formule che partecipano al passaggio. Tali interdipendenze possono rendere impossibile il calcolo parallelo.
Considerare se il metodo FIXPARALLEL potrebbe essere più adatto al caso d'uso. Vedere Calcolo parallelo FIXPARALLEL.
Linee guida per il calcolo parallelo CALCPARALLEL
La struttura del profilo e la progettazione dell'applicazione di Essbase determinano se l'abilitazione del calcolo parallelo può migliorare le prestazioni del calcolo. Prima di abilitare il calcolo parallelo in stile CALCPARALLEL, rivedere le seguenti linee guida, che consentono di ottenere il massimo vantaggio.
-
Una o più formule presenti in un calcolo possono impedire a Essbase di utilizzare il calcolo parallelo CALCPARALLEL anche se è abilitato. Per una descrizione delle formule che possono forzare il calcolo seriale indipendentemente dalle impostazioni di calcolo parallelo, vedere Relazione tra il calcolo parallelo CALCPARALLEL e altre funzioni Essbase.
-
I task di calcolo vengono generati lungo le ultime dimensioni sparse n di un profilo. Queste dimensioni sparse utilizzate per identificare i task sono denominate dimensioni task. Il numero di dimensioni task, n, viene selezionato in modo dinamico da Essbase oppure è possibile sostituire il numero specificando un valore per il comando di calcolo SET CALCTASKDIMS (o l'impostazione di configurazione dell'applicazione CALCTASKDIMS).
Ordinare le dimensioni sparse in un profilo dal più piccolo al più grande, in base alle dimensioni effettive della dimensione (come riportato dall'istruzione MaxL database query DBS-NAME, recupero dimensione statistiche database). Questo suggerimento per l'ordinazione è coerente con i suggerimenti per l'ottimizzazione delle dimensioni della cache della calcolatrice e coerente con altri suggerimenti sui profili. Per una descrizione delle situazioni che potrebbero dover utilizzare dimensioni aggiuntive (più dell'ultima dimensione sparsa) e per istruzioni su come aumentare il numero di dimensioni sparse utilizzate, vedere Identificazione di task aggiuntivi per il calcolo parallelo.
-
Il calcolo parallelo CALCPARALLEL è efficace nelle applicazioni non partizionate e nelle seguenti applicazioni partizionate:
-
Partizioni replicate
-
Partizioni trasparenti se il calcolo viene eseguito nel database di destinazione. Il numero di dimensioni sparse specificate da SET CALCTASKDIMS in uno script di calcolo deve essere impostato su 1. Per informazioni sulle limitazioni imposte dall'uso del calcolo parallelo con partizioni trasparenti, vedere Relazione tra il calcolo parallelo CALCPARALLEL e altre funzioni Essbase; per informazioni sull'uso di SET CALCTASKDIMS, vedere Identificazione di task aggiuntivi per il calcolo parallelo.
-
-
Le transazioni di aggiornamento, come calcoli e aggiornamenti dei dati, sono richieste che richiedono più risorse rispetto alle query MDX o agli script di report.
Relazione tra il calcolo parallelo CALCPARALLEL e altre funzioni di Essbase
Se si utilizza il calcolo parallelo CALCPARALLEL nel cubo Essbase, considerare le limitazioni relative alle prestazioni di recupero, alle formule, al bitmap della cache del calcolatore e alle partizioni trasparenti.
Prestazioni recupero
Se si posiziona la dimensione sparsa più grande alla fine del profilo per ottenere le massime prestazioni di calcolo parallelo, le prestazioni di recupero potrebbero rallentare.
Limiti formula
La presenza di alcune formule può forzare il calcolo seriale. È probabile che i seguenti posizionamenti di formule forzino il calcolo seriale:
-
Formula di un membro denso, inclusi tutti i membri memorizzati e tutti i membri di calcolo dinamico da cui può dipendere un membro memorizzato, che causa una dipendenza da un membro della dimensione utilizzato per identificare i task per il calcolo parallelo.
-
Formula che contiene riferimenti alle variabili dichiarate in uno script di calcolo che utilizza @VAR, @ARRAY, @XREF o @XWRITE. Considerare invece l'utilizzo di FIXPARALLEL per il calcolo parallelo.
-
Una formula membro dimensione sparsa che utilizza @XREF e la dimensione per il membro sparso sono completamente calcolate. @XREF non forza il calcolo del numero di serie quando si basa su membri calcolo dinamico denso che non dipendono da altri membri memorizzati durante il calcolo del batch.
-
Formula membro che causa una dipendenza circolare. Ad esempio, il membro A ha una formula che si riferisce al membro B e il membro B ha una formula che si riferisce al membro C e il membro C ha una formula che si riferisce al membro A.
-
Formula di un membro denso o sparso con una dipendenza da uno o più membri della dimensione utilizzata per identificare i task per l'elaborazione parallela.
-
Formula membro dimensione sparsa contenente riferimenti a membri di altre dimensioni sparse.
Se è necessario utilizzare una formula che potrebbe impedire il calcolo parallelo, prendere in considerazione l'utilizzo di FIXPARALLEL. In caso contrario, è possibile contrassegnare il membro della formula come Calcolo dinamico oppure escludere la formula dall'ambito del calcolo. Per verificare se una formula impedisce il calcolo parallelo, controllare il log dell'applicazione. Per i messaggi di errore pertinenti, vedere Monitorare il calcolo parallelo CALCPARALLEL.
Cache calcolatore
All'inizio di un passaggio di calcolo, Essbase controlla la dimensione della cache della calcolatrice e il grado di parallelismo, quindi utilizza l'opzione bitmap della cache della calcolatrice appropriata per ottenere le massime prestazioni. Pertanto, l'opzione bitmap utilizzata per il calcolo parallelo può essere diversa da quella utilizzata per il calcolo seriale.
Ad esempio, si supponga che Essbase esegua un calcolo seriale e utilizzi più bitmap e una singola dimensione di ancoraggio. Senza una modifica esplicita della dimensione della cache della calcolatrice, Essbase potrebbe eseguire un calcolo parallelo utilizzando solo una singola bitmap e una singola dimensione di ancoraggio.
È possibile determinare la modalità cache della calcolatrice che controlla le opzioni bitmap controllando il log dell'applicazione all'inizio di ogni passaggio di calcolo per una voce simile alla seguente:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.Quando si utilizza il calcolo parallelo in modalità bitmap multipla, è possibile che si verifichi un utilizzo elevato della memoria. In tal caso, è possibile utilizzare l'impostazione di configurazione PARCALCMULTIPLEBITMAPMEMOPT per ottimizzare l'uso della memoria in modalità bitmap multipla. Questa impostazione può essere utilizzata con o separatamente da MULTIPLEBITMAPMEMCHECK. Per abilitare PARCALCMULTIPLEBITMAPMEMOPT, aggiungere quanto segue alla configurazione dell'applicazione:
PARCALCMULTIPLEBITMAPMEMOPT TRUELimiti di partizione trasparenti
Il calcolo parallelo con partizioni trasparenti presenta le seguenti limitazioni:
-
Non è possibile utilizzare il calcolo parallelo tra partizioni trasparenti a meno che il calcolo non si verifichi nella destinazione.
-
Impostare le dimensioni del task su 1. A tale scopo, utilizzare il comando di calcolo SET CALCTASKDIMS o l'impostazione di configurazione CALCTASKDIMS.
-
È necessario aumentare la cache della calcolatrice in modo da poter utilizzare più bitmap. È possibile identificare la modalità cache della calcolatrice che controlla le opzioni bitmap controllando il log dell'applicazione all'inizio di ogni passaggio di calcolo per una voce simile alla seguente:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
Controllare le impostazioni CALCPARALLEL correnti
È possibile controllare la configurazione dell'applicazione o lo script di calcolo che si prevede di utilizzare per verificare se il calcolo parallelo di stile CALCPARALLEL è abilitato per il cubo Essbase.
Per verificare se il calcolo parallelo dello stile CALCPARALLEL è stato abilitato a livello di applicazione, cercare il parametro di configurazione CALCPARALLEL e verificarne il valore specificato.
In alternativa, il cubo o gli script di calcolo possono utilizzare i blocchi di comando FIXPARALLEL per il calcolo parallelo.
Per CALCPARALLEL, il numero di thread che possono eseguire contemporaneamente attività per completare un calcolo è specificato da un valore compreso tra 1 e 128. I database di storage a blocchi (BSO) e di storage di aggregazione (ASO) in esecuzione su piattaforme a 64 bit supportano fino a 128 thread.
Per verificare se uno script di calcolo imposta il calcolo parallelo di stile CALCPARALLEL, cercare il comando SET CALCPARALLEL. Esaminare lo script con attenzione perché lo script può abilitare o disabilitare il calcolo parallelo più di una volta.
Abilita calcolo parallelo CALCPARALLEL
Per utilizzare il calcolo parallelo di tipo CALCPARALLEL con il cubo Essbase, è possibile abilitarlo per l'applicazione oppure implementarlo solo per uno o più script di calcolo.
Per utilizzare il calcolo parallelo CALCPARALLEL con il cubo Essbase, utilizzare uno dei seguenti metodi:
-
Aggiungere o modificare le impostazioni di configurazione dell'applicazione CALCPARALLEL e CALCTASKDIMS.
-
Utilizzare i comandi di calcolo SET CALCPARALLEL e SET CALCTASKDIMS in uno script di calcolo.
Seguire questo flusso di lavoro per abilitare il calcolo parallelo di tipo CALCPARALLEL:
Suggerimento
È possibile combinare l'uso di CALCPARALLEL e SET CALCPARALLEL se il sito lo richiede. Ad esempio, è possibile impostare CALCPARALLEL come non attivo a livello di server e utilizzare uno script di calcolo per abilitare e disabilitare il calcolo parallelo in base alle esigenze.
Identifica task aggiuntivi per calcolo parallelo
Per impostazione predefinita, Essbase utilizza una tecnica iterativa per selezionare il numero ottimale di dimensioni task da utilizzare per il calcolo parallelo di tipo CALCPARALLEL.
Ad esempio, se si dispone di un'istruzione FIX su un membro dell'ultima dimensione sparsa, è possibile includere anche la dimensione sparsa successiva all'ultima dal profilo. Poiché ogni combinazione di membri univoca di queste due dimensioni viene identificata come attività potenziale, vengono creati task sempre più piccoli, aumentando le opportunità di elaborazione parallela e migliorando il bilanciamento del carico.
Per specificare il numero di dimensioni task per il calcolo parallelo, procedere come segue.
- Se non si è certi, verificare se il calcolo parallelo è abilitato, utilizzando il processo descritto in Controlla impostazioni CALCPARALLEL correnti. Senza l'abilitazione di CALCPARALLEL (o SET CALCPARALLEL utilizzato in uno script di calcolo), CALCTASKDIMS non ha effetto.
- Facoltativo: Essbase seleziona un numero predefinito, n, di dimensioni task da utilizzare per il calcolo parallelo e questo numero viene stampato nel file di log dell'applicazione come messaggio informativo, ad esempio
Parallelizing using [2] task dimensions. Per sostituire l'impostazione n predefinita, aggiungere o modificare l'impostazione di configurazione CALCTASKDIMS per l'applicazione oppure utilizzare il comando dello script di calcolo SET CALCTASKDIMS. - Eseguire lo script di calcolo.
In alcuni casi, Essbase utilizza un numero inferiore di dimensioni per identificare i task rispetto a quanto specificato da CALCTASKDIMS o SET CALCTASKDIMS.
Ottimizza CALCPARALLEL con i messaggi di log
Un'attenta analisi dei messaggi di log consente di ottimizzare il modo in cui Essbase suddivide i processi di calcolo parallelo in task.
Se si utilizza il calcolo parallelo CALCPARALLEL, è possibile che vengano visualizzati i seguenti messaggi di 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 questo messaggio viene rilevato, significa che durante un calcolo parallelo, Essbase si è astenuto dall'aumentare il numero di dimensioni del task, nel caso in cui i task diventassero troppo piccoli. Quando le attività diventano troppo piccole, il sovraccarico di pianificazione del calcolo potrebbe superare i vantaggi del parallelismo. Tuttavia, quando i task sono troppo grandi, è possibile che i thread di calcolo parallelo non funzionino.
Se la dimensione task potenziale successiva non è la prima dimensione sparsa, considerare l'ipotesi di aumentare il numero di dimensioni task di una sola dimensione, utilizzando il comando di calcolo SET CALCTASKDIMS (o l'impostazione di configurazione CALCTASKDIMS) e verificare se ciò migliora la velocità del calcolo. Si consiglia inoltre di utilizzare FIXPARALLEL per effettuare selezioni di task personalizzate diverse da CALCPARALLEL (vedere Calcolo parallelo 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.
Per il calcolo parallelo, avere un numero sufficiente di attività aiuta a ridurre gli effetti della distorsione dei dati. Tuttavia, troppi task (anche per task di dimensioni appropriate) possono far sì che il sovraccarico di pianificazione superi i vantaggi. Essbase si rivolge a un intervallo ottimale. Se viene visualizzato il messaggio precedente, significa che Essbase ha tentato di soddisfare il numero minimo consigliato di task aggiungendo un'altra dimensione task; in questo modo, è possibile che il limite superiore per il conteggio dei task sia stato superato.
Se l'ultima dimensione task selezionata da Essbase non è l'unica dimensione task, valutare la possibilità di ridurre le dimensioni task di una sola dimensione utilizzando il comando di calcolo SET CALCTASKDIMS (o l'impostazione di configurazione CALCTASKDIMS) e verificare se ciò migliora la velocità del calcolo. In alternativa, si consiglia di utilizzare FIXPARALLEL per effettuare selezioni di task personalizzate diverse da CALCPARALLEL.
Monitora calcolo parallelo CALCPARALLEL
È possibile visualizzare gli eventi correlati al calcolo parallelo nel log dell'applicazione. Per ogni passaggio di calcolo, Essbase scrive diversi tipi di informazioni nel log dell'applicazione per supportare il calcolo parallelo.
Quando è possibile utilizzare il calcolo parallelo
Se è stato abilitato il calcolo parallelo e Essbase ha determinato che è possibile eseguire il calcolo parallelo, Essbase scrive un messaggio nel log dell'applicazione:
Calculating in parallel with n threadsn rappresenta il numero di task concorrenti specificati in CALCPARALLEL o SET CALCPARALLEL.
Se non è possibile utilizzare il calcolo parallelo a causa di una formula
Per ogni formula che impedisce il calcolo parallelo (forza il calcolo seriale), Essbase scrive un messaggio nel log dell'applicazione:
Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.memberName rappresenta il nome del membro in cui esiste la formula pertinente. È possibile cercare tali messaggi nel log dell'applicazione e considerare la possibilità di rimuovere la formula oppure, se possibile, contrassegnare il membro o i membri rilevanti come Calcolo dinamico in modo che non siano inclusi nel passaggio del calcolo.
Essbase scrive un messaggio nel log dell'applicazione specificando il numero di task che è possibile eseguire contemporaneamente (in base ai dati, non al valore di CALCPARALLEL o SET CALCPARALLEL):
Calculation task schedule [576,35,14,3,2,1]Il messaggio di esempio sopra indica che è possibile eseguire contemporaneamente 576 task. Dopo il completamento dei 576 task, è possibile eseguirne altri 35 contemporaneamente e così via.
Il vantaggio del calcolo parallelo è maggiore nei primi passi e diminuisce man mano che vengono eseguite meno attività concorrenti.
Il grado di parallelismo dipende dal numero di attività nella pianificazione delle attività. Maggiore è il numero, più task possono essere eseguiti in parallelo e maggiori saranno le prestazioni.
Quando il calcolo parallelo restituisce task vuoti
Essbase scrive un messaggio nel file di log dell'applicazione indicando il numero di task vuoti (non contiene calcoli):
Info(1012681) Empty tasks [291,1,0,0,0,0]Nell'esempio precedente, Essbase indica che 291 dei task al livello 0 erano vuoti.
Se il rapporto tra le attività vuote e le attività specificate nella pianificazione delle attività di calcolo è maggiore del 50% (ad esempio, 291 / 576), il parallelismo potrebbe non fornire prestazioni migliori a causa dell'elevata sparsità nel modello dati.
È possibile modificare le assegnazioni dense-sparse per ridurre il numero di task vuoti e aumentare gli incrementi delle prestazioni derivanti dal calcolo parallelo.