Don’t forget the WORKERTHREADS!

Beginning in Essbase, there is a new configuration setting that should not be forgotten – “WORKERTHREADS”. Why is this configuration setting important you may ask. Previously, Essbase operations that could run in parallel (calculations, data loads etc) used dynamically created threads for their work. Administrators need not bother setting thread pools or assigning threads. Now in, the thread pools from which these parallel processes rely on can be set explicitly in the Essbase configuration file. You may ask, “What if i don’t explicitly set this value in the config file”. If the WORKERTHREADS setting is not explicitly set, it will default to half the size of the “SERVERTHREADS” config settings. If you don’t have the “SERVERTHREADS” setting explicitly set, “SERVERTHREADS” will default to 20, implicitly setting “WORKERTHREADS” to 10. You may ask “Whats the problem with the default settings?”. Well, with a pool of only ten threads, you are limited to a total of 10 thread in parallel across the entire server. So if you try to run two calculations at the same time each with a CALCPARALLEL setting of 8, the total parallelism of these two calculations running at the same time will be limited to 10 threads instead of the requested 16. With the powerful servers and 64 bit architecture we’re seeing with Essbase today, limiting yourself to 10 total threads for parallel operations may leave a LOT of performance on the table.

Now that we know this setting should be addressed when setting up your Essbase environment, the question arises of what should the value for WORKERTHREADS be set to. The physical architecture of the Essbase server, the number of applications and amount of parallel processing will drive the optimal settings. Testing will be important to ascertain the most optimum setting in for each environment. However, Oracle does have some guidelines that can be used for initial baselines. Below is a list of example server architectures and recommended starting points for WORKERTHREADS and associated configuration settings:

32-bit (8 cores)

64-bit (16 cores)

64-bit (32 cores)

64-bit (16 cores) and Two Databases

Oracle Exalytics In-Memory Machine, 40 core, X2-4

Block storage:

Aggregate storage:

Oracle Exalytics In-Memory Machine, SPARC 128 core

Block storage:

Aggregate storage:

Oracle Exalytics In-Memory Machine, 60 core, X4-4

Block storage:

Aggregate storage:

Pete Strayer

About Pete Strayer

Setting aside aspirations to become a professional bass fisherman or race car driver, Pete Strayer instead opted for the glorious career as an EPM consultant. When he’s not making his dad’s secret sloppy joe recipe, you’ll likely find him creating some MDX calculations or exploring new possibilities with Oracle Data Integrator. An Arizona native, Pete’s hobbies include eating (especially pizza or Mexican food), fast cars, HPDE events (google it) and spending time with his family.


  1. Hi,
    Will X4-4 settings be OK for X5-4?

    When setting these in .cfg file do you just set the ASO ones? How would you differentiate between BSO and ASO when setting them? Confused there 🙂 Also, is that a typo on DLTHREADSPREAPRE and should be DLTHREADSPREPARE?

  2. Hi Sam,

    I do believe the X4-4 settings would be a good starting point for a X5-4 machine. Since the X5-4 machine is even stouter, you can probably play around a little and see if you get some improvements from increasing settings.

    If you’re using the same value for a setting between ASO and BSO applications and you want it to apply universally to all apps, then you don’t need to specify APPs or DBs specifically. If you want to have these settings use different values for a BSO application versus and ASO application, you will need to specify these settings individually by APP or DB. Or even from ASO to ASO app, you will need to have a line for each APP or DB in the configuration file. And yes that is a typo for the DLTHREADSPREPARE (that’s a cut and paste from Oracle own document no less 🙂 )

Leave a Reply

Your email address will not be published. Required fields are marked *