Showing posts with label RESTRUCTURETHREADS. Show all posts
Showing posts with label RESTRUCTURETHREADS. Show all posts

Tuesday, September 1, 2015

ASO Restructure Performance

According to the Essbase Tech Ref, the RESTRUCTURETHREADS setting does not apply to ASO. But if I watch the CPU usage of the ESSSVR process on Linux during ASO restructures it often goes above 100% -- I've seen it over 1000% which means that 10 cores should be working to capacity. So I'm going to test a simple question today. Does setting RESTRUCTURETHREADS above 1 improve ASO restructure performance on machines with more than one core?

This is a very straightforward test. I've got an ASO cube with about 1GB of input level data.

The Test


  1. Make a copy of the database.
  2. Validate that there is no RESTRUCTURETHREADS setting in the essbase.cfg file.
  3. Add a member to the accounts dimension and watch the CPU usage during the restructure.
  4. Record the elapsed time of the restructure.
  5. Validate that RESTRUCTURETHREADS is set to 4 in the essbase.cfg file.
  6. Restart the Essbase server.
  7. Add a member to the accounts dimension and watch the CPU usage during the restructure.
  8. Record the elapsed time of the restructure.

The Results

Elapsed time without RESTRUCTURETHREADS setting: 70.97s
Elapsed time with RESTRUCTURETHREADS 4 setting: 68.59s

That's close enough to call it even. I watched the CPU usage during the process and it was similar each time. It spiked to 200% for a good portion of the restructure. So what's going on? I'm not exactly sure but it looks like ASO restructures are multi-threaded and there's no setting to control how many threads to give the process. I can't find any documentation about it. If you do, let me know.