延迟Linux套接字通信

我有一个用户空间应用程序(无法访问源代码),该应用程序使用socketcan API发送CAN总线数据。

在发送64字节的数据时,应用程序在任意帧(8字节)之间将面临2秒的延迟

奇怪的是,如果我使用 strace 命令运行应用程序,则没有延迟,数据传输将在200毫秒内完成。

这是内核中的代码流, sock_write_iter()-> sock_sendmsg()-> raw_sendmsg()-> can_send()-> __dev_queue_xmit()-> dev_hard_start_xmit()-> flexcan_start_xmit()

使用getnstimeofday(),我可以将延迟追溯到sock_write_iter(),这是socket()系统调用的写处理程序的内核功能。

有什么办法可以减少延迟。我不是怀疑Linux系统调用,而是用户空间应用程序。我也尝试增加不错的值,但会发生延迟。

yjukhdxfv 回答:延迟Linux套接字通信

问题是由于CAN设备的队列长度较小。 更改trasnmit队列可以解决此问题。

labelString
本文链接:https://www.f2er.com/2951523.html

大家都在问