Calcul parallèle CALCPARALLEL
Pour passer du calcul en série par défaut Essbase au calcul en parallèle CALCPARALLEL, modifiez un ou deux paramètres de configuration et redémarrez le serveur, ou ajoutez une instruction au script de calcul.
Pour obtenir des instructions, voir Activer le calcul parallèle CALCPARALLEL.
Les rubriques suivantes traitent des détails du calcul parallèle.
Analyse de faisabilité de CALPARALLEL
Essbase évalue si l'utilisation de la méthode de calcul parallèle CALPARALLEL est possible avant chaque passe de calcul pour laquelle vous l'avez activée.
Essbase analyse l'outline et le calcul demandé pour chaque passe de calcul. N'oubliez pas qu'un seul calcul peut nécessiter plusieurs passes. Dans certains cas, le besoin de plusieurs passes peut se produire, notamment le calcul dynamique, la présence d'un membre balisé en tant que deux passes ou des calculs qui créent certains types d'interdépendance. Reportez-vous à la section Calculation réussie.
Si Essbase détermine que le calcul parallèle à l'aide de la méthode CALPARALLEL est possible, Essbase divise le calcul en tâches plus petites indépendantes les unes des autres. Au cours du calcul, Essbase effectue les tâches les plus petites simultanément.
Toutefois, Essbase recourt au calcul en série s'il existe des interdépendances complexes entre les formules qui participent à la réussite. De telles interdépendances peuvent rendre impossible le calcul parallèle.
Déterminez si la méthode FIXPARALLEL peut être plus adaptée à votre cas d'emploi. Reportez-vous à Calcul parallèle FIXPARALLEL.
Instructions de calcul parallèle CALCPARALLEL
La structure de l'outline et la conception de l'application Essbase déterminent si l'activation du calcul parallèle peut améliorer les performances de calcul. Avant d'activer le calcul parallèle de type CALCPARALLEL, consultez les instructions suivantes, qui vous aideront à en tirer le meilleur parti.
-
Une ou plusieurs formules présentes dans un calcul peuvent empêcher Essbase d'utiliser le calcul parallèle CALCPARALLEL même s'il est activé. Pour une description des formules qui peuvent forcer le calcul en série indépendamment des paramètres de calcul parallèle, reportez-vous à Relation entre le calcul parallèle CALCPARALLEL et d'autres fonctionnalités Essbase.
-
Les tâches de calcul sont générées le long des dernières n dimensions dispersées d'une outline. Ces dimensions dispersées utilisées pour identifier les tâches sont appelées dimensions de tâche. Le nombre de dimensions de tâche, n, est sélectionné dynamiquement par Essbase ou vous pouvez le remplacer en spécifiant une valeur pour la commande de calcul SET CALCTASKDIMS (ou pour le paramètre de configuration d'application CALCTASKDIMS).
Classez les dimensions dispersées d'une outline de la plus petite à la plus grande, en fonction de la taille réelle de la dimension (comme indiqué par l'instruction MaxL interroger la base de données DBS-NAME pour obtenir la dimension dbstats). Cette recommandation de tri est cohérente avec les recommandations d'optimisation de la taille du cache du calculateur et avec les autres recommandations de l'outline. Pour obtenir une description des situations qui peuvent nécessiter l'utilisation de dimensions supplémentaires (plus que la dernière dimension dispersée) et des instructions sur l'augmentation du nombre de dimensions dispersées utilisées, reportez-vous à Identifier les tâches supplémentaires pour le calcul parallèle.
-
Le calcul parallèle CALCPARALLEL s'applique aux applications non partitionnées et aux applications partitionnées suivantes :
-
Partitions répliquées
-
Partition transparente si le calcul a lieu dans la base de données cible. Le nombre de dimensions dispersées spécifié par SET CALCTASKDIMS dans un script de calcul doit être défini sur 1. Pour plus d'informations sur les limitations imposées par l'utilisation du calcul parallèle avec des partitions transparentes, reportez-vous à la section Relationship Between CALCPARALLEL Parallel Calculation and Other Essbase Features. Pour plus d'informations sur l'utilisation de SET CALCTASKDIMS, reportez-vous à la section Identify Additional Tasks for Parallel Calculation.
-
-
Les transactions de mise à jour, telles que les calculs et les mises à jour de données, sont plus consommatrices de ressources que les requêtes MDX ou les scripts de rapport.
Relation entre le calcul parallèle CALCPARALLEL et d'autres fonctionnalités Essbase
Si vous utilisez le calcul parallèle CALCPARALLEL dans votre cube Essbase, tenez compte des limites relatives aux performances d'extraction, aux formules, au bitmap du cache du calculateur et aux partitions transparentes.
Performances d'extraction
Le fait de placer la plus grande dimension dispersée à la fin de l'outline pour obtenir des performances de calcul en parallèle maximales peut ralentir les performances d'extraction.
Limites de formule
La présence de certaines formules peut forcer le calcul en série. Les emplacements de formule suivants vont probablement forcer le calcul en série :
-
Formule sur un membre dense, y compris tous les membres stockés et tous les membres de calcul dynamique dont un membre stocké peut dépendre, qui entraîne une dépendance vis-à-vis d'un membre de la dimension utilisée pour identifier les tâches à effectuer pour le calcul parallèle.
-
Formule contenant des références à des variables déclarées dans un script de calcul qui utilise @VAR, @ARRAY, @XREF ou @XWRITE. Envisagez plutôt d'utiliser FIXPARALLEL pour le calcul parallèle.
-
Formule de membre de dimension dispersée utilisant @XREF et la dimension du membre dispersé est entièrement calculée. @XREF ne force pas le calcul en série lorsqu'il s'agit de membres de calcul dynamique dense qui ne dépendent pas d'autres membres stockés pendant le calcul par lots.
-
Formule de membre qui provoque une dépendance circulaire. Par exemple, le membre A a une formule qui fait référence au membre B, et le membre B a une formule qui fait référence au membre C, et le membre C a une formule qui fait référence au membre A.
-
Formule sur un membre dense ou dispersé avec une dépendance sur un ou plusieurs membres de la dimension utilisée pour identifier les tâches à traiter en parallèle.
-
Formule de membre de dimension dispersée contenant des références à des membres provenant d'autres dimensions dispersées.
Si vous avez besoin d'utiliser une formule qui pourrait empêcher le calcul parallèle, pensez à utiliser FIXPARALLEL. Sinon, vous pouvez marquer le membre de la formule en tant que calcul dynamique ou exclure la formule de la portée du calcul. Pour savoir si une formule empêche le calcul parallèle, consultez le journal de l'application. Pour consulter les messages d'erreur pertinents, reportez-vous à Surveillance du calcul parallèle CALCPARALLEL.
Cache du calculateur
Au début d'une passe de calcul, Essbase vérifie la taille du cache du calculateur et le degré de parallélisme, puis utilise l'option bitmap du cache du calculateur appropriée pour des performances maximales. Par conséquent, l'option bitmap utilisée pour le calcul parallèle peut être différente de celle utilisée pour le calcul série.
Par exemple, supposons qu'Essbase effectue un calcul en série et utilise plusieurs bitmaps et une dimension d'ancrage unique. Sans modification explicite de la taille du cache du calculateur, Essbase peut effectuer un calcul parallèle à l'aide d'un seul bitmap et d'une seule dimension d'ancrage.
Vous pouvez déterminer le mode de cache du calculateur qui contrôle les options de bitmap en consultant le journal de l'application au début de chaque passe de calcul pour une entrée similaire à la suivante :
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.Lorsque vous utilisez le calcul parallèle en mode bitmap multiple, vous risquez de rencontrer une consommation mémoire élevée. Dans ce cas, vous pouvez utiliser le paramètre de configuration PARCALCMULTIPLEBITMAPMEMOPT pour optimiser l'utilisation de la mémoire en mode bitmap multiple. Ce paramètre peut être utilisé avec ou séparément de MULTIPLEBITMAPMEMCHECK. Pour activer PARCALCMULTIPLEBITMAPMEMOPT, ajoutez ce qui suit à la configuration de votre application :
PARCALCMULTIPLEBITMAPMEMOPT TRUELimites relatives aux partitions transparentes
Le calcul parallèle avec des partitions transparentes présente les limites suivantes :
-
Vous ne pouvez pas utiliser le calcul parallèle entre les partitions transparentes sauf si le calcul a lieu au niveau de la cible.
-
Vous devez définir les dimensions de tâche sur 1. Pour ce faire, utilisez la commande de calcul SET CALCTASKDIMS ou le paramètre de configuration CALCTASKDIMS.
-
Vous devez augmenter le cache de la calculatrice afin que plusieurs bitmaps puissent être utilisés. Vous pouvez identifier le mode de cache du calculateur qui contrôle les options de bitmap en consultant le journal de l'application au début de chaque passe de calcul pour une entrée similaire à la suivante :
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
Vérifier les paramètres CALCPARALLEL actuels
Vous pouvez vérifier la configuration de l'application ou le script de calcul que vous prévoyez d'utiliser pour voir si le calcul parallèle de style CALCPARALLEL est activé pour votre cube Essbase.
Pour vérifier si le calcul parallèle de style CALCPARALLEL a été activé au niveau de l'application, recherchez le paramètre de configuration CALCPARALLEL et vérifiez sa valeur spécifiée.
Le cube (ou les scripts de calcul) peut également utiliser des blocs de commande FIXPARALLEL pour le calcul parallèle.
Pour CALCPARALLEL, le nombre de threads pouvant effectuer simultanément des tâches pour effectuer un calcul est indiqué par une valeur comprise entre 1 et 128. Les bases en mode "block storage" (BSO) et "aggregate storage" (ASO) exécutées sur des plates-formes 64 bits prennent en charge jusqu'à 128 threads.
Pour vérifier si un script de calcul définit le calcul parallèle de type CALCPARALLEL, recherchez la commande SET CALCPARALLEL. Examinez attentivement le script car il peut activer ou désactiver plusieurs fois le calcul parallèle.
Activer le calcul parallèle CALCPARALLEL
Pour utiliser le calcul parallèle de type CALCPARALLEL avec votre cube Essbase, vous pouvez l'activer pour l'application ou l'implémenter uniquement pour un ou plusieurs scripts de calcul.
Pour utiliser le calcul parallèle CALCPARALLEL avec le cube Essbase, utilisez l'une des méthodes suivantes :
-
Ajoutez ou modifiez les paramètres de configuration d'application CALCPARALLEL et CALCTASKDIMS.
-
Utilisez les commandes de calcul SET CALCPARALLEL et SET CALCTASKDIMS dans un script de calcul.
Pour activer le calcul parallèle de type CALCPARALLEL, procédez comme suit :
Conseil :
Vous pouvez combiner l'utilisation de CALCPARALLEL et SET CALCPARALLEL si le site l'exige. Par exemple, vous pouvez définir CALCPARALLEL comme désactivé au niveau du serveur et utiliser un script de calcul pour activer et désactiver le calcul parallèle selon vos besoins.
Identifier les tâches supplémentaires pour le calcul parallèle
Par défaut, Essbase utilise une technique itérative pour sélectionner le nombre optimal de dimensions de tâche à utiliser pour le calcul parallèle de type CALCPARALLEL.
Par exemple, si vous avez une instruction FIX sur un membre de la dernière dimension dispersée, vous pouvez également inclure la dimension dispersée suivante à la dernière dans l'outline. Chaque combinaison de membres unique de ces deux dimensions étant identifiée comme une tâche potentielle, de plus en plus de tâches sont créées, ce qui augmente les possibilités de traitement parallèle et améliore l'équilibrage de charge.
Pour indiquer le nombre de dimensions de tâche pour le calcul parallèle :
- Si vous n'êtes pas sûr, vérifiez si le calcul parallèle est activé à l'aide du processus décrit dans Vérifier les paramètres CALCPARALLEL actuels. Si CALCPARALLEL n'est pas activé (ou si SET CALCPARALLEL est utilisé dans un script de calcul), CALCTASKDIMS n'a aucun effet.
- Facultatif : Essbase sélectionne un nombre par défaut, n, de dimensions de tâche à utiliser pour le calcul parallèle. Ce nombre est imprimé dans le fichier journal de l'application en tant que message d'information, par exemple :
Parallelizing using [2] task dimensions. Pour remplacer le paramètre n par défaut, ajoutez ou modifiez le paramètre de configuration CALCTASKDIMS pour l'application, ou utilisez la commande de script de calcul SET CALCTASKDIMS. - Exécutez le script de calcul.
Dans certains cas, Essbase utilise moins de dimensions pour identifier les tâches que celles spécifiées par CALCTASKDIMS ou SET CALCTASKDIMS.
Régler CALCPARALLEL avec les messages du journal
Une analyse minutieuse des messages de journal peut vous aider à optimiser la façon dont Essbase divise les processus de calcul parallèles en tâches.
Si vous utilisez le calcul parallèle CALCPARALLEL, les messages de journal suivants peuvent s'afficher :
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.
Si ce message est détecté, cela signifie qu'au cours d'un calcul parallèle, Essbase s'est abstenu d'augmenter le nombre de dimensions de tâche, au cas où les tâches seraient devenues trop petites. Lorsque les tâches deviennent trop petites, la surcharge liée à la planification des calculs peut dépasser les avantages du parallélisme. Toutefois, lorsque les tâches sont trop volumineuses, il peut ne pas y avoir suffisamment de tâches pour que les threads de calcul parallèles puissent fonctionner.
Si la prochaine dimension de tâche potentielle n'est pas la première dimension dispersée, envisagez d'augmenter le nombre de dimensions de tâche d'une unité, à l'aide de la commande de calcul SET CALCTASKDIMS (ou du paramètre de configuration CALCTASKDIMS), et observez si cela améliore la vitesse du calcul. En outre, envisagez d'utiliser FIXPARALLEL pour effectuer des sélections de tâches personnalisées différentes de CALCPARALLEL (reportez-vous à Calcul parallèle 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.
Pour le calcul parallèle, le fait de disposer d'un nombre suffisant de tâches permet de réduire les effets de l'écart de données. Cependant, un trop grand nombre de tâches (même pour les tâches de taille appropriée) peut faire en sorte que la surcharge de planification l'emporte sur les avantages. Essbase cible une plage optimale. Si le message ci-dessus s'affiche, cela signifie qu'Essbase a essayé de respecter le nombre minimal de tâches recommandé en ajoutant une dimension de tâche supplémentaire. Ce faisant, il est possible que la limite supérieure du nombre de tâches ait été dépassée.
Si la dernière dimension de tâche sélectionnée par Essbase n'est pas la seule dimension de tâche, envisagez de réduire les dimensions de tâche par une, à l'aide de la commande de calcul SET CALCTASKDIMS (ou du paramètre de configuration CALCTASKDIMS), et observez si cela améliore la vitesse du calcul. Vous pouvez également envisager d'utiliser FIXPARALLEL pour effectuer des sélections de tâches personnalisées différentes de CALCPARALLEL.
Surveiller le calcul parallèle CALCPARALLEL
Vous pouvez afficher les événements liés au calcul parallèle dans le journal de l'application. Pour chaque passe de calcul, Essbase écrit plusieurs types d'informations dans le journal de l'application pour prendre en charge le calcul parallèle.
Quand le calcul parallèle peut être utilisé
Si vous avez activé le calcul parallèle et qu'Essbase a déterminé que le calcul parallèle peut être effectué, Essbase écrit un message dans le journal de l'application :
Calculating in parallel with n threadsn représente le nombre de tâches simultanées spécifié dans CALCPARALLEL ou SET CALCPARALLEL.
Lorsque le calcul parallèle ne peut pas être utilisé en raison d'une formule
Pour chaque formule qui empêche le calcul en parallèle (oblige le calcul en série), Essbase écrit un message dans le journal de l'application :
Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.memberName représente le nom du membre dans lequel la formule appropriée existe. Vous pouvez rechercher ces messages dans le journal de l'application et envisager de supprimer la formule ou, si possible, de marquer le ou les membres concernés comme calcul dynamique afin qu'ils ne figurent pas dans la passe de calcul.
Essbase écrit un message dans le journal de l'application en indiquant le nombre de tâches pouvant être exécutées simultanément (en fonction des données, et non de la valeur CALCPARALLEL ou SET CALCPARALLEL) :
Calculation task schedule [576,35,14,3,2,1]L'exemple de message ci-dessus indique que 576 tâches peuvent être exécutées simultanément. Une fois les 576 tâches terminées, 35 autres peuvent être exécutées simultanément, etc.
L'avantage du calcul parallèle est plus grand dans les premières étapes et diminue à mesure que moins de tâches simultanées sont effectuées.
Le degré de parallélisme dépend du nombre de tâches dans la planification des tâches. Plus le nombre est élevé, plus les tâches peuvent être exécutées en parallèle et plus les performances sont élevées.
Lorsque le calcul parallèle aboutit à des tâches vides
Essbase écrit dans le fichier journal de l'application un message indiquant le nombre de tâches vides (ne contenant aucun calcul) :
Info(1012681) Empty tasks [291,1,0,0,0,0]Dans l'exemple ci-dessus, Essbase indique que 291 des tâches de niveau 0 étaient vides.
Si le rapport entre les tâches vides et les tâches spécifiées dans le planning des tâches de calcul est supérieur à 50 % (par exemple, 291 / 576), le parallélisme risque de ne pas améliorer les performances en raison de la faible dispersion du modèle de données.
Vous pouvez modifier les affectations de type dense/sparse pour réduire le nombre de tâches vides et augmenter les gains de performances du calcul parallèle.