Embedded 嵌入式系统的最大安全CPU利用率

Embedded 嵌入式系统的最大安全CPU利用率,embedded,Embedded,对于关键应用程序,嵌入式系统的安全最大CPU使用时间是多少。我们正在用top来衡量绩效。50-75%是安全的吗?实时嵌入式系统设计用于满足实时限制,例如: 每500 us采集和处理一次电压(比如传感器监测) 音频缓冲区每5.8毫秒处理一次(4ms处理) 3ms内串行命令确认 由于实时操作系统(RTOS)具有“先发制人”(调度器可以暂停任务以执行更高优先级的任务),因此即使在CPU使用率为100%的情况下,您也可以满足这些限制:CPU将执行高优先级任务,然后恢复到它正在执行的任何操作 但这并不

对于关键应用程序,嵌入式系统的安全最大CPU使用时间是多少。我们正在用top来衡量绩效。50-75%是安全的吗?

实时嵌入式系统设计用于满足实时限制,例如:

  • 每500 us采集和处理一次电压(比如传感器监测)
  • 音频缓冲区每5.8毫秒处理一次(4ms处理)
  • 3ms内串行命令确认
由于实时操作系统(RTOS)具有“先发制人”(调度器可以暂停任务以执行更高优先级的任务),因此即使在CPU使用率为100%的情况下,您也可以满足这些限制:CPU将执行高优先级任务,然后恢复到它正在执行的任何操作

但这并不意味着无论发生什么情况,您都将满足约束条件,以下几点提示:

  • 高优先级任务的执行必须尽可能短(通过计算执行时间/发生次数,您可以估计CPU使用情况)
  • 如果估计的CPU使用率过高,请查找代码优化、硬件等效(硬件CRC、DMA等)或第二个微处理器
  • 对设备进行压力测试,并测量是否满足实时限制
对于上一个示例:

  • 音频处理应该是最低优先级
  • 串行确认/电压采集最高
  • 压力测试可以通过发出串行命令和检查丢失的音频缓冲区、丢失的模拟电压事件等来完成。您还可以改变CPU时钟频率:您的设备可能会在低得多的时钟频率下满足限制,从而降低功耗

要回答您的问题,50-75%甚至100%的CPU使用率是安全的,只要您满足实时限制,但请记住,如果您以后想添加功能,在CPU使用率为98%的情况下,您将没有太大的空间。

实时嵌入式系统是为满足实时限制而设计的,例如:

  • 每500 us采集和处理一次电压(比如传感器监测)
  • 音频缓冲区每5.8毫秒处理一次(4ms处理)
  • 3ms内串行命令确认
由于实时操作系统(RTOS)具有“先发制人”(调度器可以暂停任务以执行更高优先级的任务),因此即使在CPU使用率为100%的情况下,您也可以满足这些限制:CPU将执行高优先级任务,然后恢复到它正在执行的任何操作

但这并不意味着无论发生什么情况,您都将满足约束条件,以下几点提示:

  • 高优先级任务的执行必须尽可能短(通过计算执行时间/发生次数,您可以估计CPU使用情况)
  • 如果估计的CPU使用率过高,请查找代码优化、硬件等效(硬件CRC、DMA等)或第二个微处理器
  • 对设备进行压力测试,并测量是否满足实时限制
对于上一个示例:

  • 音频处理应该是最低优先级
  • 串行确认/电压采集最高
  • 压力测试可以通过发出串行命令和检查丢失的音频缓冲区、丢失的模拟电压事件等来完成。您还可以改变CPU时钟频率:您的设备可能会在低得多的时钟频率下满足限制,从而降低功耗
要回答您的问题,50-75%甚至100%的CPU使用率是安全的,只要您满足实时约束条件,但请记住,如果您以后想添加功能,在98%的CPU使用率下,您将没有太多的空间。

数学分析中确定实时任务(即具有特定实时截止日期的任务)在利用率低于约70%时(并且适当分配了优先级)是可调度的。如果您对所有任务都有准确的统计数据,并且它们是确定性的,则可高达85%,并且仍然保证可调度性

但是请注意,利用率仅适用于具有硬实时截止日期的任务。后台任务可能会一直利用剩余的CPU时间,而不会错过截止日期

假设“CPU利用率”指的是在具有基于优先权的抢占式调度器的系统中执行代码而不是空闲循环所花费的时间,那么…这取决于

首先,存在一个度量问题;如果您的利用率采样周期足够短,它通常会在100%和零之间切换,而如果采样周期很长,您会得到一个很好的平均值,但不知道利用率是否足够高,以至于无法完成比运行优先级低的任务,从而可能错过its截止日期。这是一个错误的问题,因为任何实际的利用率抽样率通常比最短的截止日期要长得多,所以充其量只是定性的,而不是定量的。它并不能告诉你在关键情况下有多大用处

第二个问题是你在衡量什么。虽然RTO通常有一种方法来衡量CPU利用率,但它衡量的是所有任务的利用率,包括那些没有截止日期的任务

例如,如果最低优先级任务的利用率达到100%,则不会损害可调度性-从这个意义上讲,低优先级任务与空闲环路没有区别。这可能会对通常在空闲环路中进入低功耗模式的系统的功耗产生影响

如果高优先级任务需要100%的CPU利用率,从而错过了低优先级任务的最后期限,那么您的系统将失败(从某种意义上说,错过了最后期限-后果取决于应用程序)

仅仅测量CPU利用率是不够的,但是如果您的CPU利用率为100%,并且该利用率不只是最低pri中的一些后台任务