Chad Grant Asked: 2009-05-01 06:12:40 +0800 CST2009-05-01 06:12:40 +0800 CST 2009-05-01 06:12:40 +0800 CST 千兆真的千兆吗? 772 当使用千兆网卡(服务器级英特尔)和 2 个带有交叉电缆的盒子时......我只看到正在使用的管道的 %20-40。甚至跨路由器。 放入 2 张 100mbps 卡,同样的交易。已使用 %20-40。 是什么赋予了? networking 9 个回答 Voted Best Answer Adam Davis 2009-05-01T06:16:02+08:002009-05-01T06:16:02+08:00 两张带交叉线的卡: 你如何测试它?你是怎么测量的?当您说 20-40% 时,请准确告诉我们您在每种情况下的意思,以及您如何获得该数字。 每个数据包的以太网开销约为 38 字节,而 TCP/IP 的开销约为 52 字节。对于 1500 字节的数据包,通过以太网运行 TCP/IP,您将看到 94% 的可能数据吞吐量。 不过,发送应用程序可能正在发送较小的数据块。以UDP(用于视频流、语音等)。如果每个数据包发送 256 个字节,加上 90 个字节的开销,那么您将获得 74% 的利用率。 然后你有操作系统和 TCP/IP 堆栈的开销——这两者都会增加延迟,由于 TCP/IP 管理网络负载的方式,这将以复杂的方式影响带宽(算法尝试使用最大带宽而不会丢失包)。 然后您在计算机上进行其他加载。如果您从慢速硬盘复制碎片数据,您可能根本看不到网络瓶颈,而是 PC 其他地方的另一个瓶颈。 100base-T 网卡也是服务器级的吗?您确定他们不会将任何应该在 NIC 上完成的处理卸载到操作系统上吗? 网卡在什么总线上?PCI、PCIe 等?那辆公共汽车上还有什么?NIC 是否与任何其他设备共享 IRQ? 您是否为主板和 NIC 使用了最新的 BIOS(如果适用)?最新的驱动程序? 操作系统是服务器操作系统还是桌面(调度程序、堆栈等针对不同的性能场景进行了不同的配置)? 您可能无法获得所需吞吐量的原因有很多。您在上面提出的简单问题并没有提供足够的信息来了解真正的问题在哪里。 在正常网络中,可能是由冲突和其他网络流量引起的 以太网的功能很棒,但它不同步。这意味着两张卡可以同时开始传输,这会导致冲突。 两个卡通常都会检测到冲突,并且在尝试重新发送之前,它们都会随机退回一段时间。 这与以太网数据包和编码的开销相结合,意味着即使在最好的情况下,您也不能真正期望超过 80-90% 的利用率。 您可以通过使用路由器和交换机而不是计算机之间的集线器来缓解这种情况,但是如果数据过多,即使是路由器和交换机也会丢弃数据包,它们只能将总利用率提高几个百分点。 以太网数据包本身包括时钟、寻址等开销。如果您在网络上启用大数据包,那么数据包的开销相对于数据大小会变小,因此对于大传输,您可以获得更好的利用率。但是,如果您的应用程序需要大量较小的数据包,例如在视频或音频流应用程序中,这将无济于事。即使您启用大数据包,您可能仍然只发送小数据包,因为这是应用程序发送的内容。 -亚当 Bob McCormick 2009-05-05T07:02:28+08:002009-05-05T07:02:28+08:00 我的猜测是,这是您的测试方法的限制。例如,如果您通过在两个系统之间传输文件进行测试,那么文件系统的性能可能是一个限制因素。您还需要考虑所使用的任何协议的开销等。当然,以太网和 IP 存在一些固有开销,因此您不太可能看到 100% 的利用率。 我建议使用 iperf ( http://en.wikipedia.org/wiki/Iperf ) 之类的工具,该工具专为测试吞吐量而设计。还有一个名为 Jperf 的 iperf 图形用户界面,但基本的 iperf 命令行并不难弄清楚,嘿……无论如何,你需要多久使用一次它? 顺便提一句。正如一些评论者所建议的那样,它与碰撞无关。全双工以太网不会发生冲突,也没有半双工千兆以太网这样的事情。:-) 这也不太可能与需要巨型帧有关,除非您用于测试的两台 PC 具有非常糟糕的以太网卡或非常低端的 CPU。巨型帧对于充分利用千兆以太网不是必需的,尽管它可以在高带宽传输期间降低 CPU 使用率。不幸的是,它可能会导致比它解决的问题更多的问题,除非您非常确定自己在做什么,否则 我绝对不建议启用它。 Alnitak 2009-05-01T06:20:27+08:002009-05-01T06:20:27+08:00 你用什么来测试你的链接? 如果您只是将内容从内存中推出,那么很容易使 100 Mbps 链路和大部分 1 Gbps 链路饱和。 但是,如果您尝试从磁盘读取内容并传输到其他系统,您将受到磁盘性能的限制。 Vagnerr 2009-05-01T06:16:39+08:002009-05-01T06:16:39+08:00 网卡是否配置为全双工而不是半双工? Dave K 2009-05-05T09:24:23+08:002009-05-05T09:24:23+08:00 当我测试网络吞吐量时,最好去除尽可能多的变量,例如磁盘 i/o 或 CPU 限制。这是我使用的过程,它可以说明您将在网络中看到的典型最大值。 工具: 这两个实用程序都应该在大多数现代 *nix 系统上可用,可以通过软件包预安装,也可以从源代码编译。 网猫 光伏 程序: 在一台计算机上运行以下命令以设置 UDP 侦听器。(使用 UDP 将提供更高的性能数字,因为没有 TCP 传输开销。) nc -ulp 5000 > /dev/null 在另一台机器上,运行以下命令,替换侦听器的 ip 地址,以通过网络向 nc 侦听器发送零流。pv 实用程序将显示接收器跟踪的当前性能。 pv < /dev/zero | nc -u listener-ip-address 5000 笔记: Gig 以太网连接的理论最大值为 119MB/s(注意,M B,而不是 M b) TCP 也可以通过去掉两个 nc 命令中的 -u 来测试 在现实世界的应用程序中,您永远无法达到 pv 输出中所示的性能数字。 这种方法在设计良好且设备功能正常的网络中给出了可预测的结果。出于这个原因,它是帮助发现网络本身或网络设备是否导致感知“缓慢”的好工具。 Eddie 2009-05-01T07:31:21+08:002009-05-01T07:31:21+08:00 如果您想使用千兆以太网的全部吞吐量,您需要确保在整个网络中配置巨型帧——或者至少在您测量性能的所有机器和交换机上配置。 但是,请记住,单个硬盘驱动器的最大传输速率通常为 30-40 MByte/sec,这并不接近 Gigabit/sec。 Dani 2009-05-05T07:22:53+08:002009-05-05T07:22:53+08:00 仅通过在 100m 和千兆位网络共享之间复制文件,我就设法获得了 80%-90% 的利用率 travis 2009-05-01T06:20:21+08:002009-05-01T06:20:21+08:00 亚当和全双工的人是对的。此外,不要忘记您的底层硬件也可能无法完成 1Gbps/100Mbps 的饱和任务。除非您有不错的 RAID 配置、不错的 SSD 或某种基于 RAM 的驱动器,否则您可能不会在很长一段时间内看到这种传输速率。 Chopper3 2009-05-05T07:36:39+08:002009-05-05T07:36:39+08:00 我从未见过铜缆 GigE 链路上的利用率超过 50%,但我看到 Cisco 光纤交换机之间的饱和中继端口上的利用率高达 90%。
两张带交叉线的卡:
你如何测试它?你是怎么测量的?当您说 20-40% 时,请准确告诉我们您在每种情况下的意思,以及您如何获得该数字。
每个数据包的以太网开销约为 38 字节,而 TCP/IP 的开销约为 52 字节。对于 1500 字节的数据包,通过以太网运行 TCP/IP,您将看到 94% 的可能数据吞吐量。
不过,发送应用程序可能正在发送较小的数据块。以UDP(用于视频流、语音等)。如果每个数据包发送 256 个字节,加上 90 个字节的开销,那么您将获得 74% 的利用率。
然后你有操作系统和 TCP/IP 堆栈的开销——这两者都会增加延迟,由于 TCP/IP 管理网络负载的方式,这将以复杂的方式影响带宽(算法尝试使用最大带宽而不会丢失包)。
然后您在计算机上进行其他加载。如果您从慢速硬盘复制碎片数据,您可能根本看不到网络瓶颈,而是 PC 其他地方的另一个瓶颈。
100base-T 网卡也是服务器级的吗?您确定他们不会将任何应该在 NIC 上完成的处理卸载到操作系统上吗?
网卡在什么总线上?PCI、PCIe 等?那辆公共汽车上还有什么?NIC 是否与任何其他设备共享 IRQ?
您是否为主板和 NIC 使用了最新的 BIOS(如果适用)?最新的驱动程序?
操作系统是服务器操作系统还是桌面(调度程序、堆栈等针对不同的性能场景进行了不同的配置)?
您可能无法获得所需吞吐量的原因有很多。您在上面提出的简单问题并没有提供足够的信息来了解真正的问题在哪里。
在正常网络中,可能是由冲突和其他网络流量引起的
以太网的功能很棒,但它不同步。这意味着两张卡可以同时开始传输,这会导致冲突。
两个卡通常都会检测到冲突,并且在尝试重新发送之前,它们都会随机退回一段时间。
这与以太网数据包和编码的开销相结合,意味着即使在最好的情况下,您也不能真正期望超过 80-90% 的利用率。
您可以通过使用路由器和交换机而不是计算机之间的集线器来缓解这种情况,但是如果数据过多,即使是路由器和交换机也会丢弃数据包,它们只能将总利用率提高几个百分点。
以太网数据包本身包括时钟、寻址等开销。如果您在网络上启用大数据包,那么数据包的开销相对于数据大小会变小,因此对于大传输,您可以获得更好的利用率。但是,如果您的应用程序需要大量较小的数据包,例如在视频或音频流应用程序中,这将无济于事。即使您启用大数据包,您可能仍然只发送小数据包,因为这是应用程序发送的内容。
-亚当
我的猜测是,这是您的测试方法的限制。例如,如果您通过在两个系统之间传输文件进行测试,那么文件系统的性能可能是一个限制因素。您还需要考虑所使用的任何协议的开销等。当然,以太网和 IP 存在一些固有开销,因此您不太可能看到 100% 的利用率。
我建议使用 iperf ( http://en.wikipedia.org/wiki/Iperf ) 之类的工具,该工具专为测试吞吐量而设计。还有一个名为 Jperf 的 iperf 图形用户界面,但基本的 iperf 命令行并不难弄清楚,嘿……无论如何,你需要多久使用一次它?
顺便提一句。正如一些评论者所建议的那样,它与碰撞无关。全双工以太网不会发生冲突,也没有半双工千兆以太网这样的事情。:-) 这也不太可能与需要巨型帧有关,除非您用于测试的两台 PC 具有非常糟糕的以太网卡或非常低端的 CPU。巨型帧对于充分利用千兆以太网不是必需的,尽管它可以在高带宽传输期间降低 CPU 使用率。不幸的是,它可能会导致比它解决的问题更多的问题,除非您非常确定自己在做什么,否则 我绝对不建议启用它。
你用什么来测试你的链接?
如果您只是将内容从内存中推出,那么很容易使 100 Mbps 链路和大部分 1 Gbps 链路饱和。
但是,如果您尝试从磁盘读取内容并传输到其他系统,您将受到磁盘性能的限制。
网卡是否配置为全双工而不是半双工?
当我测试网络吞吐量时,最好去除尽可能多的变量,例如磁盘 i/o 或 CPU 限制。这是我使用的过程,它可以说明您将在网络中看到的典型最大值。
工具:
这两个实用程序都应该在大多数现代 *nix 系统上可用,可以通过软件包预安装,也可以从源代码编译。
程序:
在一台计算机上运行以下命令以设置 UDP 侦听器。(使用 UDP 将提供更高的性能数字,因为没有 TCP 传输开销。)
nc -ulp 5000 > /dev/null
在另一台机器上,运行以下命令,替换侦听器的 ip 地址,以通过网络向 nc 侦听器发送零流。pv 实用程序将显示接收器跟踪的当前性能。
pv < /dev/zero | nc -u listener-ip-address 5000
笔记:
这种方法在设计良好且设备功能正常的网络中给出了可预测的结果。出于这个原因,它是帮助发现网络本身或网络设备是否导致感知“缓慢”的好工具。
如果您想使用千兆以太网的全部吞吐量,您需要确保在整个网络中配置巨型帧——或者至少在您测量性能的所有机器和交换机上配置。
但是,请记住,单个硬盘驱动器的最大传输速率通常为 30-40 MByte/sec,这并不接近 Gigabit/sec。
仅通过在 100m 和千兆位网络共享之间复制文件,我就设法获得了 80%-90% 的利用率
亚当和全双工的人是对的。此外,不要忘记您的底层硬件也可能无法完成 1Gbps/100Mbps 的饱和任务。除非您有不错的 RAID 配置、不错的 SSD 或某种基于 RAM 的驱动器,否则您可能不会在很长一段时间内看到这种传输速率。
我从未见过铜缆 GigE 链路上的利用率超过 50%,但我看到 Cisco 光纤交换机之间的饱和中继端口上的利用率高达 90%。