Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用TCP_节点延迟的unix send()调用的延迟_Unix_Send - Fatal编程技术网

使用TCP_节点延迟的unix send()调用的延迟

使用TCP_节点延迟的unix send()调用的延迟,unix,send,Unix,Send,与TCP_NODELAY选项一起使用时,send()的预期延迟是多少?根据我们的测试,10G网络的容量大约为2.5us。这是否意味着tcpstack需要2.5us 如果IO非阻塞模式与tcp_节点延迟一起使用,send()延迟是否会远低于2.5us,因为它应该是mem copy?我认为这个问题的答案将完全取决于什么操作系统、什么硬件以及涉及什么软件。TCP协议中没有指定延迟的内容;事实上,TCP的一大特点是它能够跨性能差异很大的硬件工作。但是,我不希望阻塞模式和非阻塞模式之间的延迟有太大的差异,

与TCP_NODELAY选项一起使用时,send()的预期延迟是多少?根据我们的测试,10G网络的容量大约为2.5us。这是否意味着tcpstack需要2.5us


如果IO非阻塞模式与tcp_节点延迟一起使用,send()延迟是否会远低于2.5us,因为它应该是mem copy?

我认为这个问题的答案将完全取决于什么操作系统、什么硬件以及涉及什么软件。TCP协议中没有指定延迟的内容;事实上,TCP的一大特点是它能够跨性能差异很大的硬件工作。但是,我不希望阻塞模式和非阻塞模式之间的延迟有太大的差异,除非您试图从单个线程处理多个套接字(在这种情况下,非阻塞IO的性能会更好,因为套接字B永远不必等待套接字a上的操作完成,等等).非阻塞模式与延迟无关。它只是在套接字上提前设置的一个标志,以便各个读/写操作立即返回。当任何
读取
写入
无法完成时,将返回相应的错误号,例如
EAGAIN
,而不是导致整个服务器等待操作完成。等待仍然会发生,但以不同的方式,通过使用其他系统调用,如
select
kqueue
,它们确实会“阻塞”,但会以一种有效的方式同时监视大量连接的进度。这意味着如果使用非阻塞模式,即使使用tcp_nodelay,发送也应在几纳秒内立即返回?顺便说一句,在RHEL6.2中使用connect x3 eth卡测试了延迟。