Time 如何编写具有尽可能接近实时特性的应用程序?

Time 如何编写具有尽可能接近实时特性的应用程序?,time,hardware,real-time,Time,Hardware,Real Time,我正在寻找最好的方法来设计一个需要尽可能接近实时响应的应用程序。我曾考虑过使用精简内核并将软件直接构建到内核中,但我认为这不是最好的解决方案 我对在硬件中创建一些东西很感兴趣(我一直在这里读到这方面的内容),我想知道是否有人构建了类似的东西,如果有,他们使用了什么硬件 例如,是否有一个设备具有同样可编程的千兆以太网?i、 卡上有CPU吗?然后,我可以编写一个内核驱动程序来通信/控制卡上运行的应用程序-由于它离网络接口很近,因此基于网络流量做出决策的延迟会更低 有人这样做过吗?如果是,有人能推荐我

我正在寻找最好的方法来设计一个需要尽可能接近实时响应的应用程序。我曾考虑过使用精简内核并将软件直接构建到内核中,但我认为这不是最好的解决方案

我对在硬件中创建一些东西很感兴趣(我一直在这里读到这方面的内容),我想知道是否有人构建了类似的东西,如果有,他们使用了什么硬件

例如,是否有一个设备具有同样可编程的千兆以太网?i、 卡上有CPU吗?然后,我可以编写一个内核驱动程序来通信/控制卡上运行的应用程序-由于它离网络接口很近,因此基于网络流量做出决策的延迟会更低

有人这样做过吗?如果是,有人能推荐我应该研究的硬件/软件吗?

一般评论 在人们回答之前,您可能需要更具体地说明您的需求。我们中的许多人都建立了实时系统,但请记住a)实时与快速实时不同,b)“实时”是一个总括术语,用于表示一系列不同的及时性标准

您需要哪些活动来确保活动的及时性?您在问题中提出的解决方案有点异国情调,只有在您陈述了您的需求并且您确信更传统的方法是不够的情况下,才应该考虑这些解决方案

构建实时应用程序/系统与设计其他任何东西都没有什么不同。但是,您确实需要以通常捕获“功能”需求(例如,功能/方法前置、后置和不变条件)的精度捕获每个活动的及时性需求。当您开始理解所有这些需求的总和时,困难的部分就来了,因为这些需求是各部分结合在一起的——这与系统设计的其他方面不太一样

即使您不能在所有严格的细节中应用它,我建议您尝试用一个框架来描述应用程序的活动。许多动态应用程序不会完全屈服于分析,因为您没有足够的数据(它们本质上是不确定的/动态的/不确定的),但尝试应用该规程会有所帮助

无论如何,从分析开始,而不是从一些性感(复杂)的解决方案开始

您应该捕获以下内容:

  • 您期望系统(在问题空间)执行哪些自然任务/活动?这是一个开始设计的好地方,但是您的实现可能需要改变

  • 您需要管理哪些资源?(CPU?网络?内存?)

  • 你能保证资源不会被占用吗?如果没有,您需要进行一些可行性分析和/或“减载”。请注意,这捕获了“重要性”或“优先级”的一个维度,最好与其他维度分离

  • 时间限制是什么?这就是“紧迫性”维度。它可能是一个延迟请求,或者别的什么。这些约束是硬约束还是软约束?聚合还是每个任务?(有关区分紧急性和重要性的计划方法的有趣和深入的介绍,请参见CMU中的(或a),但在继续之前深呼吸一下…)

  • 如何在实现中表示每个活动的时间约束上下文?请注意,在大多数常见的操作系统中,CPU没有“截止时间调度器”,通常的方法是将紧急事件映射到优先级上(参见RMA),但这仅在资源负载不足时才起作用

  • 您希望如何应对多资源挑战?这里几乎没有严格的分析工具可以提供帮助,通常目标是尽可能多地过度提供,并在系统边界应用许可控制。如果这是一个系统,您需要及时进行包括网络传输和处理在内的活动,那么您可能希望以QoS流量管理的形式应用准入控制,从而减少(而不是消除)对CPU负载的担忧

  • 您的吞吐量要求是什么

  • 您的活动到达模式是什么?e、 你能保证最短的到达时间吗

  • 您要求系统/应用程序正确运行的置信度是多少

根据其他评论进行编辑 在转向混合硬件/软件方法之前,请确保首先耗尽软件解决方案。如果您的任务被内核抢占,那么您应该努力控制它

什么是操作系统?如果是Linux、最新的Windows或Mac OS X,您应该能够以实时优先级调度处理线程,并将内核引发的抢占降至最低。如果你真的烧掉了一个CPU,也许你应该考虑一种双CPU的方法,在这种方法中,你可以用一个CPU来处理你的应用程序(同样,这取决于操作系统)

啊哈,0.5毫秒的响应时间开始澄清一些情况。如果您使用的是通用操作系统,那么一致的亚毫秒延迟可能有点困难

什么处理器(和时钟速度?)


听起来好像你有一些工作(或接近它)的代码。你已经做了一些分析,因为你认为先发制人会害死你。您采取了哪些措施来消除优先购买权?您参考的“决策”活动是否是一个非常小/简单的评估?它是确定性的吗?0.5ms绑定是物理绑定,还是由于延迟预算(包括系统的其他部分)而征收的?

这取决于操作系统,如果您有非实时操作系统,您可以做的就不多了……您能详细说明一下您的要求吗?你说的好像你需要一个实时硬件解决方案,但希望它作为一个外设在桌面/服务器上运行