【问题标题】:Soft realtime on windows OS- what to consider?Windows 操作系统上的软实时 - 需要考虑什么?
【发布时间】:2011-09-19 22:24:51
【问题描述】:

当我们在 windows 上构建软实时应用程序时,我们应该考虑什么(软件和硬件):每 XXX 毫秒发生一次并且应该在 YYY 毫秒内完成的任务。 (尽管错过截止日期的后果很糟糕,但应用程序仍然可以从错过的截止日期中恢复 - 因此是“软”实时)。

我已经想到了几个问题: 是否有应该更改的注册表设置,查看? 用外置显卡代替板载视频更好吗?

示例预期答案: 如果您使用 TCP,您应该继续阅读(并禁用)Nagle Algorithm,因为它会延迟数据包发送。

(这可能会在社区 wiki 中上交)

【问题讨论】:

  • 这是理论上的问题还是课堂上的问题,还是您想到的背后有实际应用?
  • 我认为在给出真正好的响应之前,需要更多关于应用程序将要做什么的详细信息。
  • @Bart 真实世界应用
  • @Benoittr:这有点含糊。这是您正在安装/实现的实际应用程序?
  • @mrdenny 我试图让问题尽可能通用,以避免特定的本地优化。但是在这里:一个应用程序接收一些 TCP 数据,对数据进行一些计算密集型处理,可能需要在结束之前中断(并发送它迄今为止找到的最佳解决方案)通过 TCP 返回。中断时,我需要确保尽早这样做,以便有时间实际发送数据,但不要太晚,否则我会增加错过截止日期的机会。

标签: windows hardware real-time


【解决方案1】:

考虑使用Multimedia Class Scheduler Service

来自文档

多媒体类调度服务 (MMCSS) 支持多媒体 应用程序,以确保其时间敏感的处理接收 优先访问 CPU 资源。该服务使多媒体 应用程序在不否认的情况下尽可能多地利用 CPU 低优先级应用程序的 CPU 资源

您可以使用的另一个选项是调整您的thread priorities,但您需要非常小心,不要对此过于激进。

【讨论】:

  • 这正是我想要的答案类型,您可能应该知道但只有少数人知道的事情。我会在 MMCSS 上做一些阅读。谢谢
【解决方案2】:

硬件方面,这会在服务器级设备上运行吗?如果是这样,则适用通常的步骤。禁用超线程、涡轮增压和 CPU C 状态。在您的关键进程上实施某种程度的 CPU 相关性。

【讨论】:

  • 您是否了解有关 CPU 亲和性或线程优先级的任何准则/模式?大多数时候我和他们一起玩,结果总是产生负面影响 - 因此我现在不理会亲和力和线程优先级。
  • 我知道这个答案是3年前的,但我想问:为什么超线程和涡轮增压会影响实时能力?如果有的话,它可能会改善延迟,因为 CPU 可以在更短的时间内完成更多工作,对吧?
  • @9a3eedi 因为确定性...当时,我们不能control Turbo Boost,而且我们都知道超线程并不能使所有工作负载受益。因此,为了可预测的时间(尤其是在负载下)牺牲一些速度是一种权衡。
猜你喜欢
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2011-02-16
相关资源
最近更新 更多