Gerecht verteilen

Bild 1 | Bei einem Datendurchsatz von 1245MB/s ist ein einziger Kern mit der Datenübertragung beschäftigt. Mit dem Multi-Core Acquisition Optimizer (MAO) kann die Verteilung der Arbeitslast, die durch die Verarbeitung der Netzwerkdaten entsteht, auf mehrere Kerne verteilt werden.
Bild 1 | Bei einem Datendurchsatz von 1245MB/s ist ein einziger Kern mit der Datenübertragung beschäftigt. Mit dem Multi-Core Acquisition Optimizer (MAO) kann die Verteilung der Arbeitslast, die durch die Verarbeitung der Netzwerkdaten entsteht, auf mehrere Kerne verteilt werden.
Bild 1 | Bei einem Datendurchsatz von 1245MB/s ist ein einziger Kern mit der Datenübertragung beschäftigt. Mit dem Multi-Core Acquisition 
Optimizer (MAO) kann die Verteilung der Arbeitslast, die durch die Verarbeitung der Netzwerkdaten entsteht, auf mehrere Kerne verteilt werden.
Bild 1 | Bei einem Datendurchsatz von 1245MB/s ist ein einziger Kern mit der Datenübertragung beschäftigt. Mit dem Multi-Core Acquisition Optimizer (MAO) kann die Verteilung der Arbeitslast, die durch die Verarbeitung der Netzwerkdaten entsteht, auf mehrere Kerne verteilt werden. Bild: Matrix Vision GmbH

Stellen Sie sich vor, Sie setzen eine neue 10GigE Industriekamera ein, welche durch die hohe Framerate die Steigerung der Taktrate Ihrer Applikation ermöglicht. Sie installieren die neue Kamera und verbinden sie mit dem Computer. Die Applikation wird bei maximaler Framerate gestartet. Doch als Sie zusätzlich einen Algorithmus zum Verarbeiten der Bilder ausführen, stellen Sie fest, dass die CPU des Host-Systems überlastet ist. Dieser Engpass bei der Verarbeitung der Daten kann zu Verlusten bei der Datenübertragung führen. Heutige Computerarchitekturen beinhalten in der Regel mehrere CPU-Kerne in einem einzigen Chip oder sogar mehrere physische CPUs auf einem Motherboard. Aus diesem Grund verwenden Applikationen oft mehrere Threads oder Prozesse, um die verursachte CPU-Last gleichmäßig auf alle verfügbaren Prozessoren zu verteilen und so eine optimale Leistung zu erzielen. Dabei sollte aber auch eine grafische Benutzeroberfläche reaktionsfähig bleiben, während bestimmte Aufgaben im Hintergrund ausgeführt werden.

Bei GigE Vision-Kameras, die mit Bandbreiten von 5GBit/s oder mehr streamen, führt dies manchmal zu einem Engpass. Insbesondere die Aufrechterhaltung eines stabilen Datenempfangs ohne Verlust einzelner Bilder oder Teile von Bildern, während parallel dazu große Datenmengen verarbeitet werden, funktioniert nicht immer so zuverlässig, wie man erwarten würde. Das kommt daher, dass eine Netzwerkverbindung bedingt durch das Betriebssystem immer von einem bestimmten CPU-Kern bearbeitet wird. Dieses Vorgehen funktioniert gut, wenn von einem Gerät mehrere parallele Verbindungen ähnlich geringe Mengen an Daten pro Zeitfenster übertragen. Bei GigE Vision-Geräten enthält allerdings eine einzige Netzwerkverbindung alle oder zumindest einen signifikanten Teil der Daten, die von einer Netzwerkkarte (NIC) im System empfangen werden. Das führt dazu, dass ein einziger CPU-Kern mehr belastet wird als andere. Bei einer 1GBit/s-Verbindung können die optimierten NIC- und GigE Vision-Filtertreiber in Kombination mit einer leistungsfähigen CPU die eingehenden Daten gut bewältigen. Allerdings stellen 5GBit/s oder höhere Bandbreiten, die von einem Gerät über eine einzelne Verbindung kommen, selbst für aktuelle CPU-Architekturen eine deutlich größere Herausforderung dar. Bild 1 zeigt, dass die CPU-Last, die durch ein 10GigE-Gerät generiert wird, relativ hoch ist.

Bild 3 | Zusätzlich zum Datenstrom wird PC-seitig ein rechenintensiver Algorithmus durchgeführt. Die Arbeitslast dieses Algorithmus verteilt sich zusätzlich auf alle Kerne.
Bild 3 | Zusätzlich zum Datenstrom wird PC-seitig ein rechenintensiver Algorithmus durchgeführt. Die Arbeitslast dieses Algorithmus verteilt sich zusätzlich auf alle Kerne.Bild: Matrix Vision GmbH

Drohender Datenverlust

Wenn nun ein rechenintensiver Algorithmus wie beispielsweise De-Bayering, Fourier Transformation oder große Matrix-Multiplikationen zusätzlich auf dem System ausgeführt werden soll, dann weist das Betriebssystem von diesem Algorithmus jedem CPU-Kern gleich große Arbeitspakete zu. Auch dem, der bereits die eingehenden Netzwerkdaten verarbeitet. Das kann zu einer Überlastung des CPU-Kerns und damit zu Datenverlusten führen. Des Weiteren werden die anderen Kerne nicht optimal ausgenutzt, da die maximale Größe der zusätzlich möglichen Arbeitspakete durch die bereits hohe Arbeitslast des einen Kerns limitiert sind. Selbst wenn der Kern nicht überlastet ist, können Probleme aufgrund der Tatsache entstehen, dass der Prozessor hin und wieder für einen kurzen Zeitabschnitt Aufgaben ausführen muss, die nicht mit der Verarbeitung der Netzwerkdaten zusammenhängen. Wenn dadurch der interne Puffer überläuft, kommt es zu einem Datenverlust. Um dieser Problematik entgegenzuwirken, hat Matrix Vision eine Software-Lösung entwickelt, die dem Anwender mehr Kontrolle über die Arbeitsverteilung auf die CPU-Kerne gibt.

Bild 2 | Netzwerkdatenverarbeitung einer Kamera mittels Multi-Core Acquisition Optimizer (MAO) auf mehrere CPU-Kerne verteilt.
Bild 2 | Netzwerkdatenverarbeitung einer Kamera mittels Multi-Core Acquisition Optimizer (MAO) auf mehrere CPU-Kerne verteilt.Bild: Matrix Vision GmbH

CPUs optimal ausnutzen

Mit dem Multi-Core Acquisition Optimizer (MAO) kann die Verteilung der Arbeitslast, die durch die Verarbeitung der Netzwerkdaten entsteht, beeinflusst werden. Er ermöglicht es, durch die intelligente Kombination von Geräte-Firmware und Host-Treiber die Verarbeitung der Netzwerkdaten eines GigE Vision Streams auf mehrere CPU-Kerne zu verteilen. Im Gegensatz zu einer Verarbeitung auf einem pseudo-zufällig ausgewählten CPU-Kern kann durch den MAO explizit definiert werden, auf wie vielen und welchen CPU-Kernen die Verarbeitung der Netzwerkdaten stattfindet – entsprechend der individuellen Anforderungen der jeweiligen Applikation. Die verteilte Arbeitslast sorgt für eine verbesserte Gesamtsystemstabilität und der Datenverlust bei der Übertragung wird verhindert.

MAO führt aber nicht nur zu mehr Stabilität, sondern erhöht auch die Rechenleistung. Die verteilte Arbeitslast der Datenverarbeitung sorgt dafür, dass die Arbeitspakete des parallelen Algorithmus größer sein können und so die freien Kapazitäten der CPU-Kerne besser ausgenutzt werden. Die Verteilung erfolgt auf eine Weise, mit der das Host System am Effektivsten umgehen kann. Mit dem Wissen, auf wie vielen und welchen CPU-Kernen die Verarbeitung der Netzwerkdaten erfolgt, ist es des Weiteren möglich, diese Verarbeitung vom Rest der Bildverarbeitungs-Applikation zu entkoppeln. Erreicht wird dies, indem die für die Verarbeitung von Netzwerkdaten dedizierten CPU-Kerne von der Rechenlast durch die parallel laufende Bildverarbeitungs-Applikation ausgespart werden.

Bild 4 | Durch die Verteilung der Netzwerkdatenverarbeitung dank 
MAO kann die volle Systemperformance ausgenutzt werden.
Bild 4 | Durch die Verteilung der Netzwerkdatenverarbeitung dank MAO kann die volle Systemperformance ausgenutzt werden.Bild: Matrix Vision GmbH

Fazit

Matrix Vision hat mit dem Multi-Core Acquisition Optimizer ein Problem softwareseitig gelöst, welches zuvor lediglich mit kostspieliger Aufrüstung von Hardware machbar war. Ganz ohne zusätzlichen Aufwand können Anwender somit ohne Bedenken Ihre 10GigE Kamera von Matrix Vision bei höchster Framerate nutzen und parallel einen zeitaufwändigen Algorithmus zur Verarbeitung der Bilder ausführen. Der MAO wird über die Matrix Vision Geräte-Firmware in Kombination mit der aktuellen mvImpact Acquire Treiber Version zur Verfügung gestellt. Für Kunden entstehen keine zusätzlichen Kosten. Konfiguriert und angesteuert wird er über das GUI-Tool wxPropView oder über das mvImpact Acquire SDK.

Veröffentlicht am
Kategorisiert in inVISION

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert