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

Paramètre 64 bits (16 coeurs) 64 bits (32 coeurs) 64 bits (16 coeurs) et deux cubes Oracle Exalytics In-Memory Machine, 40 coeurs, X2-4 Oracle Exalytics In-Memory Machine, coeur SPARC 128 Oracle Exalytics In-Memory Machine, 60 coeurs, X4-4
FIL DE SERVEUR 100Note de bas de page 1 100Note de bas de page 1 100Note de bas de page 1 100Note de bas de page 1 200Note de bas de page 1 120Note de bas de page 1
FIL DE TRAVAIL 50 50 50 50 100 60
FIL D'AGENT 30Note de bas de page 1 30Note de bas de page 1 30Note de bas de page 1 30Note de bas de page 1 30Note de bas de page 1 30Note de bas de page 1
DLTHREADSPREPARE 2 2 2 2 Note de bas de page 2 2 Note de bas de page 2 2 Note de bas de page 2
DLTHREADSWRITE 2Note de bas de page 3 2Note de bas de page 3 2Note de bas de page 3 2Note de bas de page 3 2Note de bas de page 3 2Note de bas de page 3
EXPORTTHREADSPied de page 4 8 8 8 40 40 40
FIL DE RESTRUCTURATION 4 4 4 8 8 8
CALCPARALLEL maximumPied de page 5 8 8 8 32Note de bas de page 6 32 32Note de bas de page 6
Maximum FIXPARALLELPied de page 7 8 8 8 32Note de bas de page 6 32 32Note de bas de page 6

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 Thread au 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 32