我注意到broadcom和Intel NIC都允许你调整发送缓冲区和接收缓冲区的数量(更多的缓冲区会导致更多的内存使用)。
这些缓冲区如何工作:
那么,网卡缓冲区上有一些build议表明越多越好,一般来说:
http://book.opensourceproject.org.cn/sysadmin/apache/apachetomcat/opensource/090.html
将Web服务器上的networking接口卡上的接收缓冲区设置为最大值。 这减less了丢弃的数据包数量,并减less了TCP重新传输。 您可以通过转到开始|来设置此参数 设置| 控制面板| networking和拨号连接。 select通常称为本地连接的活动局域网连接。 右键点击select属性。 点击networking接口卡旁边的configurationbutton。 将接收缓冲区设置为最大值1024。
…
你可能会想知道做这些的权衡。 权衡是操作系统需要为NIC接收缓冲区和用户端口分配更多的内存。
RX和TX缓冲区通常等同于一个以太网帧。 如果您已将RX缓冲区计数configuration为512,则驱动程序将预留足够的缓冲区来处理512个以太网帧。 由于不同的NIC使用不同的缓冲区描述符数据结构,所以内存数量会有所不同,但一般来说,您应该将缓冲区大小乘以MTU来估计所需的内存量。
戴夫
如果你有代码访问,那么也有SO_RCVBUF选项是有用的,特别是在Windows上。
顺便说一句,有人知道什么是接收缓冲区从网卡与SO_RCVBUF选项的关系? (WskControlSocket /的getsockopt)