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.

No comments: