Wie kann ich die Performance von USB3 Vision Kameras unter Linux optimieren?

Bei der Verwendung von USB3 Vision Kameras unter Linux kann es bei Anwendungen mit hoher Bandbreite oder mehreren Kameras erforderlich sein, bestimmte System-Einstellungen anzupassen.

Der IC4 GenTL USB3 Driver verwaltet die USB Transfer Size automatisch, sodass hierfür keine manuelle Konfiguration erforderlich ist.

Je nach Anwendung müssen möglicherweise die folgenden Linux-Einstellungen angepasst werden:

  • USB stack memory limit

  • File handle limit

Muss ich die USB Transfer Size manuell konfigurieren?

Nein.

Der IC4 GenTL USB3 Driver konfiguriert automatisch die USB Transfer Size und setzt diese auf 3 MByte.
Es ist daher nicht erforderlich, die Transfer Size unter Linux oder in der eigenen Anwendung manuell anzupassen.

Muss ich das USB Memory Limit unter Linux erhöhen?

Normalerweise nicht.
Der IC4 GenTL USB3 Driver konfiguriert das Linux USB Memory Limit automatisch auf Basis des verfügbaren Arbeitsspeichers.
Standardmäßig setzt der Treiber das usbfs_memory_mb Limit auf ein Viertel des verfügbaren RAMs.

Daher müssen Anwender diesen Parameter normalerweise nicht manuell konfigurieren.

Wenn Sie das USB memory limit dennoch selbst festlegen möchten, können Sie den Wert für usbfs_memory_mb manuell ändern.
Der folgende Befehl setzt das Limit beispielsweise auf 1000 MB:

sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'

Hinweis:
Eine manuelle Änderung dieser Einstellung überschreibt temporär den vom IC4 GenTL USB3 Driver automatisch konfigurierten Wert.

Muss ich das File Handle Limit bei der Verwendung mehrerer USB3 Vision Kameras erhöhen?

Normalerweise nicht.
Auf modernen Linux-Systemen liegt das Standardlimit typischerweise bei 1024 File Handles pro Prozess, während unsere USB3 Vision Kameras typischerweise weniger als 10 file Handles pro Kamera benötigen.

Das Standardlimit ist daher in der Regel auch bei der Verwendung mehrerer USB3 Vision Kameras ausreichend. Eine Anpassung ist normalerweise nicht erforderlich.

Wenn Sie das Limit für Ihre Anwendung dennoch erhöhen möchten, können Sie das Soft Limit für den aktuellen Prozess beispielsweise wie folgt ändern:

ulimit -Sn 4096

Damit wird das Soft Limit für die aktuelle Shell und die daraus gestarteten Prozesse auf 4096 File Handles gesetzt.

Für eine dauerhafte Konfiguration unter Ubuntu kann das entsprechende Limit in folgender Datei konfiguriert werden:

/etc/security/limits.conf