|
|
1
7
我之前在相对标准的pc硬件上对千兆链路的吞吐量进行了一些实验,尽管只是进行传输(通过 tcpreplay )而不是udp。 我发现的最大瓶颈是将数据包传输到NIC本身。通过使用高速总线连接到NIC(例如4x pci express NIC),可以显著改善这一点。但即使这样,也有一个非常明确的包/秒限制。显然,增加数据包大小将允许您在减少处理器负载的同时利用更多的带宽。 与评论的思路相同 Steve Moyer ,任何网络的利用率都有一个理论上的限制。在我的实验中(在一个完全安静的网络上进行),我看到的最大速度约为900Mb/s(仅在我的内存顶部)。这是在cpu负载为30%到40%的情况下。 更有可能的是,限制将由您的系统硬件(即PC)而不是您的网络基础设施施加——任何称职的网络交换机都应该能够用小数据包维持全速网络访问——当然,速度比大多数PC所能应付的要高得多。 |
|
|
2
3
您正在使用哪种类型的网络连接?如果您使用的是1000BaseTx/Fx链路,请不要期望最大大小的数据包吞吐量超过80%。随着数据包大小的减小,间距、同步、以太网报头、IP报头和UDP报头的开销相对于有效载荷会增加,因此会进一步降低您的最大吞吐量。 |
|
|
3
3
查看您正在使用的交换机的文档。交换机在每秒可传输的数据包数量(pps)方面受到限制,如果您发送的数据包明显小于最大有效载荷大小,则通常无法维持1GBps。 另一件要检查的事情是你的网卡是否正在进行中断合并,以及它可以支持的最大发送/接收描述符数量是多少。在这种吞吐量水平下,即使使用现代CPU和内存系统,中断服务时间和上下文切换时间也可能成为主机系统的一大开销。 此外,如果您使用千兆铜缆,该卡将发出的最小以太网帧为512字节,因此较小的消息将被填充到该大小。这是因为对载波感应/碰撞检测的要求。 |
|
|
4
3
我发现硬件的每秒数据包限制明显低于网络的理论容量。对于Broadcomm BCM5704S,我的测试速度为69000 pps,而千兆比特为1488100pps。 我在这里报告了更多的数字, http://code.google.com/p/openpgm/ |
|
|
5
0
这里有一个关于调整网络设置(在Linux中)以实现真正的千兆速度的好教程: http://datatag.web.cern.ch/datatag/howto/tcp.html |