Zum Hauptinhalt springen
Um die Rechenressourcen optimal zu nutzen, führt jede Station mehrere Verarbeitungsthreads gleichzeitig aus; je mehr CPU-Kerne verfügbar sind, desto mehr Threads können parallel verarbeitet werden. Da die Anzahl der CPU-Kerne von Computer zu Computer variiert, ist es sinnvoll, die Gesamtzahl der für die Verarbeitung verfügbaren CPU-Kerne im FlexiCapture-System zu ermitteln. Wenn es im System keine Engpässe gibt, trägt jeder zusätzliche Verarbeitungskern in gleichem Maße zur Leistung des gesamten Systems bei. Daher müssen Sie den Beitrag eines einzelnen Kerns abschätzen und dann ermitteln, wie viele Kerne Sie benötigen, um die gewünschte Leistung zu erreichen. Wie viele Seiten ein Verarbeitungskern in einem bestimmten Zeitraum verarbeiten kann, hängt stark vom Verarbeitungsworkflow (z. B. von der Anzahl der Stufen), den Verarbeitungseinstellungen (Bildverbesserung, Erkennungsmodus, Exporteinstellungen), der Implementierung benutzerdefinierter Stufen (benutzerdefinierte Engines und Skriptregeln, Zugriff auf externe Ressourcen) sowie von der Hardware ab. Wenn Sie zu diesen Details keine Informationen haben, aber bereits eine Schätzung benötigen, können Sie das folgende Diagramm als Orientierung verwenden. Sehr wahrscheinlich erhalten Sie in Ihrem Projekt jedoch andere Ergebnisse. Die Abhängigkeit der Leistung von der Anzahl der Verarbeitungskerne Konfiguration Das Demo-Projekt „SingleEntryPoint“: unbeaufsichtigte Verarbeitung, Export in PDF-Dateien. Für Schwarzweißseiten: Processing Stations mit 10 Kernen, 2,4 GHz, 16 GB RAM, SSD, 1 Gb/s NIC. Um die erforderliche Anzahl von Verarbeitungskernen abzuschätzen, können Sie wie folgt vorgehen:
  1. Konfigurieren Sie den Workflow Ihres Projekts, wählen Sie die Processing Station, die hinsichtlich der Hardwareparameter dem in der Produktion eingesetzten System am nächsten kommt, und erstellen Sie einen typischen Batch von Bildern.
  2. Wir messen, wie lange die Verarbeitung eines Batches pro Kern dauert. Es reicht nicht aus, einen Batch nur einmal zu verarbeiten, da FlexiCapture die Verarbeitung auf alle verfügbaren Kerne verteilen kann und die Verarbeitung eines Batches bei Tests dadurch weniger Zeit in Anspruch nimmt, während in der realen Produktion andere Kerne mit der Verarbeitung anderer Batches beschäftigt sind. Für eine zuverlässige Schätzung empfehlen wir, mehrere Kopien Ihres typischen Batches zu erstellen – mindestens so viele wie die Anzahl der Kerne, besser jedoch multipliziert mit N (wobei N mindestens 3 ist), um den Messfehler zu minimieren, und sie alle gleichzeitig in die Verarbeitung zu geben. Die zum Verarbeiten eines Batches pro Kern erforderliche Zeit ist dann die Gesamtverarbeitungszeit geteilt durch N. Diese Schätzung berücksichtigt mögliche Ressourcenkonflikte zwischen Verarbeitungskernen auf gemeinsam genutzte Ressourcen der Processing Station. Beispiel. Wir haben eine Processing Station mit 8 Kernen und aktiviertem Hyper-Threading, was 16 logische Kerne bzw. Ausführungsprozesse auf dieser Station ergibt. Wir müssen mindestens 16 Kopien eines typischen Batches erstellen, besser wäre jedoch 16 x 3 = 48 Kopien, um den Messfehler zu minimieren. Wir legen alle Batches in den FlexiCapture-Hotfolder, starten den Timer bei der ersten erstellten Importaufgabe und stoppen ihn, nachdem das letzte Ergebnis in das Backend exportiert wurde – er zeigt 15 Minuten an. In dieser Zeit muss jeder Kern 3 Batches verarbeiten, daher beträgt die Zeit zur Verarbeitung von 1 Batch etwa 5 Minuten. Unser Batch hat 69 Seiten, und wir können sagen, dass die Verarbeitung von 1 Seite 4,35 Sekunden dauert.
  3. Sobald wir die gewünschte Leistung in Seiten pro Stunde oder Tag kennen, können wir die benötigte Anzahl von Kernen abschätzen. Angenommen, Sie müssen P Seiten in der Zeit T verarbeiten. Aus dem Obigen wissen wir bereits, dass 1 Kern die Zeit t für die Verarbeitung von 1 Seite benötigt. Daher benötigen Sie N = (P x t ) / T Kerne. Beispiel. Ein Kunde muss 200.000 Seiten in 8 Stunden verarbeiten, das sind 28.800 Sekunden. Wie wir oben gesehen haben, benötigt 1 Kern 4,35 Sekunden, um 1 Seite zu verarbeiten. Daher benötigen wir (200.000 x 4,35) / 28.800 = 31 Kerne. Somit reichen 2 Processing Stations mit 8 Kernen und aktiviertem Hyper-Threading (insgesamt 32 logische Kerne) für die automatische Verarbeitung aus.
Es gibt 2 begrenzende Faktoren in Bezug auf die Anzahl der Verarbeitungskerne im System:
  1. Die Gesamtlast der Infrastruktur, die zu Engpässen führen kann:
      • auf der Serverhardware von FlexiCapture;
      • im Netzwerk; oder
      • auf externen gemeinsam genutzten Ressourcen (wie Datenbanken, externen Services usw.), die von benutzerdefinierten Verarbeitungsskripten angefordert werden.
Ein Engpass führt zu einer Leistungssättigung – das Hinzufügen eines neuen Verarbeitungskerns wirkt sich negativ auf die Gesamtleistung aus oder hat schlicht keine Wirkung. In diesem Dokument wird beschrieben, wie das System ausgelegt werden sollte, um Engpässe zu vermeiden (siehe oben), und wie Hardware und Infrastruktur auf Engpässe überwacht werden können. Selbst wenn keine eindeutigen Engpässe erkennbar sind, nimmt der Wettbewerb zwischen den Verarbeitungskernen um gemeinsam genutzte Ressourcen zu, wenn dem System neue Kerne hinzugefügt werden. Wenn Sie mehr als 50 % der Lese-/Schreibkapazität des Netzwerks oder von FileStorage nutzen wollen (gemäß den Berechnungen in diesem Dokument), addieren Sie in den obigen Beispielen 20 % zur Verarbeitungszeit jeder Seite – dadurch werden im System tatsächlich 20 % mehr Verarbeitungskerne benötigt. Verwenden Sie Caching, damit Verarbeitungskerne schneller auf externe Ressourcen zugreifen können – verbinden Sie sie z. B. nicht direkt mit der Datenbank, sondern mit dem FlexiCapture-Datensatz, und fordern Sie den Datensatz dann aus den Skripten an.
  1. Die Anzahl der Verarbeitungskerne, die vom Processing Server bedient werden können. Diese Zahl hängt von der durchschnittlichen Zeit ab, die ein Kern zum Ausführen einer Aufgabe benötigt. Diese Zeit hängt stark von der Batch-Größe (in Seiten) und den implementierten Anpassungen ab. In der Regel kann der Processing Server 120 Verarbeitungskerne bedienen, wenn ein Batch etwa 10 Seiten umfasst. Wenn Sie jedoch eine große Anzahl benutzerdefinierter Stufen mit sehr schnellen Skripten erstellen oder nur eine Seite pro Batch verarbeiten wollen, verkürzt sich die durchschnittliche Aufgabenzeit erheblich, was die maximale Anzahl der Verarbeitungskerne leicht verringern kann.
Um dieses Problem zu erkennen, müssen Sie den Zähler Free Processing Cores auf dem Processing Server überwachen. Wenn Sie feststellen, dass dennoch eine Warteschlange mit zu verarbeitenden Dokumenten vorhanden ist und die Zahl der belegten Kerne irgendwann die Sättigung erreicht, danach aber fast nie weiter ansteigt, ist der beschriebene Effekt eingetreten. So beheben Sie das Problem:
  • Verarbeiten Sie nach Möglichkeit den gesamten Batch, ohne ihn in kleine Aufgaben aufzuteilen (siehe Stage Properties im Dialogfeld Workflow settings).
  • Verarbeiten Sie Seiten in größeren Einheiten: Erhöhen Sie die durchschnittliche Seitenzahl pro Batch, führen Sie mehrere benutzerdefinierte Stufen zu einer zusammen, oder verlagern Sie die Anpassung in eine Standardstufe, z. B. indem Sie sie einem Routing-Ereignis im Skript dieser Stufe hinzufügen.