Flow Controllers and Memory Management

Besides regulating the number of messages inside a flow, flow controllers also have a memory management purpose:

  • Flow controllers control the number of Service Orders kept in memory. If the number of Service Orders is higher than a configurable value, Service Orders are swapped out when entering order queues.

  • Flow controllers monitor the shared memory occupation percentage. When this number is too high, the flow controllers stop the drivers they control, preventing new work to enter the Fulfillment Provisioning application. Already entered orders will keep on processing in order to free up place in the shared memory. After enough memory has been freed (when the shared memory occupation goes below 80 % of the configured maximum allowed occupation), the drivers are restarted.

The relevant attributes on the flow controller for memory management are:

  • FlowController::swapLevel : this attribute controls the number of service order allowed in OSSM before the order queues swap out orders.

  • FlowController::maxOSSMPercentage : this attribute controls the maximum occupation percentage before the flow controller stops the drivers.