在我的应用程序中,我通过UDP套接字以大约58MB /秒的速率发送数据。大部分时间它工作正常,但有时候sendto持续太长时间,时间分组大约0.1,0.2,0.3秒(见下图immage)。 我的系统是一个内核为2.6.32-24-server的linux系统,每次发送的缓冲区长度为45000字节。您是否知道为什么会发生这种情况?
答案 0 :(得分:1)
从发送(2):
When the message does not fit into the send buffer of the socket,
send() normally blocks, unless the socket has been placed in nonblock‐
ing I/O mode. In nonblocking mode it would fail with the error EAGAIN
or EWOULDBLOCK in this case. The select(2) call may be used to deter‐
mine when it is possible to send more data.
除此之外,内核可能在此期间正在做其他事情。如果是这种情况,使用RT内核可能会有所帮助,如yi_H所示。