> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cómo calcular el número de estaciones de procesamiento

> Calcule el número de estaciones de procesamiento y núcleos de CPU de ABBYY FlexiCapture necesarios para el rendimiento objetivo midiendo el tiempo de procesamiento por núcleo.

Para aprovechar al máximo los recursos informáticos, cada estación ejecuta varios hilos de procesamiento al mismo tiempo. Cuantos más núcleos de CPU haya disponibles, más hilos podrán procesarse en paralelo. Dado que el número de núcleos de CPU varía de un equipo a otro, cuente el **número total de núcleos de CPU de procesamiento** del sistema FlexiCapture.

Si no hay cuellos de botella en el sistema, cada nuevo núcleo de procesamiento aporta la misma contribución al rendimiento general. Así, puede estimar la contribución de un núcleo y luego calcular cuántos núcleos necesita para alcanzar el rendimiento objetivo.

La cantidad de páginas que un núcleo procesa en un tiempo determinado depende en gran medida de:

* El flujo de trabajo de procesamiento, por ejemplo, el número de etapas
* La configuración de procesamiento, como la mejora de imagen, el modo de reconocimiento y la configuración de exportación
* La implementación de etapas personalizadas, incluidos los motores personalizados, las reglas de script y el acceso a recursos externos
* El hardware

Si todavía no tiene datos sobre ninguno de estos aspectos, pero necesita una estimación aproximada, use el siguiente gráfico como referencia. Lo más probable es que en su proyecto obtenga resultados diferentes.

<Frame caption="Relación entre el rendimiento y el número de núcleos de procesamiento">
  <img src="https://mintcdn.com/abbyy/mpS3pcxC_lkohQUS/images/flexi-capture/PG_ProcStation_calculate.png?fit=max&auto=format&n=mpS3pcxC_lkohQUS&q=85&s=aebf1d9903c9ef45c43d545cd996e6c0" alt="Gráfico que muestra la relación entre el rendimiento y el número de núcleos de procesamiento como referencia, con miles de páginas procesadas en 24 horas frente a los núcleos de CPU de procesamiento, donde la línea aumenta de forma lineal hasta cerca de 2 millones de páginas con 100 núcleos." width="523" height="352" data-path="images/flexi-capture/PG_ProcStation_calculate.png" />
</Frame>

La referencia anterior se midió con:

* El proyecto de demostración `SingleEntryPoint`, con procesamiento desatendido y exportación a archivos PDF
* Para páginas en blanco y negro, estaciones de procesamiento de 10 núcleos a 2.4 GHz con 16 GB de RAM, un SSD y una NIC de 1 Gb/s

<div id="estimate-the-number-of-processing-cores">
  ## Estime el número de núcleos de procesamiento
</div>

Mida cuánto tarda un núcleo en procesar una página y, a continuación, divida el volumen objetivo entre ese valor.

1. Configure el flujo de trabajo de su proyecto, elija la estación de procesamiento con un hardware lo más parecido posible al de su entorno de producción y cree un lote típico de imágenes.
2. Mida cuánto tarda un núcleo en procesar un lote. Procesar un lote una sola vez no es suficiente. Durante la prueba, FlexiCapture distribuye el trabajo entre todos los núcleos disponibles, por lo que el lote termina más rápido de lo que terminaría en producción. En producción, los demás núcleos están ocupados con otros lotes. Para obtener una cifra fiable, cree varias copias de su lote típico y procéselas todas a la vez. Use al menos tantas copias como núcleos haya, e idealmente N veces más, donde N ≥ 3. El tiempo por lote y por núcleo es el tiempo total de procesamiento dividido entre N. Esto también tiene en cuenta que los núcleos compiten por los recursos compartidos de la estación.
3. Calcule el número de núcleos que necesita:

   ```text theme={null}
   N = (P × t) / T
   ```

   donde P es el número de páginas que se van a procesar, t es el tiempo necesario para procesar una página y T es el tiempo disponible.

<div id="worked-example">
  ### Ejemplo práctico
</div>

* Una estación de procesamiento de 8 núcleos con Hyper-Threading ofrece **16 núcleos lógicos** (16 procesos en ejecución).
* Cree **16 × 3 = 48** copias de un lote típico (×3 para reducir el error de medición) y procéselas todas a la vez.
* La ejecución tarda **15 minutos**. Cada núcleo procesa 3 lotes, por lo que un lote tarda unos **5 minutos**.
* El lote tiene **69 páginas**, por lo que una página tarda unos **4,35 segundos**.
* Para procesar **200.000 páginas en 8 horas** (28.800 segundos): N = (200.000 × 4,35) / 28.800 ≈ **31 núcleos**.
* Por lo tanto, **2 estaciones de procesamiento con 8 núcleos cada una y Hyper-Threading** (32 núcleos lógicos en total) bastan para el procesamiento automático.

<div id="limiting-factors">
  ## Factores limitantes
</div>

Dos factores limitan el número efectivo de núcleos de procesamiento en el Sistema.

<div id="infrastructure-load">
  ### Carga de la infraestructura
</div>

La carga total de la infraestructura puede crear cuellos de botella:

* En el hardware del servidor de FlexiCapture
* En la red
* En recursos compartidos externos (como bases de datos y servicios externos) a los que acceden scripts de procesamiento personalizados

Un cuello de botella provoca una saturación del rendimiento. En ese caso, agregar otro núcleo de procesamiento no tiene ningún efecto en el rendimiento total, o incluso tiene un efecto negativo.

Para obtener más información, consulte [Supervisión del sistema y detección de cuellos de botella](/es/flexi-capture/performance-guide/pg-monitoring).

Incluso sin un cuello de botella claramente identificado, la competencia entre los núcleos de procesamiento por los recursos compartidos aumenta a medida que se agregan núcleos. Suponga que prevé usar más del 50 % de la capacidad de lectura/escritura de la red o de FileStorage. Añada un 20 % al tiempo de procesamiento por página del [ejemplo práctico](#worked-example), lo que significa aproximadamente un 20 % más de núcleos de procesamiento.

Para ayudar a los núcleos a llegar más rápido a los recursos externos, use almacenamiento en caché. Por ejemplo, en lugar de conectarse directamente a una base de datos, conéctese a un FlexiCapture Data Set y solicite el Data Set desde sus scripts.

<div id="processing-server-capacity">
  ### Capacidad del Processing Server
</div>

El Processing Server solo puede gestionar un número limitado de núcleos de procesamiento. Este número depende del tiempo medio que necesita un núcleo para realizar una tarea. A su vez, la duración de la tarea depende en gran medida del número de páginas por lote y de las personalizaciones implementadas. Por lo general, con unos 10 páginas por lote, el Processing Server puede gestionar 120 núcleos de procesamiento.

Los scripts personalizados muy rápidos o los lotes de una sola página reducen considerablemente el tiempo medio de las tareas. Esto puede disminuir ligeramente el número máximo de núcleos que puede gestionar el Server.

Para detectarlo, supervise el número de núcleos de procesamiento libres en el Processing Server. Se ha alcanzado el límite cuando hay una cola de documentos en espera, pero el número de núcleos ocupados se ha estabilizado y casi nunca aumenta. Para resolverlo:

* Siempre que sea posible, procese el lote completo sin dividirlo en tareas pequeñas (consulte las Propiedades de la etapa en el cuadro de diálogo de configuración del workflow).
* Procese las páginas en bloques más grandes de alguna de las siguientes maneras:
  * Aumente el número medio de páginas por lote
  * Fusione varias etapas personalizadas en una sola
  * Traslade la personalización a una etapa estándar; por ejemplo, añadiéndola a un evento de enrutamiento en el script de esa etapa
