Snapshot Mode
The snapshot mode keeps the trace in a target RAM buffer, allowing for saving "snapshots" at any point by saving the RAM buffer to a host-side file. This approach has minimal hardware dependencies and can therefore be used on essentially any 32-bit processor, assuming there is some way to retrieve the data, like a debug connection or a file system.
The snapshot recording is optimized for memory efficiency and saves the events as four-byte records, often using only one such record per event, including the timestamp. As a result, our standard demo application only generates about 18 KB/s of trace data in snapshot mode, less than 7 bytes per event on average. However, the optimizations used in the snapshot mode prevents streaming the trace, so the streaming mode uses a different implementation and data format.
Streaming Mode
When using the streaming mode, the data is continuously transferred to the host PC. This way, you can record as long as you have disk space on your PC. Since the amount of data produced by RTOS tracing is moderate (about 20-200 KB/s) you may in theory record traces spanning several days, or even weeks with a big hard drive.
In practice, Percepio Tracealyzer as of version 3.1 is however limited by the amount of RAM in your PC. You may open a trace file of any size, but if your PC runs out of physical memory, the resulting page swapping may result in long loading times and a less responsive GUI. Percepio Tracealyzer can however load pretty long traces without problems on standard PC, typically 5-10 million events. This is at least several minutes of trace, often 10-30 minutes. Moreover, Percepio Tracealyzer detects if a trace file seems to be too large for the available RAM and then gives a warning, asking you to confirm loading the trace.
The implementation of the streaming mode is optimized for speed, and stores an event much faster than the snapshot mode that is highly optimized for low memory usage.