Saltar al contenido principal
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, tiene sentido contar 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 del flujo de trabajo de procesamiento (por ejemplo, del número de etapas), de la configuración de procesamiento (mejora de imagen, modo de reconocimiento, configuración de exportación), de la implementación de etapas personalizadas (motores personalizados y reglas de script, acceso a recursos externos) y del 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, aunque 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.
La referencia anterior usa el proyecto de demostración “SingleEntryPoint” (procesamiento desatendido, exportación a archivos PDF) y, 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 un lote termina más rápido de lo que terminaría en producción, donde los demás núcleos están ocupados con otros lotes. Para obtener una cifra fiable, cree varias copias de su lote típico —al menos tantas como núcleos haya, e idealmente N veces más (N ≥ 3)— y procéselas todas a la vez. El tiempo por lote y por núcleo es el tiempo total de procesamiento dividido entre N, lo que 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:
    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.

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: agregar otro núcleo de procesamiento tiene un efecto negativo, o ningún efecto en absoluto, en el rendimiento total. Esta guía describe cómo diseñar el sistema para evitar cuellos de botella y cómo supervisar el hardware y la infraestructura para detectarlos. 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. Si 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 anterior, lo que a su vez significa que necesita 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 dar servicio a un número limitado de núcleos de procesamiento. Este número depende del tiempo promedio que necesita un núcleo para completar una tarea, lo que a su vez depende en gran medida del tamaño del lote (en páginas) y de la personalización que implemente. Normalmente, con unos 10 páginas por lote, el Processing Server puede dar servicio a 120 núcleos de procesamiento. Si crea muchas etapas personalizadas con scripts muy rápidos, o procesa una página por lote, el tiempo promedio de las tareas disminuye drásticamente, lo que puede reducir ligeramente el número máximo de núcleos que el Processing Server puede atender. Para detectar esto, supervise el número de núcleos de procesamiento libres en el Processing Server. Si tiene una cola de documentos para procesar, pero el número de núcleos ocupados ha llegado a la saturación y casi nunca aumenta, ha alcanzado este límite. Para resolverlo:
  • Procese el lote completo sin dividirlo en tareas pequeñas siempre que sea posible (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: aumente el número promedio de páginas por lote, combine varias etapas personalizadas en una sola o 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.