Author |
Message
|
stky |
Posted: Mon Dec 03, 2018 2:13 pm Post subject: ACE 11/IIB10 Shared Libraries and Runtime Performance |
|
|
Newbie
Joined: 03 Aug 2018 Posts: 4
|
Looked around the documentation for an answer, but does anyone know what the performance differences are between using static and shared libraries? Especially related to memory size. We are working towards a performance based test but are doing preliminary research.
For example lets say we have a single Application with 5 message flows and 10 libraries. If they are all static would the memory usage be the same if they are all shared? All of them being bundled under one application or separated out should create the same amount of memory usage on the Integration Server or is this not true at runtime?
Thank you. |
|
Back to top |
|
 |
timber |
Posted: Thu Dec 06, 2018 12:44 am Post subject: |
|
|
 Grand Master
Joined: 25 Aug 2015 Posts: 1292
|
The answer depends on what the libraries contain. I can only give a definitive answer re: libraries that contain XML or DFDL schemas.
If the schemas in a library are large then it will be more memory-efficient to deploy them in a shared library. If you deploy them in a static library then each application that uses the library will compile its own copy of the schemas and store them in memory.
CPU usage will be close to identical regardless of how you deploy the schemas. |
|
Back to top |
|
 |
abhi_thri |
Posted: Thu Dec 06, 2018 1:09 am Post subject: |
|
|
 Knight
Joined: 17 Jul 2017 Posts: 516 Location: UK
|
|
Back to top |
|
 |
stky |
Posted: Mon Dec 10, 2018 8:35 am Post subject: |
|
|
Newbie
Joined: 03 Aug 2018 Posts: 4
|
timber wrote: |
The answer depends on what the libraries contain. I can only give a definitive answer re: libraries that contain XML or DFDL schemas.
|
They are primarily XML.
timber wrote: |
If the schemas in a library are large then it will be more memory-efficient to deploy them in a shared library. If you deploy them in a static library then each application that uses the library will compile its own copy of the schemas and store them in memory. |
I might not be looking in the right place but our questions relate to memory utilization during this. If a static library is loaded with the application, is it inherently faster than going "outside" of the app memory to access a shared library? Is there a memory tradeoff to making more "calls" to a shared library instead of a coupled static one?
From my understanding the entire Integration Server loads up as a single JVM, meaning the differences in memory accessing speeds shouldn't change at all in reference between Shared or Static, at least at the OS level. Wondering if this is not true. |
|
Back to top |
|
 |
timber |
Posted: Mon Dec 10, 2018 4:05 pm Post subject: |
|
|
 Grand Master
Joined: 25 Aug 2015 Posts: 1292
|
Quote: |
From my understanding the entire Integration Server loads up as a single JVM |
You're wrong there. The core of IIB is a native-code application, and does not run in the JVM at all. Every integration server owns a JVM which it uses to run a variety of Java code (user-provided and internal to the product).
Quote: |
the differences in memory accessing speeds shouldn't change at all in reference between Shared or Static, at least at the OS level. Wondering if this is not true. |
That much is true. The compiled schemas are held in an in-memory cache (not in the JVM) and can be accessed equally fast for shared or static libraries. |
|
Back to top |
|
 |
|