
Dependence of performance on the number of processing cores
Estimate the number of processing cores
Measure how long one core takes to process one page, and then divide your target volume by it.- Configure your project workflow, choose the Processing Station closest in hardware to your production setup, and create a typical batch of images.
- Measure how long it takes one core to process one batch. Processing a batch only once is not enough: during the test, FlexiCapture spreads the work across all available cores, so a batch finishes faster than it would in production, where the other cores are busy with other batches. For a reliable figure, create several copies of your typical batch — at least as many as there are cores, and ideally N times more (N ≥ 3) — and process them all at once. The time per batch per core is the total processing time divided by N, which also accounts for cores competing over the Station’s shared resources.
-
Calculate the number of cores you need:
where P is the number of pages to process, t is the time to process one page, and T is the time available.
Worked example
- An 8-core Processing Station with Hyper-Threading provides 16 logical cores (16 executive processes).
- Create 16 × 3 = 48 copies of a typical batch (×3 to reduce measurement error) and process them all at once.
- The run takes 15 minutes. Each core processes 3 batches, so one batch takes about 5 minutes.
- The batch has 69 pages, so one page takes about 4.35 seconds.
- To process 200,000 pages in 8 hours (28,800 seconds): N = (200,000 × 4.35) / 28,800 ≈ 31 cores.
- So 2 Processing Stations with 8 cores each and Hyper-Threading (32 logical cores in total) are enough for automatic processing.
Limiting factors
Two factors limit the useful number of processing cores in the System.Infrastructure load
The total load on the infrastructure may create bottlenecks:- On the FlexiCapture server hardware
- On the network
- On external shared resources (such as databases and external services) that are requested from custom processing scripts
Processing Server capacity
The Processing Server can serve only a limited number of processing cores. This number depends on the average time a core needs to perform a task, which in turn depends greatly on batch size (in pages) and the customization you implement. Typically, with around 10 pages per batch, the Processing Server can serve 120 processing cores. If you create many custom stages with very fast scripts, or process one page per batch, the average task time drops sharply, which can slightly reduce the maximum number of cores the Server can serve. To detect this, monitor the number of free processing cores on the Processing Server. If you have a queue of documents to process but the number of occupied cores has reached saturation and almost never rises, you have hit this limit. To resolve it:- Process the entire batch without splitting it into small tasks where possible (see the Stage Properties in the Workflow settings dialog).
- Process pages in bigger portions: increase the average number of pages per batch, merge several custom stages into one, or move the customization into a standard stage — for example, by adding it to a routing event in that stage’s script.
