我正在Linux上的串行端口上实现协议。该协议基于请求应答方案,因此吞吐量受将数据包发送到设备并获得应答所花费的时间限制。这些设备主要基于Arm,并且运行Linux>
= 3.0。我无法将往返时间缩短到10ms以下(115200波特,8个数据位,无奇偶校验,每条消息7个字节)。
哪些IO接口将为我带来最低的延迟:选择,轮询,epoll或使用ioctl手动轮询?阻塞或非阻塞IO是否会影响延迟?
我尝试用setserial设置low_latency标志。但这似乎没有效果。
我还有其他方法可以尝试减少延迟吗?由于我控制所有设备,因此甚至可以修补内核,但最好不要修补。
-—编辑----
串行控制器使用的是16550A。
与更多的工程师讨论了该主题之后,我得出的结论是,该问题在用户空间中无法解决。由于我们需要跨网桥进入内核领域,因此我们计划实现一个内核模块,该模块讨论我们的协议并提供小于1ms的延迟。
-编辑-
原来我是完全错误的。所需要做的只是增加内核滴答率。默认的100个滴答声增加了10ms的延迟。1000Hz和串行过程的负整数值给了我想要达到的时间特性。
我正在寻找一些关于如何使用标记以相对低的延迟(~2s)流直播视频流的建议。我也看到过一些其他类似的问题,比如这个和这个,但都没有真正充分地回答我的问题。第一种是在内容消费者不在现场的假设下工作的。第二个似乎也做出了这样的假设。 我正在寻找技术,库或任何建议真正实现这一点。我已经尝试使用nginx-RTMP从视频设备接收流,然后使用HLS将其发送到浏览器。然而,我所能达到的最低延迟是4s。我还没来得
我想使用Flink流媒体以低延迟处理市场数据( 我有一组计算,每个都订阅三个流:缓慢移动的参数数据、股票价格和汇率。 例如。 Params(缓慢滴答:每天一次或两次): 资源(每秒多次滴答声): fx(每秒多次滴答声): 每当任何股票、外汇汇率或参数数据发生变化时,我都想立即计算结果并将其输出为新流。这在逻辑上可以表示为连接: 例如选择价格=(params.strike-asset.spot)*f
问题内容: 我在PXA270 RISC PC / 104上的RS232通信中遇到了很长的延迟(1.5ms-9.5ms)。我想尽量减少长时间的延迟,但是我是嵌入式设备和C ++的初学者,所以我认为我缺少一些东西。 提到的延迟是在PXA板通过RS232(115200波特)从外部设备接收到数据包之前,直到它向外部设备发送ACK自定义数据包为止。我用示波器在PXA板上测量了延迟,一个通道在Rx上,另一个在
问题内容: 在以下情况下,实现C ++ / Java IPC的最佳方法是什么? 我有两个程序需要相互通信,一个是用C ++编写的,另一个是用Java编写的。两者都在同一台计算机上运行。 程序相互发送消息。消息通常很短(少于几百个字节),但是大小可能为100KB或更大。 不需要确认消息(即不需要像HTTP这样的请求/响应模型)。例如,C 程序向Java程序发送一条消息,而Java程序可以在以后的某个
我在Windows 10 64位上使用Arduino Mega和python 3.7。我试图使用python和pySeries使灯泡闪烁。我希望灯泡保持亮x时间,并关闭y时间。我在python Tkinter程序中输入值:https://pastebin.com/zkRmcP60完整代码。在我输入值后,我通过此代码发送到Arduino: Tkinter程序执行上述功能访问Pastebin获取整个代
问题内容: 关于延期,Effective Go 声明以下内容: 延迟函数(如果函数是方法,则包括接收方)的参数在 延迟 执行时而不是在 调用 执行时进行评估。除了避免担心函数执行时变量会更改值外,这还意味着单个延迟的调用站点可以延迟多个函数的执行。这是一个愚蠢的例子。 延迟函数以LIFO顺序执行,因此该函数返回时将导致打印此代码。 这个例子使我感到困惑。如果在执行defer调用时评估了参数,则应该