Skip to main content
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.
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.

Relación entre el rendimiento y el número de núcleos de procesamiento

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

Estime el número de núcleos de procesamiento

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:
    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.

Ejemplo práctico

  • 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.

Factores limitantes

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

Carga de la infraestructura

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. 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, 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.

Capacidad del Processing Server

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