Using Parallel Execution in Rulesets

In some cases, executing rules in a parallel fashion can help overall performance. Calculation options are set at the Ruleset level and affect all rules in the Ruleset. The default option for all Rulesets is sequential processing. This means that every rule is executed individually, and all rules in the Ruleset are executed one by one.

Ensure that Your Rules are Parallel Safe

Rules often have an impact on the execution of other rules. If one rule allocates into the source range of another rule, the sequence of running the rules can have a dramatic impact on the final result. This is why the default calculation option is sequential.

If there are rules that can safely be executed in parallel, then using the parallel calculation option can help improve performance. Set the parallel processing option on the Ruleset or Rulesets you want to enable. You also need to set the Maximum Concurrent Threads option on the Application Properties screen.

Experiment with the Number of Threads

Finding the right level of concurrent threads is a matter of experimentation. There is a point at which performance improvements cease, and the use of additional threads to launch additional rules is counterproductive. The best practice for parallel calculation is to test Rulesets starting with four concurrent threads and gradually increase the number of threads until performance improvements stop. While rules that do not mix source ranges are good candidates for parallel processing, their destination ranges may still share common locations. In these cases, Oracle Essbase will still have to pause one rule until the other one has finished writing destination data. For this reason, you will see a point at which increasing the thread count no longer helps with performance.