10千兆网卡只显示吞吐量的一半

我有2个物理服务器:

  1. 双向英特尔E5504 @ 2GHz,24GB内存,RAID10中的12x32GB英特尔X25-E SSD。
  2. 英特尔Core2 6400 @ 2.12GHz,3GB内存,简单的80GB SATA驱动器。

这两款机器现在都运行Windows Server 2008 R2,并在PCIe x4插槽中安装10Gbit Supermicro AOC-STGN-i2S(实际上它们是Intel 82599轴承,带有Supermicro徽标),并在它们之间安装了一根SFP +直接连接的双轴电缆。

第二个服务器仅用于testing。

首先,我在第二台安装了ESXi,并将第一台作为数据存储。

我注意到,根据CrystalDiskMark,ESX上的虚拟机只有325 MB / s的 seq传输速率(同时使用NFS和iSCSI)。

我在本地的第一台服务器上运行了相同的testing,达到了〜1000 MB / s 。 我想知道,如果networking连接真的杀死2/3的速度,所以我换了2nd的硬盘驱动器,并安装Windows Server 2008 R2,并尝试Jperf和NTTtcp。 Jperf显示为400 MB / s ,NTttcp显示为4300-4600Mbit / s。 Windows任务pipe理器每个间隔显示大约600 000 000字节,转换为4.47千兆字节。

我证实两端都是全双工的,并试图在两端打开和closures巨型帧,但是差别仅为每秒580000000字节和600000000字节。

为什么我看到的吞吐量只有10千兆位的理论最大值的一半?

附录

NTTtcp命令行:

ntttcpr -m 6,0,192.168.137.1 -a 6 (receiver) ntttcps -m 6,0,192.168.137.1 -a 6 (sender) 

我怀疑你的PCI-E x4插槽是瓶颈。 这些插槽的理论吞吐量应该在16 Gbps的范围内(使网卡空间饱和,以备用),但从控制器的angular度来看,这并不总是得到很好的实施。

有一个x8或更高的插槽,你可以从别的东西偷来testing?