How can I improve the live streaming performance of Simulation Data Inspector (SDI) or Dashboard blocks when using Simulink Real-Time and Speedgoat?

69 views (last 30 days)
I use Simulink Real-Time (SLRT) to run simulations on a Speedgoat target computer and want to view live signal data in the Simulation Data Inspector (SDI) or Dashboard blocks. To stream signals to SDI, I use signal logging badges in my model or instruments as shown here.
However, I noticed that the MATLAB process causes very high RAM or CPU load on my host PC, making the MATLAB GUI slow and laggy, which may lead to crashes. Sometimes, I see noticeable gaps in the SDI data or lost timesteps when inspecting the 'logsout' variable or exporting data from the SDI. Additionally, I may see the following warning in the Speedgoat system log:
Live Stream overload
Is there a way to improve the performance of SDI and my Dashboard blocks without reducing my model sample rate?

Accepted Answer

MathWorks Support Team
MathWorks Support Team about 12 hours ago
Edited: MathWorks Support Team 7 minutes ago
Here are some recommended steps to improve live streaming performance with Simulink Real-Time (SLRT) and Speedgoat hardware:
1. Upgrade to the latest MATLAB release
We continuously work on improving SDI performance so using the latest MATLAB is recommended. In particular, if you use External Mode ("Run on Target" button) and your model contains many graphical elements (Dashboard blocks, Scopes, Displays), an upgrade to R2024b is recommended due to significant enhancements in the underlying framework. Also, make sure to use the latest update level for your release.
2. Decrease the data rate for live streaming
To decrease the data rate for live streaming, you could:
  • Reduce the model sample rate,
  • Stream fewer signals,
  • Change the signal data type (e.g. 'single' instead of 'double'),
  • Adjust the logging sample time for badged signals,
  • Increase the decimation for badged signals or instrumented signals (R2021b+), or
  • Limit the data points for badged signals (R2021b+).
To decimate or limit data points, or change the logging sample time, right-click the logging badge (wi-fi symbol) for the signal and open the Instrumentation Properties:
3. Consider file logging instead of (or in addition to) live streaming
While streaming signals at a lower rate in SDI, you can log the same signals on the Speedgoat's local SSD via File Logs block to preserve the original sample time. File logging can handle much higher data rates without dropping data. More information can be found at File Logging Basics.
Note that live streaming from a real-time application does not guarantee that all data appears in SDI. Live stream instrumentation runs at a lower priority than the real-time application, so data sent by live streaming could be dropped if the host-target connection cannot keep up. This behavior is documented in Troubleshoot Gaps in Streamed Data. In addition, data loss can occur in case of an unexpected MATLAB or host computer shutdown, which is avoided by using File Logs. 
4. Change the SDI record mode
You can significantly improve SDI performance by changing the record mode to not retain data after simulation. Use the simulink.sdi.setrecorddata(false) MATLAB command or configure this in the SDI Preferences > Storage panel as shown in this screenshot:
When you change the Record mode setting to "View during simulation only", no logged data is available in SDI or the workspace after the simulation completes. Only use this mode when you do not want to save the data captured in SDI. See the following documentation for details on this feature and other tips to improve SDI performance: Limit the Size of Logged Data
5. Use a custom app, SLRT Explorer, or MATLAB commands instead of external mode
When working with large Simulink models, run the real-time simulation from the MLDATX real-time application file instead of using the "Run on Target" button in Simulink. You can create a custom SLRT App with App Designer, use SLRT Explorer (>> slrtExplorer), or use MATLAB commands.
6. Remove DMR files and monitor the host PC disk space
Another useful step is to delete any *.dmr artifacts that you find in your Windows temp folder: 
>> winopen(tempdir)
Normally, MATLAB should automatically remove these SDI artifacts upon closing. However, in cases of abnormal exits, these files may persist on the C drive and occupy valuable space.
There are also MATLAB commands to delete the DMR files:
% Makes sure to clear runs from current SDI session>> Simulink.sdi.clear% Delete DMR files>> sdi.Repository.clearRepositoryFile
While your simulation is running, monitor the remaining space on your C drive. If you notice the drive is running full and you have no way of freeing up more space, apply methods (2), (3), or (4).
7. Increase RAM on Your Host PC
If you observe that the MATLAB process fills up RAM, consider increasing the RAM on your PC (use at least 16GB, better 32GB or 64GB). More RAM can help handle larger datasets and reduce the likelihood of performance bottlenecks caused by insufficient memory.
8. Check Your Network Setup and Hardware
In rare cases, "Live stream overload" warnings may occur due to hardware/network issues, such as a faulty USB-Ethernet adapter. See Troubleshooting connection issues with Speedgoat target computers for more information.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!