Performance Considerations - SuperSERVER
This page contains some guidelines for tuning the cross tabulation performance of SuperSERVER.
If you make any changes to the server configuration described on this page, then you must restart SuperSERVER in order for your changes to take effect.
Multithreading
If the machine running SuperSERVER has multiple CPUs/CPU cores, then you can tune the tabulation performance by modifying the server settings.
There are two commands you can use in SuperADMIN to tune the performance:
Setting | Controls | Recommended Configuration | |
---|---|---|---|
xtabProcessors | The number of cross tabulations that can run at the same time.
| Set this to the number of cores available on the server (but not less than 3 or 4, even if there are fewer cores). | If this is set too low, then a large cross tabulation job might block the server for other users. For example, if this is set to 1 then only one job will be run at a time with others queued to run sequentially after each other. If a user starts a cross-tabulation that takes a long time then no one else will be able to perform any tabulations until that job completes. In addition, some cross-tabulations contain operations that make them run on a single thread (for example, mean and median). If you have |
numberThreadsPerCrossTab | How many cores a single cross tabulation can be split over. | Set this to the number of available cores. | Currently, this setting only affects cross tabulations for counts. Cross tabulations containing means, medians or multiple fact tables cannot currently be split across multiple threads/cores. By setting this to the number of available cores it ensures that even if only one person is running a simple cross tabulation, the job will be split over all the available cores and the results will be returned in the fastest possible time.
|
To configure these settings, use the following commands:
server <id> config xtabProcessors <value>
server <id> config numberThreadsPerCrossTab <value>
Where:
<id>
is the ID of the server you want to configure (you can get a list of configured servers and their IDs by typing theserver
command on its own).<value>
is the value to use for each of these settings.
SuperSERVER Memory Usage
Another setting that you can modify in SuperSERVER is the data cube dense memory limit.
server <id> config dataCubeDenseMemoryLimit <value>
This property operates independently of the number of threads. It controls the storage mechanism used by SuperSERVER for cross tabulation results.
When the memory required to contain the cross tabulation results goes over the configured limit (in bytes), SuperSERVER switches the storage to a more compact storage mechanism, which may be a bit slower.
There is a trade off between memory usage and speed of tabulation: the more compact storage mechanism uses much less memory for large sparse result cubes. For large databases with an extremely large number of records, if the results cube is very dense, then the compact storage may use more memory than the standard one.