我对 PCI 架构是分层的这一事实感到疑惑。因此,即使我有两个 PCIx4 插槽,也可能无法充分利用它,因为插槽将连接在一个节点中,而该节点的带宽可能不足以处理 2x PCIex4。
我的问题背景是:我试图使用八个 PCIe 1GBit 接口。我有两张带 2 个端口的卡,一张带 4 个端口的卡。我能够在 4 个 NIC 接口上获得最大值。激活第 5 个端口后,每五个接口的性能都会略有下降。激活第 6、第 7 和第 8ht 接口后也是如此。
主要问题是:如何获取机器上的 PCIe 结构,“绘制”它,查看它的节点和连接,并推断出该树中最弱的节点?
答案1
答案2
答案3
这里涉及的不仅仅是 PCI 架构,还包括 FSB、内存带宽和所有芯片组的内部带宽。请注意 Wazoox 的评论 - 即使是相当新的 Xeon 平台在高线速下也表现不佳。
通过阅读您的其他评论,我了解到您正在软件中生成数据包,并通过千兆网卡将其推送出去。如果您对如何生成数据不了解,则可能会使内存带宽饱和。DDR2 将处理 10Gb,但是如果您在生成数据包的同时在内存中进行多次复制,那么您实际上会进行更多的内部流量。
此外,如果所有 8 个核心都已固定,那么您就无法跟上其中任何一个核心。无论是中断加载还是数据包生成过程中的代码路径不佳,都会有一些东西妨碍您。我建议先解决这个问题。分析您的代码,看看是否有任何明显的问题占用了您的大部分时间。
如果这没有帮助,并且根据您的使用要求,您可以考虑一些真正的网络处理/捕获/传输卡,例如恩代斯的 DAG 卡(我建议DAG 7.5 G2/G4PCI-e 的 PCI Express 卡不支持中断驱动,因此不会因中断而增加处理负载。它们本身不是网卡,因此您必须构建整个数据包和有效负载并处理第 2 层,但这并不昂贵。
免责声明:我为 Endace 工作。