Albin sent me some more benchmark results; an update to the results I published a couple of weeks ago. The initial results were intriguing because of the low heap usage on IBM z/OS, while we only ran tests with the Rule Execution Server using the J2SE and POJO rule sessions. For the second benchmark run Albin therfore tested WebSphere Application Server running on Windows, to provide a point of comparison with the same application server running on z/OS. He also expanded the benchmark to test ruleset execution using IlrContext, providing a measure of the memory overhead of the Rule Execution Server.
JVM Heap Size by Number of Rules (Windows)
The chart below shows the memory requirements for ruleset execution based on 4 scenarios:
- Command line application using IlrContext rule engine API
- Command line application using Rule Execution Server with J2SE rule session provider
- Servlet deployed to IBM WebSphere Application Server using RES with J2SE rule session
- Servlet deployed to IBM WebSphere Application Server using RES with POJO rule session
JVM Heap Size by Number of Rules (z/OS)
The four scenarios described above were also run on z/OS.
Comparing Windows vs z/OS Heap Usage
- JVM heap usage reported on z/OS is consistently less than on Windows. For example, using a Servlet deployed to WAS with Rule Execution Server with POJO provider, the memory usage was 17%-21% less than the same configuration running on Windows.
- The Rule Execution Server has a heap memory overhead compared to IlrContext of between 3% and 15% depending on configuration and the size of the ruleset.
- There is very little difference in heap usage between the Rule Execution Server with J2SE provider and with POJO rule session provider on either Windows or z/OS.
The product overall showed predictable memory usage patterns on both Windows and z/OS with modest heap memory requirements. The highest heap memory reported was 32 MB for a Servlet deployed to WebSphere Application Server using the Rule Execution Server J2SE provider, executing a ruleset containing 528 rules.