FIL DE TRAVAIL
Le paramètre de configuration WORKERTHREADS vous permet d'augmenter ou de réduire le nombre de threads disponibles dans le pool de threads pour les opérations Essbase parallèles.
Syntaxe
WORKERTHREADS [appname] value-
appname (facultatif) : nom de l'application. Si vous n'indiquez pas d'application, le nombre de threads spécifié s'applique à toutes les applications.
-
value : nombre de threads à rendre disponibles dans le pool. La valeur minimale est 5. La valeur maximale est 2048. La valeur par défaut, si le paramètre WORKERTHREADS n'est pas présent, est la moitié de la valeur SERVERTHREADS.
Description
Historiquement, Essbase a créé dynamiquement des threads pour les opérations parallèles telles que le calcul parallèle, le chargement de données en parallèle et la restructuration en parallèle. Cependant, à partir de la version 11.1.2.4.000, les opérations parallèles suivantes ne créent pas de threads de manière dynamique, mais utilisent un nombre défini de threads à partir d'un pool de threads pré-créé :
-
Calcul parallèle, avec CALCPARALLEL ou FIXPARALLEL
-
Chargement de données en parallèle, pour les cubes en mode "aggregate storage" et "block storage"
-
Export parallèle, pour les cubes en mode "block storage"
-
Restructuration parallèle
Instructions relatives aux opérations avec threads
Oracle recommande les paramètres suivants, en fonction de l'architecture du système.
Tableau 2-1 Directives relatives aux opérations filetées
Note 1
Peut nécessiter un ajustement basé sur le partitionnement et la simultanéité
Note 2
24 sur le mode "aggregate storage"
Note 3
1 si vous utilisez le chargement .txt
Note 4
En plus de définir EXPORTTHREADS, vous devez spécifier plusieurs fichiers de données dans l'export de données.
Note 5
SET CALCPARALLEL doit être défini dans le script de calcul
Note 6
16 si trois cubes ou plus exécutent des calculs simultanés
Note 7
FIXPARALLEL doit être défini dans le script de calcul
Remarques
-
WORKERTHREADS est un paramètre de configuration permettant de manipuler le nombre de threads disponibles dans le pool de threads. Que ce seuil de disponibilité soit défini explicitement dans la configuration ou laissé à sa valeur par défaut
SERVERTHREADS/2, si le paramètre effectif est moins que ce qui est demandé par une opération parallèle demandée, Essbase réduit implicitement le parallélisme de l'opération demandée afin qu'il corresponde aux paramètres du pool de threads.Par exemple, vous pouvez charger des données :
Le concept de pipeline est pertinent pour les chargements de données Essbase. Un pipeline est une série d'éléments de traitement de données en mémoire qui peuvent être exécutés en série ou en parallèle. Une opération de chargement de données Essbase utilise un pipeline composé de 5 étapes. Par conséquent, toutes les opérations de chargement de données nécessitent un minimum de 5 threads.
Si vous utilisez DLTHREADSPREPARE ou DLTHREADSWRITE, le nombre minimal de threads de chargement de données requis est augmenté. Par exemple, si vous définissez DLTHREADSPREPARE sur 4 et DLTHREADSWRITE sur 2, vous avez besoin de 9 threads (le minimum 5, plus l'augmentation de 4).
Si le nombre de threads demandés pour tous les pipelines est de 9, comme dans le cas précédent, mais que WORKERTHREADS est défini sur 8 uniquement, Essbase définit implicitement DLTHREADSPREPARE et DLTHREADSWRITE sur 1, et le chargement des données s'exécute avec une exigence de thread totale de 5 (le minimum et la valeur par défaut).
-
De même, si vous exécutez un calcul parallèle, un export parallèle ou une restructuration parallèle, ces opérations s'exécutent avec un parallélisme ne dépassant pas le nombre de threads disponibles.
Exemple :
-
Si WORKERTHREADS est défini sur 8 et que vous tentez CALCPARALLEL 16, le calcul parallèle s'exécute comme CALCPARALLEL 8.
-
Si WORKERTHREADS est défini sur 5 et que vous tentez EXPORTTHREADS 12, l'export parallèle est exécuté en tant qu'EXPORTTHREADS 5.
-
Si WORKERTHREADS est défini sur 16 et que vous essayez RESTRUCTURETHREADS 32, la restructuration parallèle s'exécute en tant que RESTRUCTURETHREADS 16.
-
-
Si vous exécutez des opérations parallèles simultanées sur la même application, le parallélisme total est limité par le nombre de threads dans le pool de threads. Par exemple, si vous définissez WORKERTHREADS sur 16 et que vous exécutez deux demandes simultanées de CALCPARALLEL 16, les deux demandes de calcul partagent les 16 threads. Les calculs seront exécutés en utilisant jusqu'à 16 threads, mais comme ils partagent le pool de threads de 16, ils s'exécutent à près de la moitié de la capacité demandée.
-
Si vous disposez de plusieurs cubes dans une application, Oracle recommande de définir WORKERTHREADS légèrement plus haut que les threads parallèles dont vous avez besoin pour un cube. Par exemple, si WORKERTHREADS est défini sur 16 et que le nombre de CPU sur le système est de 16, vous devez définir la valeur CALCPARALLEL sur une valeur inférieure à 16.
-
Si des cubes sur des serveurs différents se référencent à l'aide de @XREF ou @XWRITE, assurez-vous que le cube source de la référence croisée a un nombre plus élevé de SERVERTHREADS que de threads de calcul parallèles (CALCPARALLEL ou FIXPARALLEL).
-
Avec le regroupement de threads pour les opérations parallèles, des ressources accrues sont nécessaires pour démarrer une application Essbase. Si vous rencontrez l'erreur
Unable to Request Server Threadau démarrage, ajustez les paramètres du système d'exploitation qui contrôlent le nombre de threads par processus et le nombre total de threads dans le système (par exemple, sous Linux, réglez nproc à l'aide de ulimit).
Exemple
WORKERTHREADS Sample 32Voir aussi
FIXPARALLEL...ENDFIXPARALLEL (bloc de commande de calcul)