Connectors : Consolidation Server : Configuring the Consolidation Server : Tuning and Sizing the Consolidation Server
 
Tuning and Sizing the Consolidation Server
 
Tuning
Sizing
Though the object graph is serialized on disk, it is also fully sent to memory for performance reasons.
Tuning
Basic Tuning
In the Administration Console, you can adjust:
The number of aggregation threads in Consolidation > Advanced Settings. For example, if you set it to 4, you get 4 transformation workers, 4 aggregation workers, and 4 forwarders (* by number of forward rules), all potentially running in parallel for an incremental batch.
Your commit conditions to fit your current scenarios
Get the Initial Scan Recommended Settings
1. In Consolidation > Commit triggers, specify a commit trigger based on No. of tasks to 500,000 tasks.
2. Specify a commit trigger based on Inactivity set to 1 task and 60s of inactivity.
3. Add an Aggregation trigger based Inactivity set to 1 task and 60s of inactivity (so your aggregation starts at the end of your initial push).
Get the Incremental Scan Recommended Settings
1. In Consolidation > Commit triggers, specify a commit trigger based on No. of tasks to 50,000 tasks.
2. Specify a commit trigger based on Inactivity set to 1 task and 60s of inactivity.
3. Adjust your aggregation triggers to fit your required freshness.
Advanced Tuning
In your <DATADIR>/config/Consolidation.xml file, you can add an AdvancedConfig node to ConsolidationConfig to tweak internal queues used during aggregation. It might increase throughput with more buffering, but you must take it into account in your sizing.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<conso:ConsolidationConfigList version="0" xmlns:bee="exa:exa.bee"
xmlns:edit="exa:com.exalead.editor.v10" xmlns:index="exa:com.exalead.mercury.mami.indexing.v10"
xmlns:conso="exa:com.exalead.mercury.mami.consolidation.v10" xmlns:config="exa:exa.bee.config>
<conso:ConsolidationConfig name="cc0_standard" nbThreads="4"
maxNativeMemoryConsumptionThreshold="enabled" maxNativeMemoryConsumptionInMB="2048">
...
<conso:AdvancedConfig>
<conso:AdvancedAggregationConfig impactQueueSize="8" aggregationQueueSize="8"
forwardQueueSize="800" />
</conso:AdvancedConfig>
</conso:ConsolidationConfig>
</conso:ConsolidationConfigList>
Default values for AdvancedAggregationConfig are:
Impact Queue size / Aggregation Queue size = number of threads * 2
Forward Queue size = number of threads * 200
Sizing
Heap Sizing (Estimation)
Process
Sizing formula
Transformation
MAX_PAYLOAD_SIZE * NB_THREADS * 8192
Impact Detection
((VERTEX_SIZE + ((MAX_PATH_LENGTH * MAX_PATH_COUNT) * (VERTEX_SIZE + (MAX_ARC_COUNT_PER_VERTEX * ARC_SIZE)))) * NB_THREADS) + (IMPACT_QUEUE_SIZE * VERTEX_SIZE)
Aggregation
((MAX_PAYLOAD_SIZE + ((MAX_PATH_LENGTH * MAX_PATH_COUNT) * (VERTEX_SIZE + (MAX_ARC_COUNT_PER_VERTEX * ARC_SIZE)))) * NB_THREADS) + (AGGREGATION_QUEUE_SIZE * VERTEX_SIZE)
Forward
MAX_PAYLOAD_SIZE * (FORWARD_QUEUE_SIZE + (FORWARD_RULES_COUNT * 100))
Caching
10 MB * NB_THREADS
VERTEX_SIZE (in bytes)
URI_SIZE + (TYPE_COUNT * TYPE_SIZE)
ARC_SIZE (in bytes)
TARGET_URI_SIZE + ARC_TYPE_SIZE
PAYLOAD_SIZE (in bytes)
(META_COUNT * (META_KEY_SIZE + META_VALUE_SIZE)) + (DIRECTIVE_COUNT * (DIRECTIVE_KEY_SIZE + DIRECTIVE_VALUE_SIZE)) + (PART_COUNT * (PART_KEY_SIZE + PART_VALUE_SIZE))
Hardware Sizing
Your graph structure on disk MUST fit in your system memory. Check the size of your <DATADIR>/build/consolidation-INSTANCE/sdc-storage/objectgraph.