【发布时间】:2011-01-09 05:54:07
【问题描述】:
我正在寻找设计需要尽可能接近实时响应的应用程序的最佳方法。我考虑过使用精简内核并将软件直接构建到其中,但我认为这不是最好的解决方案。
我对在硬件中创建一些东西很感兴趣(我一直在 SO 上阅读有关此内容的内容)并想知道是否有人构建了类似的东西,如果有,他们使用了什么硬件?
例如,是否有具有可编程千兆以太网的设备?即卡上的CPU?然后我可以编写一个内核驱动程序来通信/控制卡上运行的应用程序 - 由于它靠近网络接口,因此基于网络流量做出决策的延迟会更低......
有人做过吗?如果是这样,任何人都可以推荐我应该研究的任何硬件/软件吗?
【问题讨论】:
-
这取决于操作系统,如果你有一个非实时操作系统,你可以做的不多......
-
您能否详细说明您的要求?你说的好像你需要一个实时硬件解决方案,但希望它作为台式机/服务器/笔记本电脑上的外围设备运行。对吗?
-
我目前在用户级 C 应用程序中处理数据。然而,由于应用程序经常被内核抢占,因此很难获得我们需要的响应时间。我之所以考虑双硬件/软件解决方案,是为了让硬件能够专注于任务而不会中断。通过为它编写一个驱动程序,可以读取用户空间中的统计信息和信息,这也将允许控制和微调卡上运行的应用程序。我猜想像如何使用 GPU 来卸载图形处理以释放 CPU。
-
@Pete:我会努力让操作系统/调度程序首先完成他们的工作......肯定会降低影响。您是否按实时优先级安排任务?任务执行时间是多少?您在寻找什么延迟范围?您的计算线程是否因任何原因阻塞(互斥体?)?
-
@andersoj 我已经尝试运行具有实时优先级的线程,但是虽然这改善了响应时间,但它们仍然不理想,响应时间本身波动很大(+/- 20ms)。因此,我正在寻找蓝天解决方案。假设我想要一个 0.5 毫秒的保证响应时间(我确实会在美好的一天看到),那么构建它的最佳方法是什么?