主要内容

从执行实时应用程序中解决CPU过载问题

在执行实时应用程序时,某些问题会导致CPU过载。

这个问题意味着什么

CPU过载表示CPU无法在重新启动下一个时间步之前完成对模型时间步的处理。

当发生此错误时,Simulink Real-Time R万博1manbetxTOS将停止模型执行,并且目标对象属性TargetStatus显示一个错误,例如:

mCPUOverload: Sub-rate exception:过载限制(0)超过0.02秒1过载

如果允许重载,则模型执行将继续,直到达到允许的重载限制为止。如果模型在CPU过载后继续运行,则时间步长与完成执行所需的时间相同。此行为将延迟下一个时间步骤。

模型设计或目标计算机资源导致CPU过载。可能的原因有:

  • 目标计算机太慢或模型采样时间太小。

  • 模型太复杂(算法复杂度)。

  • I/O延迟,其中使用的每个I/O通道都会向系统引入延迟。I/O延迟可能导致执行时间超过模型时间步长。

    要查找Speedgoat板的延迟值,请联系快速山羊技术支持万博1manbetx

试试这个解决方法

万博1manbetx®实时™RTOS通常在遇到CPU过载时停止模型执行。您可以配置万博1manbetx实时仿真软件模型允许CPU过载。使用此功能支持长初始化和过载诊断。万博1manbetx方法来减少过载,方法包括改进应用程序性能和启用使用GCC - fast-math编译选择。

允许较长的初始化时间

对于一些实时应用程序,正常的初始化可以延长到第一次采样时间之后。使用SLRT过载选项块,以增加启动时间步骤的数量,以忽略重载。默认情况下,只有第一次步骤忽略重载。

请注意

允许目标计算机CPU过载可能导致不正确的结果,特别是对于多速率模型。使用SLRT过载选项仅用于诊断。诊断完成后,请关闭这些选项。

启用GCC - fast-math选项编译

使用GCC - fast-math编译选项启用GCC编译器-ffast-math选项,当编译实时应用程序代码时。默认情况下禁用此选项万博1manbetx实时仿真软件模型。

通过启用使用GCC - fast-math编译选项,您可以为编译器提供更多的灵活性来优化浮点数学,但代价是偏离IEEE-754浮点标准。

有关的更多信息-ffast-math选项,请参阅GCC中浮点数学的语义和。gcc.gnu.org/wiki/FloatingPointMath/

强制轮询模式

强制轮询模式选项为实时应用程序启用轮询模式(而不是中断驱动模式)。启用此选项可以帮助减少CPU过载,如果:

  • 目标计算机至少有四个CPU内核。

  • CPU过载是由零星的TET峰值引起的。

另请参阅

相关的例子

更多关于

外部网站