Windows Server 2008 R2中TX和RX缓冲区的数量

我注意到broadcom和Intel NIC都允许你调整发送缓冲区和接收缓冲区的数量(更多的缓冲区会导致更多的内存使用)。

这些缓冲区如何工作:

  • 他们的大小是多less?
  • 缓冲区与TCP或以太网会话之间有什么关系? (即每个会话1个缓冲区或缓冲区池?)

那么,网卡缓冲区上有一些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)