Evg*_*sky 7 networking performance linux-networking windows-server-2012-r2
我正在研究是否可以在 Windows 中实现一个 HPC 应用程序,该应用程序使用十几个或最多 200 个多播组(即使用 MSI-X 和 RSS,我可以)以高速率接收小型 UDP 多播数据报(主要是 100-400 字节)扩展到多个内核),对每个数据包进行一些处理,然后将其发送出去。通过 TCP 发送我设法达到了我需要的程度(6.4Gb/秒)而没有撞墙,但是以高 pps 速率接收数据报却成了一个问题。
在最近对 Windows 2012 R2 上带有 2 端口 10Gb 以太网 NIC 的高规格 NUMA 机器进行的测试中,我每秒只能接收数十万个 UDP 数据报(早期丢弃,即没有实际处理数据,使用 2x12 内核从等式中删除我的应用程序的处理开销以查看它的速度有多快,并且测试的 12 个多播组的内核部分似乎分布在一个 NUMA 节点的 8 或 10 个内核上(设置了最大 RSS 队列)到 16) - 尽管使用 .net 应用程序,因此本机应用程序应该能够运行得更快。
但即使是Len Holgate 在他的高性能 Windows RIO 测试中也只能以 500kpps 的速度接收 UDP 数据包,使用 1024 字节的 UDP 负载。
在QLogic 的白皮书(未提及被测操作系统)中,“多线程超小数据包路由”(包括接收和后续发送?)的限制设置为5.7Mpps。在关于Linux 网络的文章中,限制设置为每个内核1Mpps 到 2Mpps(据报道或多或少线性地扩展),或者甚至是15Mpps,使用绕过内核的特殊解决方案。
例如网络地图
可以在10GigE 链路上以线速 ( 14.88Mpps )生成流量,只需一个以 900Mhz 运行的内核。这相当于每个数据包大约 60-65 个时钟周期,并且可以很好地扩展内核和时钟频率(4 个内核,线速低于 450 MHz)。接收端也达到了类似的速率。
那么,我可以使用与供应商无关的 API 使用具有良好标准以太网 NIC、执行标准以太网(而不是例如Converged Ethernet)的Windows 2012 R2 走多远?
可以绕过内核并在安装了 hpc 的情况下使用 netdirect。请参阅https://msdn.microsoft.com/en-us/library/cc904344(v=vs.85).aspx我无法找到任何性能数据(我怀疑每个供应商的情况会有所不同,因为它比 NIC 硬件更直接地使用其他 API),但它应该与 Linux 中的其他内核旁路解决方案相当(内核旁路就是内核旁路)编辑:因此,如果您打算拒绝实际使用所提供的硬件,则不要指望可以从标准获得性能网卡使用所需的驱动程序。不需要聚合以太网(我不知道这是怎么出现的),但这就是供应商向操作系统驱动程序公开硬件功能的方式,我不知道为什么你甚至参考 qlogic 论文(特别是指使用他们的网卡硬件 - 你说你不想做的事情)与网络地图文件相同(使用修改后的驱动程序)。
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |