Parallel java thread evaluation and Pega Decision Management Logic
We are currently reviewing our future platform infrastructure requirements at our client. We currently struggle to consistently meet the performance SLAs of our online Banking and Mobile channels. In order to resolve that we either need to improve the efficiency of the decision logic evaluation, or host the performance critical Pega app nodes on faster servers.
We’re currently running on servers using mid-performing Intel Xeon Haswell CPUs (equivalent to AWS’s M4 general purpose servers). We may have the option to move to high performance compute servers using Intel Skylake (or even Cascade Lake) CPUs (either in RBS data centres, or using AWS’s C5 compute servers).
The overall CPU performance of these newer compute servers is significantly faster than the Haswell CPUs. However, this is largely because the new CPUs have significantly more CPU cores. If you examine the single core thread performance on CPUs the performance improvements of the newer generations of CPUs are not as significant. Some initial desktop research suggests that the single thread performance between our current CPUs and the latest high performance compute servers that may become available to us within RBS or AWS, might be ~20% at the most.
So even if we did migrate our real-time app servers to the most performant compute servers that are likely to be readily available to us we might only see a 20% (or less) improvement in single thread evaluation.
My understanding (from some time back) was that the data-flow and decision logic evaluation within Pega was single-threaded in a state-less requestor service.
So I’m interested in understanding whether any of the more recent Pega releases have introduced any constructs or other capabilities within Pega Decision Management, which will allow it to evaluate any elements of the business decision logic in parallel. In other words the underlying java will be able to evaluate the logic using multiple concurrent threads. I know that Java 8 introduced new features (such as streams) and more extensive asynchronous programming constructs – that can support parallel execution. But I don’t know if the Pega decision management product can exploit any of these features.
Would you able to raise a question with Pega support/engineering to understand if there are any decision management logic constructs that can exploit parallel processing in any recent Pega releases (from what I can tell reading through release notes there aren’t). Or firm plans to introduce such capabilities in the near future?
Yes, Pega decision hub (which is part of the Pega platform) uses parallel processing to allow better system performance. However, as you know, performance tuning is highly complicated, you would have to run a lot of performance tests to know (comparative study between more powerful CPU servers and the current), based on your critical business cases. Check this link for info regarding Pega Decision Hub: https://community.pega.com/knowledgebase/products/customer-decision-hub
I will have a stab at them after upgrading to the 8.3 world (from 7.3.1) with the current artifcats we have and see the before and after runs to check for any performance gains in the execution time of the strategies for the inbound and outbound channels.