對於有效載荷小於1470的UDP數據包,是否可以達到1Gbit的吞吐量?由於數據包的大小很小,實現這種吞吐量(I/O,OS,網絡等)應該有一些瓶頸。我認爲驅動程序和硬件可能需要調整到小數據包/高吞吐量。有人試圖用小UDP包成功實現1Gbit吞吐量嗎?無法實現1Gbit的UDP吞吐量
回答
我以前在相對標準的PC硬件上做了一些千兆位鏈路吞吐量的實驗,儘管只是傳輸(通過tcpreplay),而不是udp。
我發現的最大瓶頸是僅僅將數據包發送給NIC本身。通過使用高速總線連接到您的NIC(例如,一個4x pci-express NIC),可以顯着改善這一點。但即使如此,還是有一個非常明確的數據包/秒限制。顯然,增加數據包大小可以讓您在減少處理器負載的同時利用更多的帶寬。
與Steve Moyer的評論相同,對於任何網絡的利用都存在理論上的限制。在我的實驗中(這是在一個完全安靜的網絡上完成的),我看到了大約900Mb/s的最大值(並且僅在內存的頂部)。這與CPU的負載爲30%到40%不等。
這個限制很可能會由你的系統硬件(比如個人電腦)施加,而不是你的網絡基礎設施 - 任何值得它的鹽的網絡交換機都應該能夠用小包維持全速網絡訪問 - 當然在遠高於大多數個人電腦可以應付的速度。
有關於調整(在Linux)的網絡設置一個很好的教程,以實現真正的千兆速度在這裏:http://datatag.web.cern.ch/datatag/howto/tcp.html
什麼類型的網絡連接您使用?如果您使用的是1000BaseTx/Fx鏈路,請不要期望最大數據包的吞吐量超過80%。隨着數據包大小的減小,間隔,同步,以太網報頭,IP報頭和UDP報頭的開銷相對於有效負載增加,因此會進一步降低最大吞吐量。
檢查您正在使用的交換機的文檔。如果您發送的數據包大大小於最大有效負載大小,交換機就會受到每秒數據包數量(pps)的限制,並且通常無法承受1GBps。
另一件要檢查的事情是網卡是否正在進行中斷合併,以及它可以支持的最大發送/接收描述符數量是多少。在這種吞吐量水平下,即使使用現代化的CPU和內存系統,中斷服務時間和上下文切換時間也會成爲主機系統的一大開銷。
另外,如果您使用的是千兆位銅纜,卡上最小的以太網幀是512字節,因此較小的消息將被填充到該尺寸。這是因爲對載波偵聽/碰撞檢測的要求。
我發現硬件具有比網絡理論容量低得多的數據包每秒限制。對於Broadcomm BCM5704S,我以69,000 pps的速度實現了這個目標,而相比之下,這個速度達到了1,488,100pps的千兆位。
一些更多的數字我這裏報道,http://code.google.com/p/openpgm/
- 1. TCP vs UDP吞吐量
- 2. 實現HashMap插入的高吞吐量
- 3. IIS:無法獲得高吞吐量
- 4. JMeter - 吞吐量
- 5. 與iperf UDP性能相比,UDP吞吐量較低
- 6. 吞吐量測量
- 7. JMeter的吞吐量控制器中的吞吐量影響
- 8. 如何計算INET的「吞吐量」示例中的吞吐量?
- 9. 測量datanode的吞吐量
- 10. TCP吞吐量圖
- 11. 計算吞吐量
- 12. 吞吐量措施
- 13. 寫油門當表吞吐量高,但GSI吞吐量低
- 14. Redis instantaneous_ops_per_sec高於實際吞吐量
- 15. Azure服務總線實體吞吐量
- 16. UDP吞吐量:減少以太網適配器e1000e中的InterruptThrottleRate。
- 17. Boost UDP套接字的性能 - 吞吐量低?
- 18. Jmeter吞吐量的意義
- 19. Jmeter的吞吐量計算
- 20. Linux無盤客戶端nfs吞吐量
- 21. Redis如何實現高吞吐量和高性能?
- 22. 在ns-3中獲取udp吞吐量時出現聲明錯誤
- 23. 低估DynamoDb吞吐量
- 24. 用java低吞吐量
- 25. Spark流+ kafka吞吐量
- 26. HAProxy遞減吞吐量
- 27. kafka max吞吐量(MB /秒)
- 28. 計算網絡吞吐量
- 29. 用RxJava限制吞吐量
- 30. DynamoDB吞吐量變化
網絡拓撲的更詳細的描述,將有助於搭配建議使用... – 2008-09-19 07:16:47