千兆真的是千兆吗?

Cha*_*ant 5 networking

当使用千兆网卡(服务器级英特尔)和 2 个带交叉电缆的盒子时......我只看到 %20-40 的管道正在使用。甚至跨路由器。

放入 2 张 100mbps 卡,同样处理。已使用 %20-40。

是什么赋予了?

Ada*_*vis 12

带有交叉电缆的两张卡:

你是如何测试的?你是怎么测量的?当您说 20-40% 时,请准确告诉我们您在每种情况下的意思,以及您是如何获得该数字的。

以太网开销约为每个数据包 38 字节,TCP/IP 开销约为 52 字节。对于 1500 字节的数据包,通过以太网运行 TCP/IP,您会看到 94% 的可能数据吞吐量。

但是,发送应用程序可能正在发送较小的数据块。以 UDP(用于视频流、语音等)为例。如果您每个数据包发送 256 字节,加上 90 字节的开销,您将获得 74% 的利用率。

然后你有操作系统和 TCP/IP 堆栈的开销——这两者都会增加延迟,由于 TCP/IP 管理网络负载的方式,这将以复杂的方式影响带宽(算法尝试使用最大带宽而不丢失包)。

然后您在计算机上有其他加载。如果您从慢速硬盘复制碎片数据,您可能根本看不到网络瓶颈,而是 PC 其他地方的另一个瓶颈。

100base-T NIC 也是服务器级的吗?您确定他们不会将应在 NIC 上完成的任何处理卸载到操作系统吗?

网卡在什么总线上?PCI、PCIe 等?那辆公共汽车上还有什么?NIC 是否与任何其他设备共享 IRQ?

您是否为主板和 NIC(如果适用)使用了最新的 BIOS?最新的驱动程序?

操作系统是服务器操作系统还是桌面(调度程序、堆栈等针对不同的性能场景进行了不同的配置)?

您可能无法获得所需吞吐量的原因有很多。您在上面提出的简单问题并没有提供足够的信息来了解真正的问题在哪里。

在正常网络中,可能由冲突和其他网络流量引起

以太网的功能很棒,但它不是同步的。这意味着两张卡可以同时开始传输,这会导致冲突。

两张卡通常都会检测到冲突,并且在尝试重新发送之前,它们都会退避一段随机时间。

这一点,再加上以太网数据包和编码的开销,意味着即使在最好的情况下,您也不能真正期望超过 80-90% 的利用率。

您可以通过在计算机之间使用路由器和交换机而不是集线器来缓解这种情况,但是如果数据过多,即使是路由器和交换机也会丢弃数据包,并且它们只能提高几个百分点的总利用率。

以太网数据包本身包括时钟、寻址等开销。如果您在网络上启用大数据包,则数据包的开销相对于数据大小会变小,因此对于大型传输,您可以获得更好的利用率。但是,如果您的应用程序需要大量较小的数据包,则这无济于事,例如在视频或音频流应用程序中。即使您启用大数据包,您可能仍然只发送小数据包,因为这是应用程序发送的内容。

-亚当

  • 实际上,在全双工交叉链路上不可能发生冲突。 (4认同)
  • 此外,没有半双工千兆以太网这样的东西。真的,查一查——IEEE 从来没有把它定义为一个选项。 (2认同)

Bob*_*ick 6

我的猜测是,这是您的测试方法的限制。例如,如果您通过在两个系统之间传输文件进行测试,那么文件系统的性能可能是一个限制因素。您还需要考虑您使用的任何协议的开销等。当然,以太网和 IP 存在一些固有的开销,因此您不太可能看到 100% 的利用率。

我建议使用像 iperf ( http://en.wikipedia.org/wiki/Iperf ) 这样的工具来测试吞吐量。还有一个名为 Jperf 的 iperf 图形用户界面,但基本的 iperf 命令行并不难弄清楚,嘿...你多久需要使用一次它,对吗?

顺便提一句。这是不是如一些评论者建议,涉及到冲突。冲突不会发生在全双工以太网上,也没有半双工千兆以太网这样的东西。:-) 它也不太可能与需要巨型帧有任何关系,除非您用于测试的两台 PC 的以太网卡非常糟糕或非常低端的 CPU。巨型帧不是充分利用千兆以太网所必需的,尽管它可以在高带宽传输期间降低 CPU 使用率。不幸的是,它可能会导致比解决的问题更多的问题,我绝对建议启用它,除非您非常确定自己在做什么。