首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务调度器功能对系统的影响

任务调度器功能对系统的影响
EN

Stack Overflow用户
提问于 2019-03-28 09:32:21
回答 2查看 103关注 0票数 0

我正在理解Task Scheduler的功能。例如,我正在开发32位的Infineon Aurix Tricore控制器,它的任务调度程序设计为5毫秒。现在,如果我设计在10毫秒的任务调度函数上运行我的应用程序,而不是5毫秒,我应该考虑什么类型的数据?

例如对CPU运行时、CPU负载分析等的影响?

比如我在低级代码中更改任务调度器是如何影响代码执行的。

EN

回答 2

Stack Overflow用户

发布于 2019-03-29 16:54:09

简而言之,任务切片时间越短,用户看到的多任务处理就越流畅。另一方面,更多的任务切换增加了切换任务而不是运行任务所花费的时间。

对于多个任务,更长的时间意味着长时间远程重复执行相同的任务(例如,更多的抖动行为)。

(注意:我通常在非常低端的MCU上使用1ms任务开关,总任务数约为5-10个,效果非常好。)

票数 0
EN

Stack Overflow用户

发布于 2019-12-06 16:41:33

如果您要将整个调度程序更改为以10ms而不是5ms的速度运行,则应考虑软件是否能够及时检测到系统中的变化(例如,如果您有环境温度传感器等传感器,则在5ms内发生值更改的概率非常小;另一方面,如果您正在检测诸如轮速10ms可能很慢的情况).Similarly是否可以控制执行器以在系统中创建所需的响应也应考虑在内。如果考虑到这两件事,并且提供任务执行时间(而不是频率)在一定范围内,那么CPU负载将不是问题。

注意::如果您的应用程序具有在假设任务在5ms内运行的情况下计算延迟的代码,则需要更改此设置

另一方面,如果你正在添加一个10毫秒的任务,除了一个5毫秒的任务.then,你应该考虑以下几点

1.添加新的时间片增加了额外的上下文切换操作,这将增加延迟。

2.同样基于任务的优先级和抢占/协作行为,一个任务可以在一段时间内阻止另一个任务,这可能会在功能上造成延迟或导致故障,但这只是一个概率,不需要也发生。

3.上下文拼接还意味着您现在需要使用比以前更多的堆栈区域,基于您的项目利用率,这可能会导致问题

你需要分析你的软件,才能得出第2点和第3点的结论。我给出了一些例子,可以帮助你进行分析

Ex1:如果与5ms任务的执行时间相比,10ms任务的执行时间(而不是频率)可以忽略不计,那么更好的选择是将此功能也安排在5ms内,因为这将节省上下文切换时间和堆栈大小。

Ex2:如果您的10ms任务的执行时间相对较长,并且它的优先级低于5ms任务(并且可以被5ms任务抢占),那么在10ms任务中具有该功能会更好,因为这将有助于5ms任务在下一个切片之前完成执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55388901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档