Performance diagnostics

Breeze has built in diagnostics that can help troubleshoot performance issues with cameras or running workflows. Such issues can occur because of too complicated workflows, too slow computer hardware, to slow network, or too large volumes of data.

Factors influencing Runtime performance

  • The size of the hyperspectral data: the number of wavelength bands and the number of pixels. In some cameras binning can be used to reduce spectral or spatial resolution to reduce the size of data.

  • The framerate (speed) of the camera: too fast and too much data can be generated

  • The complexity of the workflow Analysis Tree. Some algorithms, like the machine learning algorithms are CPU intensive.

  • The performance of the PC. Installation and getting started

    • A fast Intel CPU is recommended

    • Enough memory (RAM) to not run out of memory. Large images and complex workflow require large amounts of RAM. Learn more below how to experimentally determine Breeze memory requirements for your data.

    • A fast SSD for the Workspace folder used by Breeze

Determining maximum frame rate for cameras with high resolution and number of bands

A high-resolution camera with many bands, like the HySpex VNIR-3000 with 3000 pixels x 700 bands, results in large volumes of data.

If you configure a high frame rate (short frame period), you may run into the limit of what the system can handle. This shows up as:

  • growing memory consumption of the Runtime process, which can be seen in for example Windows Task Manager and in extreme cases memory of the PC may run out, causing system instability.

  • log entries in the Runtime log that shows a build-up of data in the send queue:

2026-04-09 11:05:55.8801 [.NET TP Worker] WARN Prediktera.Breeze.Runtime.Tcp.DataStreamTcpServer - DataStream: Send queue size reached 100 MB. Number of elements in queue 21

2026-04-09 11:06:01.0189 [.NET TP Worker] WARN Prediktera.Breeze.Runtime.Tcp.DataStreamTcpServer - DataStream: Send queue size reached 5300 MB. Number of elements in queue 1164

  • You may also see an SendQueueOverflow error in the Runtime’s Event stream.

These problems can happen when you use Breeze Settings, for example on the Focus page.

It can also happen when third-party code reads the Data stream and cannot keep up reading data fast enough. Learn more about the Data stream in Developers reference guide.

Determining Breeze memory requirements

Analyzing large data with complex workflows in Breeze require lots of memory (RAM). Since the Analysis Trees largely determines the memory consumption - the more complex, the higher memory usage, the following method can be used to determine how much memory is required.

It works by using Windows Task Manager to monitor memory usage while running Breeze to analyze representative hyperspectral data for the target application with an Analysis Tree.

Requirements and preparations

  • A hyperspectral image taken of the sample you want to analyze in Breeze. Ideally it should be taken with the target hyperspectral camera and use real samples to be possible to analyze in Breeze in a realistic way.

  • An Analysis Tree workflow of similar complexity that you intend to use. Use segmentations and descriptors to make it realistic. Workflow Analysis Tree and applying changes

  • Start Windows Task Manager, and on the Processes tab, type breeze to filter the list.

  • image-20260410-121631.png

As you can see in the screenshot, Breeze consists of more than one process, and you need to monitor both the Breeze application and the BreezeRuntime process (Breeze (32-bit) is a launcher that won’t use much memory and thus can be ignored). Learn more on the Breeze architecture in Breeze system overview.

How to see memory usage

For each step below, make a note of the Memory usage from Task Manager for both Breeze and the BreezeRuntime:

  1. Start Breeze and open a project.

  2. Import an image. Make a note of the size of the image in number of frames (pixel lines).

  3. Create the Analysis Tree you plan to use.

  4. Do Apply Changes on your image.

Now you know the memory consumption of that image with that exact workflow. The next steps can be to extend the tests:

  • Make a small change in the Analysis Tree and re-do Apply Changes. Repeat a few times to stabilize memory usage.

  • Try with an image of different size (double the size, half the size), to determine how large images you can analyze

  • Modify the Analysis Tree to make it more complex (realistic) and see how it affects memory usage, or simplify it if possible

Determining the maximum throughput for a real-time workflow

When the Runtime runs a workflow in real-time it uses buffers and queues to temporarily cache data before it has run through the analysis tree. If the workflow is configured to run faster than the PC can keep up with, a FrameQueueOverflow is triggered and logged to Runtime log. When this happens, the Runtime will drop (throw away) data to keep up.

To find the maximum speed a workflow can run, you can use Breeze to manually apply your Analysis Tree and then examine the log files to see how fast it could run:

  1. Configure Breeze to show the Runtime console in a terminal window as described inWorkspace Settings, and restart Breeze to make the terminal window show up.

  2. In Breeze, select a few measurements with representative data.

  3. Hold down Ctrl + Shift and click Apply Changes. Workflow Analysis Tree and applying changes.

  4. Examine the Runtime.log (or Runtime console Windows) and look for the INFO output for ApplyChanges which will show the throughput:

    image-20260407-135336.png

If you find your Analysis Tree is too slow for your target application, you need to make changes. Refer to the beginning of this page for info on what affects performance.

There is also built-in Diagnostics which you can run in your environment to diagnose a workflow running in the Runtime as described next.

Running Diagnostics in the Breeze Client

Start Breeze Client and go to the Diagnostics tab.

Start diagnostics using the Start diagnostics switch:

image-20241014-100024.png

This starts capturing data from the running workflow to the folder displayed at the top of the Diagnostics screen.

When you click the switch again, the recording is stopped. The captured log and performance data is saved in a data.csv file, and statistics plots are automatically created in the in the specified breeze-runtime-statistics folder. This folder is automatically opened in File Explorer.

image-20241014-100227.png

Double-click on the plots to see them. Learn more below on the data you see.

The diagnostic information overview

image-20220322-125136.png

Name

Description

Unit

Index

Incrementing number started at 1

Number

Seconds

Seconds from diagnostic start

Seconds

FrameNumber

Frame number from camera

Number

CameraTime

Not implemented


InDiff

Time difference between two In frames from camera

milliseconds

DroppedFrames

Number of dropped frames

Number

BufferSize

Elements in camera line buffer

Number

QueueSize

Elements in prediction frame queue

Number

PredictionTime

Prediction time

milliseconds

OutDiff

Time difference between two Out frames

milliseconds

Delta

Time difference between In and Out Time

milliseconds

TransferTime

Transfer time to client

milliseconds

Command

This Runtime command can be used programmatically to start diagnostics from a third party client.

StartDiagnostic(File = Absolute file path) 
.....
StopDiagnostic() 

The Data.csv file is saved in the file path when StopDiagnostic is called as described above.

Breeze Runtime Logging

The Breeze Runtime log files contain events that are useful for troubleshooting. Learn more in Breeze log files and troubleshooting.

The Runtime log can be seen in Breeze Client under Diagnostics. This log information is updated manually using the Refresh button and can be exported by clicking on the Save button.

image-20241014-100419.png