Multi-threaded optimization

You can enable multi-threaded optimization to improve the performance of Optimize, that is, shorten the amount of time it takes to run an Optimize session. To enable multi-threaded optimization, set the EnableMultithreading configuration property to true.

*

Enabling multi-threaded optimization may significantly improve Optimize performance. The amount of performance improvement is dependent on many factors including the type of optimization rules you use, the interaction of those rules with your data, the speed of your database I/O, and your type and configuration of hardware. The maximum degree of parallelism achievable is governed by the non-parallel portions of processing and will differ from Optimize session to Optimize session.

In general, use the following guidelines.

*
A significant portion of an optimization session run includes reading data from the Proposed Contacts Table (PCT), representing the optimization rules, preparing and retrieving data from the database, randomizing and creating chunks, and writing to the Optimized Contacts Table (OCT). Multi-threaded optimization does not affect these processes, which run serially. To improve the performance of reading the PCT and writing the OCT, consider using a database load utility and optimizing your database configuration.
*
Optimize leverages multi-threaded optimization most when processing the algorithms which implement cross-customer rules.
*
You define the number of threads processing the cross-customer rules with the MaxCustomerSampleProcessingThreads configuration property. You may need to tune your system to find the optimal value of this setting based on your available RAM and hardware performance characteristics.
*
You may be able to run more threads in parallel if you have a smaller CustomerSampleSize because the RAM utilization per thread goes down. However, decreasing this value also decreases the amount of time required to process a chunk, decreasing the ration between chunk processing and preprocessing, causing the latter to become a bottleneck sooner.
*
You define the number of threads reading data from a sample of customers with the ProcessingThreadQueueSize configuration property. You define the number of threads writing data to a staging table with the PostProcessingThreadQueueSize configuration property.

For more details about tuning multi-threaded optimization for your specific Optimize implementation, contact your IBM® Unicarepresentative.