以下是我迄今为止所做的:
使用更多的Rx / Tx缓冲器可提高默认的性能。 我在每个适配器上设置了RSS Queues为4,并且指定了将第二个端口上的RSS CPU设置为0以外(我使用的是16,内核32,HT)。
从观看ProcessExplorer,我受限于CPU处理大量传入中断的能力,即使启用了RSS。 我在2.x模式下使用PCIe x8(电子)插槽。 每个适配器都连接一个5GT /秒x8总线。
操作系统的响应并不重要,I / O吞吐量的确如此。 我受到客户无法处理巨型数据包的限制。
接下来我应该尝试什么设置?
详细信息:双Xeon-E5 2665,32GB RAM,RAID0(用于网卡性能validation的RAMDrive)8个固态硬盘,1TB数据通过IIS / FTP从400个客户端移动到ASAP。
在回应评论时:
实际读取吞吐量是650 MB /秒,在一对10Gb /秒的链路上,进入RAM驱动器
防病毒和防火墙closures,AFAICT。 (在这种情况下,我可以很好地控制PC上安装的内容,我怎样才能确定没有filter会降低性能?我将不得不跟进,这点很重要。)
在Process Explorer中,我可以看到CPU持续运行的时间(红色,内核时间),但networking和磁盘I / O停止
最大RSS处理器的默认值是16
消息信号中断在X520-DA2设备的两个实例上均受支持,MessageNumberLimit设置为18.以下是我在低桌面卡上看到的内容



高性能网卡的问题之一是现代PC架构有点麻烦。 但是,就你而言,这不是问题。 让我解释。
CPU必须做很多处理TCP数据包的工作。 这会影响吞吐量。 在你的情况下限制的事情不是networking硬件,而是服务器使networking链路饱和的能力。
在更近的时代,我们已经看到处理从CPU移动到NIC,如校验和卸载。 英特尔还增加了一些function来帮助进一步降低负载。 这很酷,我确定所有的优化function都打开了。
正如你所暗示的那样,巨型帧实际上有助于提高吞吐量。 但不如RDMA 。
大多数10GBit以太网硬件将具有非常好的利用率不足,称为RDMA或远程直接内存访问。 它允许NIC在没有CPU介入的情况下通过networking将内存复制到内存拷贝。 那么,好的CPU告诉网卡做什么,然后网卡做剩下的事情。 麻烦的是,它还没有使用太多。 但它到达了那里。 显然,在最新版本的Microsoft Windows Server 2012中,他们有一些名为SMB Direct的东西。 它使用RDMA。 所以,如果你想增加吞吐量,你想要使用它。
你能把一些testing硬件放在一起,并安装到那里看看它是如何执行的?
顺便说一下,我不确定你是否会看到10Gbit的内存,但快速的RAM可以帮助RDMA,尤其是56Gbit的Infiniband。 一般来说,最好使用你的服务器支持的最快的RAM。
还要注意上面提到的SMB直接链接上的这个评论:
如果您打算使用networking适配器的RDMAfunction,则不应配备支持RDMA的networking适配器。 组合时,networking适配器将不支持RDMA。
更新:看起来不是所有的10GBit网卡支持RDMA出于某种原因。 所以先检查你的模型的function。
我的另一个想法是用于testing的协议types可能会影响结果。 即在TCP开销之上的协议开销。 我build议你看看使用的东西,可以testing,而不必接触像iperf这样的硬盘。 有一个窗口的地方。
我想这个问题: 为什么我的吉比特债券不能提供至less150 MB / s的吞吐量? 与你的问题有关。 那里我正在谈论戴尔PowerEdge 6950。 答案基本上是“使用巨型帧”来减less中断。 我可以想象,调整网卡的卸载引擎可能会有所帮助,但我不知道如何在W2K8R2上这样做。
想法:提高网卡中的缓冲区数量,提高缓冲区中数据包的中断触发因此每个中断将处理更多的数据包(即将它们传递给OS-IP协议栈)。
看到这个链接: 设置聚合参数与ethtool为10 Gb这就是我所指的。
你的CPU使用率截图显示了2个潜在的瓶颈:
为了解决前者:
至于后者(不知道你实际使用的是什么应用程序):
如果在用户模式下最大化的1个核心表示您的单线程(或单线程瓶颈)应用程序,它应该是
使用多个核心,这可能也可能不是微不足道的。
此外,作为您的应用程序(如果它确实是您的应用程序),显然运行在NUMA节点#1上,但内核的数据包处理是在NUMA节点#0上完成的,
例如右键点击任务pipe理器中的进程,至less在Win2012R2中,您将可以select更改该进程。 我试了一下,对我来说没有帮助,但值得一试,因为它可能会提高caching命中率。
顺便说一句,有问题的机器发送? 接收? 都? 在configuration你的系统性能方面,发送和接收几乎是完全不相关的,尽pipe我上面的build议涵盖了两者。