Cálculo paralelo de CALCPARALLEL
Para cambiar del cálculo en serie predeterminado de Essbase al cálculo paralelo de CALCPARALLEL, cambie uno o dos valores de configuración y reinicie el servidor o agregue una instrucción al script de cálculo.
Consulte Activación del Cálculo Paralelo de CALCPARALLEL para obtener instrucciones.
En los siguientes temas se analizan los detalles del cálculo paralelo.
Análisis de viabilidad de CALPARALLEL
Essbase evalúa si es posible utilizar el método CALPARALLEL de cálculo paralelo antes de cada pase de cálculo para el que lo haya activado.
Essbase analiza el esquema y el cálculo solicitado para cada transferencia de cálculo. Recuerde que un cálculo puede requerir varias pasadas. Algunas situaciones pueden crear la necesidad de varias transferencias, incluido el cálculo dinámico, la presencia de un miembro etiquetado como dos transferencias o cálculos que crean ciertos tipos de interdependencias. Consulte Pasos de cálculo.
Si Essbase determina que el cálculo paralelo mediante el método CALPARALLEL es posible, Essbase divide el cálculo en tareas más pequeñas que son independientes entre sí. Durante el cálculo, Essbase realiza las tareas más pequeñas simultáneamente.
Sin embargo, Essbase recurre al cálculo en serie si hay interdependencias complejas entre las fórmulas que participan en el pase. Tales interdependencias pueden hacer imposible el cálculo paralelo.
Considere si el método FIXPARALLEL podría ser más adecuado para su caso de uso. Consulte FIXPARALLEL Parallel Calculation.
CALCPARALLEL Directrices de Cálculo Paralelo
La estructura del esquema y el diseño de la aplicación de Essbase determinan si la activación del cálculo paralelo puede mejorar el rendimiento del cálculo. Antes de activar el cálculo paralelo de estilo CALCPARALLEL, revise las siguientes directrices, que le ayudarán a obtener el beneficio completo.
-
Una o más fórmulas presentes en un cálculo pueden impedir que Essbase utilice el cálculo paralelo de CALCPARALLEL incluso si está activado. Para obtener una descripción de las fórmulas que pueden forzar el cálculo en serie independientemente de la configuración del cálculo paralelo, consulte Relación entre el cálculo paralelo de CALCPARALLEL y otras funciones de Essbase.
-
Las tareas de cálculo se generan a lo largo de las últimas dimensiones ligeras n de un esquema. Estas dimensiones dispersas que se utilizan para identificar tareas se denominan dimensiones de tarea. El número de dimensiones de tarea, n, es seleccionado dinámicamente por Essbase, o puede sustituir el número especificando un valor para el comando de cálculo SET CALCTASKDIMS (o el valor de configuración de la aplicación CALCTASKDIMS).
Ordene las dimensiones dispersas en un esquema de menor a mayor, según el tamaño real de la dimensión (según lo informado por la sentencia MaxL dimensión get dbstats de la base de datos de consulta DBS-NAME). Esta recomendación de ordenación es coherente con las recomendaciones para optimizar el tamaño de la caché de calculadora y coherente con otras recomendaciones de esquema. Para obtener una descripción de las situaciones que pueden necesitar utilizar dimensiones adicionales (más de la última dimensión ligera) y para obtener instrucciones sobre cómo aumentar el número de dimensiones ligeras utilizadas, consulte Identificación de Tareas Adicionales para el Cálculo Paralelo.
-
El cálculo paralelo de CALCPARALLEL es efectivo en aplicaciones no particionadas y en estas aplicaciones particionadas:
-
Particiones replicadas
-
Particiones transparentes si el cálculo se produce en la base de datos destino. El número de dimensiones ligeras especificado por SET CALCTASKDIMS en un script de cálculo se debe definir en 1. Para obtener información sobre las limitaciones impuestas por el uso de cálculos paralelos con particiones transparentes, consulte Relationship Between CALCPARALLEL Parallel Calculation and Other Essbase Features; para obtener información sobre el uso de SET CALCTASKDIMS, consulte Identify Additional Tasks for Parallel Calculation.
-
-
Las transacciones de actualización, como los cálculos y las actualizaciones de datos, son solicitudes que consumen más recursos que las consultas MDX o los scripts de informes.
Relación entre el cálculo paralelo de CALCPARALLEL y otras funciones de Essbase
Si utiliza el cálculo paralelo CALCPARALLEL en el cubo de Essbase, tenga en cuenta las limitaciones relacionadas con el rendimiento de recuperación, las fórmulas, el mapa de bits de caché de calculadora y las particiones transparentes.
Rendimiento de recuperación
La colocación de la dimensión ligera más grande al final del esquema para un rendimiento máximo de cálculo paralelo puede ralentizar el rendimiento de recuperación.
Limitaciones de fórmulas
La presencia de algunas fórmulas puede forzar el cálculo en serie. Las siguientes colocaciones de fórmulas probablemente forzarán el cálculo en serie:
-
Fórmula en un miembro denso, incluidos todos los miembros almacenados y cualquier miembro de cálculo dinámico del que pueda depender un miembro almacenado, que provoca una dependencia de un miembro de la dimensión que se utiliza para identificar tareas para el cálculo paralelo.
-
Fórmula que contiene referencias a variables declaradas en un script de cálculo que utiliza @VAR, @ARRAY, @XREF o @XWRITE. Considere el uso de FIXPARALLEL para el cálculo paralelo en su lugar.
-
Una fórmula de miembro de dimensión dispersa que utiliza @XREF y la dimensión para el miembro disperso se calcula por completo. @XREF no fuerza el cálculo en serie cuando está en miembros de cálculo dinámico densos que no dependen de otros miembros almacenados durante el cálculo por lotes.
-
Fórmula de miembro que causa una dependencia circular. Por ejemplo, el miembro A tiene una fórmula que hace referencia al miembro B, y el miembro B tiene una fórmula que hace referencia al miembro C y el miembro C tiene una fórmula que hace referencia al miembro A.
-
Fórmula en un miembro denso o disperso con una dependencia de uno o varios miembros de la dimensión utilizada para identificar tareas para procesamiento paralelo.
-
Fórmula de miembro de dimensión ligera que contiene referencias a miembros de otras dimensiones ligeras.
Si necesita utilizar una fórmula que pueda impedir el cálculo paralelo, considere el uso de FIXPARALLEL. De lo contrario, puede marcar el miembro de la fórmula como Cálculo dinámico o excluir la fórmula del ámbito del cálculo. Para ver si una fórmula impide el cálculo paralelo, compruebe el log de la aplicación. Para ver los mensajes de error relevantes, consulte Monitor CALCPARALLEL Parallel Calculation.
Caché de calculadora
Al inicio de una transferencia de cálculo, Essbase comprueba el tamaño de la caché de calculadora y el grado de paralelismo y, a continuación, utiliza la opción de bitmap de caché de calculadora adecuada para el máximo rendimiento. Por lo tanto, la opción de bitmap utilizada para el cálculo paralelo puede ser diferente de la utilizada para el cálculo en serie.
Por ejemplo, supongamos que Essbase realiza un cálculo en serie y utiliza varios bitmaps y una única dimensión de anclaje. Sin un cambio explícito del tamaño de caché de la calculadora, Essbase puede realizar un cálculo paralelo utilizando solo un mapa de bits y una única dimensión de anclaje.
Puede determinar el modo de caché de calculadora que controla las opciones de bitmap comprobando el log de la aplicación al inicio de cada pase de cálculo para una entrada similar a la siguiente:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.Al utilizar el cálculo paralelo en el modo de mapa de bits múltiple, puede encontrar un alto uso de memoria. Si es así, puede utilizar la configuración PARCALCMULTIPLEBITMAPMEMOPT para optimizar el uso de memoria en el modo de mapa de bits múltiple. Esta configuración se puede utilizar con MULTIPLEBITMAPMEMCHECK o por separado. Para activar PARCALCMULTIPLEBITMAPMEMOPT, agregue lo siguiente a la configuración de la aplicación:
PARCALCMULTIPLEBITMAPMEMOPT TRUELimitaciones de Particiones Transparentes
El cálculo paralelo con particiones transparentes tiene las siguientes limitaciones:
-
No puede utilizar el cálculo paralelo en particiones transparentes a menos que el cálculo se produzca en el destino.
-
Debe definir las dimensiones de tarea en 1. Para ello, utilice el comando de cálculo SET CALCTASKDIMS o el valor de configuración CALCTASKDIMS.
-
Debe aumentar la caché de calculadora para que se puedan utilizar varios bitmaps. Puede identificar el modo de caché de calculadora que controla las opciones de bitmap comprobando el log de la aplicación al inicio de cada pase de cálculo para una entrada similar a la siguiente:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
Comprobar configuración actual de CALCPARALLEL
Puede comprobar la configuración de la aplicación o el script de cálculo que desea utilizar para ver si el cálculo paralelo de estilo CALCPARALLEL está activado para el cubo de Essbase.
Para comprobar si el cálculo paralelo de estilo CALCPARALLEL se ha activado en el nivel de aplicación, busque el parámetro de configuración CALCPARALLEL y compruebe el valor especificado.
De manera alternativa, el cubo (o las secuencias de comandos de cálculo) puede utilizar bloques de comandos FIXPARALLEL para el cálculo paralelo.
Para CALCPARALLEL, el número de threads que pueden realizar tareas simultáneamente para completar un cálculo se especifica mediante un valor entre 1 y 128. Las bases de datos de almacenamiento de bloques (BSO) y almacenamiento agregado (ASO) que se ejecutan en plataformas de 64 bits admiten hasta 128 threads.
Para comprobar si una secuencia de comandos de cálculo establece el cálculo paralelo del estilo CALCPARALLEL, busque el comando SET CALCPARALLEL. Revise el script detenidamente, ya que el script puede activar o desactivar el cálculo paralelo más de una vez.
Activar cálculo paralelo de CALCPARALLEL
Para utilizar el cálculo paralelo de estilo CALCPARALLEL con el cubo de Essbase, puede activarlo para la aplicación o puede implementarlo solo para uno o más scripts de cálculo.
Para utilizar el cálculo paralelo CALCPARALLEL con el cubo de Essbase, utilice uno de estos métodos:
-
Agregue o edite los valores de configuración de la aplicación CALCPARALLEL y CALCTASKDIMS.
-
Utilice los comandos de cálculo SET CALCPARALLEL y SET CALCTASKDIMS en una secuencia de comandos de cálculo.
Siga este workflow para activar el cálculo paralelo al estilo CALCPARALLEL:
Sugerencia:
Puede combinar el uso de CALCPARALLEL y SET CALCPARALLEL si el sitio lo requiere. Por ejemplo, puede definir CALCPARALLEL como desactivado en el nivel de servidor y utilizar un script de cálculo para activar y desactivar el cálculo paralelo según sea necesario.
Identificar tareas adicionales para cálculo paralelo
De forma predeterminada, Essbase utiliza una técnica iterativa para seleccionar el número óptimo de dimensiones de tarea que se utilizará para el cálculo paralelo de estilo CALCPARALLEL.
Por ejemplo, si tiene una sentencia FIX en un miembro de la última dimensión ligera, también puede incluir la dimensión ligera siguiente al último del esquema. Debido a que cada combinación de miembros única de estas dos dimensiones se identifica como una tarea potencial, se crean más y más tareas más pequeñas, lo que aumenta las oportunidades para el procesamiento paralelo y la mejora del equilibrio de carga.
Para especificar el número de dimensiones de tarea para el cálculo paralelo:
- Si no está seguro, verifique si el cálculo paralelo está activado mediante el proceso descrito en Comprobación de la configuración actual de CALCPARALLEL. Sin CALCPARALLEL activado (o SET CALCPARALLEL utilizado en una secuencia de comandos de cálculo), CALCTASKDIMS no tiene ningún efecto.
- Opcional: Essbase selecciona un número predeterminado, n, de dimensiones de tarea que se utilizará para el cálculo paralelo y este número se imprime en el archivo log de la aplicación como un mensaje informativo; por ejemplo:
Parallelizing using [2] task dimensions. Para sustituir el valor predeterminado n, agregue o modifique el valor de configuración CALCTASKDIMS para la aplicación o utilice el comando de secuencia de comandos de cálculo SET CALCTASKDIMS. - Ejecute el script de cálculo.
En algunos casos, Essbase utiliza menos dimensiones para identificar tareas que las especificadas por CALCTASKDIMS o SET CALCTASKDIMS.
Ajustar CALCPARALLEL con mensajes de log
Un análisis cuidadoso de los mensajes de log puede ayudarle a optimizar la forma en que Essbase divide los procesos de cálculo paralelos en tareas.
Si utiliza el cálculo paralelo de CALCPARALLEL, puede encontrar los siguientes mensajes de 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.
Si se encuentra este mensaje, significa que durante un cálculo paralelo, Essbase se abstuvo de aumentar el número de dimensiones de tarea, en caso de que eso hubiera dado lugar a que las tareas se volvieran demasiado pequeñas. Cuando las tareas se vuelven demasiado pequeñas, la sobrecarga de programación de cálculos podría superar los beneficios del paralelismo. Sin embargo, cuando las tareas son demasiado grandes, es posible que no haya suficientes tareas para que los threads de cálculo paralelos funcionen.
Si la siguiente dimensión de tarea potencial no es la primera dimensión dispersa, considere aumentar el número de dimensiones de tarea en una, mediante el comando de cálculo SET CALCTASKDIMS (o el valor de configuración CALCTASKDIMS) y observe si eso mejora la velocidad del cálculo. Además, considere el uso de FIXPARALLEL para realizar selecciones de tareas personalizadas que sean diferentes de CALCPARALLEL (consulte Cálculo paralelo de 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.
Para el cálculo paralelo, tener un número suficiente de tareas ayuda a reducir los efectos del sesgo de datos. Sin embargo, demasiadas tareas (incluso para tareas de tamaño adecuado) pueden hacer que la sobrecarga de programación supere los beneficios. Essbase tiene como destino un rango óptimo. Si ve el mensaje anterior, significa que Essbase ha intentado cumplir el número mínimo recomendado de tareas agregando una dimensión de tarea más; al hacerlo, es posible que se haya cruzado el límite superior para el recuento de tareas.
Si la última dimensión de tarea seleccionada por Essbase no es la única dimensión de tarea, considere la posibilidad de reducir las dimensiones de tarea en una, utilizando el comando de cálculo SET CALCTASKDIMS (o el valor de configuración CALCTASKDIMS) y observe si eso mejora la velocidad del cálculo. También puede utilizar FIXPARALLEL para realizar selecciones de tareas personalizadas que sean diferentes de CALCPARALLEL.
Supervisión del Cálculo Paralelo de CALCPARALLEL
Puede ver los eventos relacionados con el cálculo en paralelo en el log de la aplicación. Para cada transferencia de cálculo, Essbase escribe varios tipos de información en el registro de la aplicación para admitir el cálculo paralelo.
Cuando se puede utilizar el cálculo paralelo
Si ha activado el cálculo paralelo y Essbase ha determinado que se puede realizar el cálculo paralelo, Essbase escribe un mensaje en el log de la aplicación:
Calculating in parallel with n threadsn representa el número de tareas simultáneas especificadas en CALCPARALLEL o SET CALCPARALLEL.
Cuando el cálculo paralelo no se puede utilizar debido a una fórmula
Para cada fórmula que impide el cálculo paralelo (fuerza el cálculo en serie), Essbase escribe un mensaje en el log de la aplicación:
Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.memberName representa el nombre del miembro en el que existe la fórmula correspondiente. Puede buscar dichos mensajes en el log de la aplicación y considerar la eliminación de la fórmula o, si es posible, etiquetar al miembro o miembros relevantes como Cálculo dinámico para que no aparezcan en la transferencia de cálculo.
Essbase escribe un mensaje en el log de la aplicación que especifica el número de tareas que se pueden ejecutar simultáneamente (en función de los datos, no del valor de CALCPARALLEL o SET CALCPARALLEL):
Calculation task schedule [576,35,14,3,2,1]El mensaje de ejemplo anterior indica que se pueden ejecutar 576 tareas simultáneamente. Una vez completadas las 576 tareas, se pueden realizar 35 más simultáneamente, y así sucesivamente.
El beneficio del cálculo paralelo es mayor en los primeros pasos y disminuye a medida que se realizan menos tareas simultáneas.
El grado de paralelismo depende del número de tareas del programa de tareas. Cuanto mayor sea el número, más tareas se pueden ejecutar en paralelo y mayores serán las ganancias de rendimiento.
Cuando el cálculo paralelo resulta en tareas vacías
Essbase escribe un mensaje en el archivo log de la aplicación que indica cuántas tareas están vacías (no contienen cálculos):
Info(1012681) Empty tasks [291,1,0,0,0,0]En el ejemplo anterior, Essbase indica que 291 de las tareas del nivel 0 estaban vacías.
Si el ratio de tareas vacías respecto a las tareas especificadas en el programa de tareas de cálculo es superior al 50% (por ejemplo, 291 / 576), es posible que el paralelismo no le proporcione un rendimiento mejorado debido a la alta dispersión en el modelo de datos.
Puede cambiar las asignaciones densas y dispersas para reducir el número de tareas vacías y aumentar las ganancias de rendimiento del cálculo en paralelo.