Impact Acquire SDK GUI Applications
Multi-Core Acquisition Wizard
Since
Version 2.44.0 of this application

This wizard can be used to configure the Multi-Core Acquisition Optimizer feature of Impact Acquire.

Note
This feature is currently implemented for the mvBlueCOUGAR-X, mvBlueCOUGAR-XD and BVS CA-GT (mvBlueCOUGAR-XT) devices! To find out more about the underlying technology and required firmware versions please refer to the corresponding chapters in the product manuals describing the network setup and optimization.

This feature will allow to precisely select one or multiple physical CPU cores that shall be used to process the image data coming from the device. This can be extremely helpful when facing one of the following scenarios:

  • The CPU core used for receiving the network data shall be used exclusively for this task and all the application related additional work like image processing shall be done using the remaining cores only
  • Multiple cameras shall be used and each camera shall have its own dedicated CPU core for exclusive usage. This can be used to avoid situations where the system assigns the work of multiple streams to the same CPU core leading to data loss due to core overload
  • A single core in the host system is not powerful enough to process the incoming network stream resulting in data loss. Then this wizard as well as the Impact Acquire API can be used to distribute the load to several cores
  • The application itself performs a lot or parallel processing thus uses each CPU core in the system. The one that must do the image data processing therefore gets more work in total thus degrading overall system performance
Note
The Multi-Core Acquisition Optimizer feature uses the RSS (Receive Side Scaling) feature of modern network cards in combination with a special implementation in the GigE Vision™ filter driver AND the device firmware. In order to use it the camera must support certain features only available in mvBlueCOUGAR-X, mvBlueCOUGAR-XD and BVS CA-GT (mvBlueCOUGAR-XT) devices and an RSS capable network card that is configured accordingly is required. More details can be found in the product manual.

The wizard itself is rather simple:

ImpactControlCenter - Multi-Core acquisition wizard
  • "Base Core": This is a read-only feature! It reflects the RSS base processor number as configured by the user (if supported by the NIC driver) or as selected by the NIC driver (if either NOT selected by the user OR if manual selection is not supported by the NIC driver). CPU cores smaller than this value cannot be used for processing network data from devices connected to this NIC. More details about RSS and this parameter in particular can be found in various places on the Internet.
  • "First Core Index": This parameter allows the selection of the first CPU core that shall be used for processing network data from this device relative to the "Base Core". E.g. if the base core has been set to 3 then setting the first core index to 2 will result in CPU core 5 (3 + 2) being the first core to use for data processing.
  • "Core Count": This parameter defines how many CPU cores starting at "First Core Index" shall be used for processing image network data coming from this specific device. Using more cores reduces the overall load for each individual core but also results in a slight overhead caused by core switches that must be handled by the system
  • "Core Switch Interval": This parameter defines after how many network packets another CPU core shall be used. This value is only important when using more than 1 CPU core for processing network data! Selecting a value that is too high can result in data loss as an individual core might not be able to get rid of its received data in time and selecting a value too low introduces too much overhead for core switches.

For the full set of details please refer to the product manual mentioned above! As a general rule of thumb the following guidelines can be used:

  • If a single CPU core can cope with all the data the best performance can be achieved by using a dedicated CPU core for processing the network data and by removing all other application specific CPU load from this core. So explicit selection of 1 core is done using the Multi-Core Acquisition Optimizer feature (without it the CPU core used by the system will be different for each session) and the application itself uses appropriate mechanisms to move the remaining load to the other cores (e.g. by setting the process affinity mask)
  • If the application cannot explicitly move its work to certain cores or when a single core is not powerful enough use 2-8 cores in parallel for network data processing and select a higher "Core Switch Interval" when using less CPU cores

When the wizard is configured its effect can e.g. be observed using the Windows task manager:

ImpactControlCenter - Multi-Core acquisition wizard running