Determining how much memory is needed
Enough memory is needed so that it is possible to do the following things:
- Successfully deploy the contents of a set of BAR files to a specific DataFlowEngine (DFE).
- Successfully run the deployed components.
The amount of memory depends on how much memory the objects use at run time and how efficiently the
application uses broker memory. This amount can be determined only by observation. During initial application
deployment and testing, developers can make the following determinations:
- How much memory is used by the DFE when an empty execution group is started? This amount provides a base line for understanding how much memory is used in the process address space with no deployed components and no runtime activity.
- How much memory is used by the process after components were deployed and after the DFE was restarted? The DFE is restarted here to ensure that any memory allocated from the heap purely for deployment purposes is returned to the heap.
- How much memory is used by the DFE after some running of mixed or representative workload?
Developers need to use these observations to establish how many components can safely be deployed to a DFE based both on the memory that is used at DFE start-up and after some running. No hard rule exists because the size of deployed components and the memory that is used in runtime message processing varies in every application.
When more instances for the flows are used, the memory is initially the same as if only one instance is deployed. To test the memory usage of such a flow, you must provide sufficient workload for all instances to run at the same time to observe the maximum memory usage.