udp套接字如何实际在内部工作?

时间:2012-02-06 16:57:15

标签: performance sockets time udp sendto

我正在尝试将数据包操作减少到最小,以便提高我正在处理的特定程序的效率,但我正在努力使用sendto / recvfrom通过udp套接字发送所需的时间。我正在使用2个非常基本的流程(应用程序),一个是发送,另一个是接收。

我愿意理解当使用这些函数调用时linux内部如何工作......

以下是我的观察: 在以下位置发送数据包时

  • 10Kbps,消息从一个应用程序转到另一个应用程序所需的时间约为28us
  • 400Kbps,消息从一个应用程序转到另一个应用程序所需的时间约为25us
  • 4Mbps,消息从一个应用程序转到另一个应用程序所需的时间约为20us
  • 40Mbps,消息从一个应用程序转到另一个应用程序所需的时间约为18us

当使用不同的CPU时,时间明显不同并且与这些观察结果一致。必须有某种设置可以使一些队列读数更快地完成,具体取决于套接字上的流量......如何控制?

当仅使用节点作为转发节点时,当使用400Kbps流时,进出需要大约8us,我想尽可能多地收敛到这个值。 25us是不可接受的,并且被认为是慢的(很明显,这远远小于每个数据包之间的延迟......但重点是能够最终处理更多的数据包,因此,这一次需要缩短!)。有没有比sendto / recvfrom更快的东西(必须使用2个不同的应用程序(进程),我知道我不能使用monolitic块,因此我需要在套接字上发送信息)?

0 个答案:

没有答案