THREADS DE TRABAJADOR

El valor de configuración WORKERTHREADS permite aumentar o reducir el número de subprocesos disponibles en el pool de subprocesos para operaciones paralelas de Essbase.

Sintaxis

WORKERTHREADS [appname] value
  • appname (opcional): nombre de la aplicación. Si no especifica una aplicación, el número especificado de threads se aplica a todas las aplicaciones.

  • value: número de threads que estarán disponibles en el pool. El valor mínimo es 5. El valor máximo es 2048. El valor por defecto, si el valor WORKERTHREADS no está presente, es la mitad del valor SERVERTHREADS.

Descripción

Históricamente, Essbase ha creado de forma dinámica threads para operaciones paralelas como el cálculo paralelo, la carga de datos paralelos y la reestructuración paralela. Sin embargo, a partir de la versión 11.1.2.4.000, las siguientes operaciones paralelas no crean threads de forma dinámica, sino que utilizan un número definido de threads de una agrupación de threads creada previamente:

  • Cálculo paralelo, con CALCPARALLEL o FIXPARALLEL

  • Carga de datos paralela, para cubos de almacenamiento agregado y de almacenamiento de bloques

  • Exportación paralela, para cubos de almacenamiento de bloques

  • Reestructuración paralela

Directrices para operaciones en rosca

Oracle recomienda la siguiente configuración, según la arquitectura del sistema.

Tabla 2-1 Directrices para operaciones roscadas

parámetro 64 bits (16 núcleos) 64 bits (32 núcleos) 64 bits (16 núcleos) y dos cubos Oracle Exalytics In-Memory Machine, de 40 núcleos, X2-4 Oracle Exalytics In-Memory Machine, núcleo SPARC 128 Oracle Exalytics In-Memory Machine, de 60 núcleos, X4-4
THREADS DE SERVIDOR 100Pie 1 100Pie 1 100Pie 1 100Pie 1 200Pie 1 120Pie 1
THREADS DE TRABAJADOR 50 50 50 50 100 60
THREADS DE AGENTE 30Pie 1 30Pie 1 30Pie 1 30Pie 1 30Pie 1 30Pie 1
PREPARACIÓN DE SUBPROCESOS 2 2 2 2 Pie 2 2 Pie 2 2 Pie 2
ESCRITURA DE SUBPROCESOS 2Pie 3 2Pie 3 2Pie 3 2Pie 3 2Pie 3 2Pie 3
EXPORTTHREADSPunto 4 8 8 8 40 40 40
REESTRUCTURAR SUBPROCESOS 4 4 4 8 8 8
Máximo de CALCPARALLELPie 5 8 8 8 32Pie 6 32 32Pie 6
Máximo de FIXPARALLELPaso 7 8 8 8 32Pie 6 32 32Pie 6

Nota a Pie de Página 1

Puede necesitar ajustes basados en la partición y la simultaneidad

Nota a Pie de Página 2

24 en almacenamiento agregado

Nota a Pie de Página 3

1 si se utiliza la carga .txt

Nota a Pie de Página 4

Además de definir EXPORTTHREADS, debe especificar varios archivos de datos en la exportación de datos

Nota a Pie de Página 5

SET CALCPARALLEL se debe definir en el script de cálculo

Nota a Pie de Página 6

16 si tres o más cubos están ejecutando cálculos simultáneos

Nota a Pie de Página 7

FIXPARALLEL debe establecerse en el script de cálculo

Notas:

  • WORKERTHREADS es un valor de configuración para manipular el número de threads disponibles en el pool de threads. Si este umbral de disponibilidad se define explícitamente en la configuración o si se deja en su valor predeterminado de SERVERTHREADS/2, si el valor efectivo es menor que el que exige una operación paralela solicitada, Essbase reduce implícitamente el paralelismo de la operación solicitada para que se ajuste a los parámetros del pool de threads.

    Por ejemplo, considere cargar datos:

    El concepto de pipeline es relevante para las cargas de datos de Essbase. Un pipeline es una serie de elementos de procesamiento de datos en la memoria que se pueden ejecutar en serie o en paralelo. Una operación de carga de datos de Essbase utiliza un pipeline que consta de 5 etapas. Por lo tanto, todas las operaciones de carga de datos necesitan un mínimo de 5 threads.

    Si utiliza DLTHREADSPREPARE o DLTHREADSWRITE, aumenta el número mínimo de threads de carga de datos necesarios. Por ejemplo, si define DLTHREADSPREPARE en 4 y DLTHREADSWRITE en 2, necesita 9 threads (el mínimo 5, más el aumento de 4).

    Si el número de threads solicitados para todos los pipelines es 9, como en el caso anterior, pero WORKERTHREADS está definido en solo 8, Essbase establece implícitamente DLTHREADSPREPARE y DLTHREADSWRITE en 1 y la carga de datos se ejecuta con un requisito de thread total de 5 (el mínimo y el predeterminado).

  • Del mismo modo, si ejecuta un cálculo en paralelo, una exportación en paralelo o una reestructuración en paralelo, estas operaciones se ejecutan con un paralelismo que no supera el número de threads disponibles.

    Por ejemplo:

    • Si WORKERTHREADS está definido en 8 y se intenta CALCPARALLEL 16, el cálculo paralelo se ejecuta como CALCPARALLEL 8.

    • Si WORKERTHREADS está definido en 5 e intenta ejecutar EXPORTTHREADS 12, la exportación paralela se ejecuta como EXPORTTHREADS 5.

    • Si WORKERTHREADS está definido en 16 y se intenta RESTRUCTURETHREADS 32, la reestructuración paralela se ejecuta como RESTRUCTURETHREADS 16.

  • Si ejecuta operaciones paralelas simultáneas en la misma aplicación, el paralelismo total está limitado por el número de threads en el pool de threads. Por ejemplo, si define WORKERTHREADS en 16 y ejecuta dos solicitudes simultáneas de CALCPARALLEL 16, las dos solicitudes de cálculo comparten los 16 threads. Los cálculos se ejecutarán con hasta 16 threads, pero debido a que comparten el pool de threads de 16, se ejecutan cerca de la mitad de la capacidad solicitada.

  • Si tiene varios cubos en una aplicación, Oracle recomienda definir WORKERTHREADS ligeramente más alto que los threads paralelos que necesita para un cubo. Por ejemplo, si WORKERTHREADS se establece en 16 y el número de CPU en el sistema es 16, debe definir el valor CALCPARALLEL en menos de 16.

  • Si los cubos de diferentes servidores hacen referencia entre sí mediante @XREF o @XWRITE, asegúrese de que el cubo de origen de la referencia cruzada tenga un número mayor de SERVERTHREADS que de los threads de cálculo paralelos (CALCPARALLEL o FIXPARALLEL).

  • Con el pool de threads para operaciones paralelas, se necesitan más recursos para iniciar una aplicación de Essbase. Si encuentra el error Unable to Request Server Thread durante el inicio, ajuste la configuración del sistema operativo que controla el número de threads por proceso y el número total de threads en el sistema (por ejemplo, en Linux, ajuste nproc mediante ulimit).

Ejemplo

WORKERTHREADS Sample 32