- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果有人可以解释 RTOS 中的滴答率过高的影响,或者指导我找到清楚解释它的资源,我将不胜感激?
问题的上下文...
我们使用 ucos-ii 运行,滴答率为 10000 (OS_TICKS_PER_SEC=10000)。这超出了 10 到 100 的推荐设置。
在调查另一个问题时,我注意到此设置并将其标记为异常。 ucos 手册(我可以看到)中没有详细解释为什么这是推荐范围。
我们有 8 个任务(加上中断)以不同的优先级运行,所以我认为更高的滴答率意味着我们可以更快地切换最高优先级的任务。在我们的例子中,我们将确保用户界面在一些不太重要的维护任务上得到解决。
从我可以看到的共识是建议不要将任何 RTOS 中的滴答率设置为“过高”,因为“开销”。建议使用具有较低滴答率的中断似乎很常见。很公平,但是,我不清楚随着滴答率的增加有哪些可检测的缺点。
例如,freeRTOS 文档指出“RTOS 演示应用程序都使用 1000Hz 的滴答率。这用于测试 RTOS 内核并且高于通常所需的频率。”它确实继续说相同优先级的任务会经常切换 - 这将导致内核占用大量处理时间,这将是负面的。我认为最终通过增加滴答率来加速的意图最终会变成负数,因为内核消耗了大部分处理器时间。
也许这是我唯一需要的答案。但是,在我们的案例中,所有任务都有不同的优先级,所以我认为这不(作为?)适用。
最终,我试图确定我们的软件是否以过高的滴答率运行,或者它与某个阈值有多接近。我认为开发过程中的预期好处是稳定用户界面。
我希望答案不完全基于经验!
最佳答案
调度程序在每个滴答上运行,因此如果例如调度程序需要 10 微秒来运行并且每 10 毫秒发生一次滴答,则在没有任何其他调度事件的情况下,调度开销为 0.1%,但是如果每 100 毫秒发生一次滴答,则开销是 10%。在极端情况下,滴答率可能会如此之高,以至于您始终处于调度程序中而从未实际运行任务!
实际的调度开销当然取决于处理器速度。更快的处理器将能够处理更快的滴答,但运行比应用程序需要的更快的滴答没有任何好处,因为它会占用可用于有用工作的 CPU 时间。 10 到 100 的建议可能与适合大多数系统的值有关;目标是仅在必要时尽可能快。
通过在调度程序中花费比必要时间更多的时间,对于在计时器或延迟以外的事件上调度的任务可能会发生更大的调度延迟和抖动。例如,如果发生中断并且处理程序触发任务;当调度程序已经在处理滴答时发生中断时,该任务可能会延迟。
更快的滴答率不会使任何东西运行得更快,它只会增加可能使用的计时器和延迟的分辨率,但相反它会减少范围。 100us 滴答率的 16 位定时器将在 6.55 秒后翻转,而 10ms 滴答将在 10 分 55 秒后翻转。如果计时器是 32 位的,这可能不是什么问题。
你需要问问自己你需要从计时器和延迟中获得什么样的分辨率(以及可能的范围);如果 UI 是“最重要”的任务,则似乎不太可能需要 100us 分辨率(尽管“重要性”是实时系统中不适当的优先级分配方法 - 因此它已经敲响了警钟!)。
如果您只需要为一项任务提供更高的分辨率 - 例如,以 Niquist 速率对 ADC 进行信号采样,那么您最好为此使用独立定时器?如果设置得那么快以获得对轮询事件的及时响应,那么在这种情况下,您最好安排此类事件生成中断。
I would assume the higher tick rate means we are switching in the highest priority task faster.
关于rtos - RTOS 中滴答率过高的症状/影响是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503765/
我正在寻找一种方法来创建根据价格选择我的产品的过滤器(选择下拉菜单)。 我知道这样的查询是完全可能的: SELECT * FROM products ORDER BY price ASC SELECT
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
在我的表单中,我让用户输入房间的长度高度和宽度以获得 m2、m3 和瓦特的计算值。但是用户也应该能够直接输入 height 和 m2 来获取值。我尝试了很多语法,但 if else 不能正常工作。我知
我在 Elasticsearch 中创建了一个索引,看起来像 {"amazingdocs":{"aliases":{},"mappings":{"properties":{"Adj Close":{"
我有以下功能,我需要清除数据库中的所有图片列并移动到文件系统。当我一次性完成这一切时,内存太多并且会崩溃。我切换到递归函数并执行 20 次写入和批量操作。 我需要为大约 6 个表执行此操作。我的 Re
我正在编写一个函数来计算 PI 的值,并将其作为 double 值返回。到目前为止,一切都很好。但是一旦函数到达小数点后14位,它就不能再保存了。我假设这是因为 double 有限。我应该怎么做才能继
2020年是中国CDN行业从98年诞生到今天快速发展的第二十四年,相关数据显示,全国感知网速持续上扬,达到了3.29兆/秒,标志着在宽带中国的政策指导下,中国的网速水平正在大步赶上世界发达国家的水平
在 aerospike 集合中,我们有四个 bin userId、adId、timestamp、eventype,主键是 userId:timestamp。在 userId 上创建二级索引以获取特定用
$('#container').highcharts('Map', { title : { text : 'Highmaps basic demo'
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
我使用 Highcharts ,我想在 Highcharts 状态下悬停时制作动态不同的颜色。 正如你可以看到不同的颜色,这就是我做的 var usMapChart , data = [] ; va
在所有节点上运行 tpstats 后。我看到很多节点都有大量的 ALL TIME BLOCKED NTR。我们有一个 4 节点集群,NTR ALL TIME BLOCKED 的值为: 节点 1:239
我发现 APC 上存在大量碎片 (>80%),但实际上性能似乎相当不错。我有 read another post这建议在 wordpress/w3tc 中禁用对象缓存,但我想知道减少碎片是否比首先缓存
对于我的脚本类(class),我们必须制作更高/更低的游戏。到目前为止,这是我的代码: import random seedVal = int(input("What seed should be u
我发现 APC 上存在大量碎片 (>80%),但实际上性能似乎相当不错。我有 read another post这建议在 wordpress/w3tc 中禁用对象缓存,但我想知道减少碎片是否比首先缓存
对于我的脚本类(class),我们必须制作更高/更低的游戏。到目前为止,这是我的代码: import random seedVal = int(input("What seed should be u
我已经 seen >2 字节的 unicode 代码点,如 U+10000 可以成对编写,如 \uD800\uDC00。它们似乎以半字节 d 开头,但我只注意到了这一点。 这个 split Actio
有人可以帮我理解为什么我的饼图百分比计算不正确吗?看截图: 根据我的计算,如 RHS 上所示,支出百分比应为 24.73%。传递给 Highcharts 的值如下:- 花费:204827099.36-
我阅读了有关该问题的所有答案,但我还没有找到任何解决方案。 我有一个应用程序,由我的 api 服务器提供。 Wildfly 8.1 和 Mysql 5.6。当查看时间到来时(Wildfly 服务器连接
我正在用选定的项目创建圆形导航。当用户单击任何项目时,它将移动到定义的特定点。一切都很好,除了当你继续点击项目时,当动画表现不同并且项目在 360 度圆中移动并且它被重置直到你重复场景时,我希望它
我是一名优秀的程序员,十分优秀!