我有两台Windows XP SP3机器,我试图将3k ZMQ消息从一台发送到另一台。这些都是相当现代的系统(带有5100芯片组的双四核Xeon和带有5500芯片组的双六核Xeon)以及服务器级英特尔千兆以太网卡。
两台机器点对点连接,中间没有交换机或路由器。
使用pcttcp进行性能比较,我可以通过TCP从一台机器向另一台机器发送70MB / s(56%利用率)。使用ZMQ PUSH / PULL,我只能在两者之间达到~28MB / s。
发送器和接收器在同一台机器上(两台较慢的机器),我能够达到97MB / s的速率。 (双六角核心中220MB / s)
PUSH / PULL通道两端都设置了HWM。如果将HWM大小设置为低(约150条消息)而不是像1024这样的较大值,则它的性能会稍微好一些。
我尝试了6000字节的巨型帧,它变得更糟。 (尽管@ 72MB / s,pcttcp的表现稍差)
我尝试将TcpWindowSize设置为更大的值,但它似乎也变得更糟。 ZMQ喜欢较小的尺寸,pcttcp没有改变。 TcpWindowSize现在设置为32K
其他参数:
我该如何找到瓶颈?我期望通过TCP和ZMQ性能实现什么目标? ZeroMQ网站性能部分详细介绍了吞吐量接近TCP(95%+)的测试。
任何表现提示/智慧(除了使用linux,;-))将不胜感激。
感谢!!!
另一条线索:如果我在两个系统(相同方向,不同端口)之间设置多个发送器/接收器对,我可以实现更高的聚合率。 (总共~42MB / s,三个)
答案 0 :(得分:1)
快速谷歌将其提升http://comments.gmane.org/gmane.network.zeromq.devel/10089
该线程中的金块是TcpDelAckTicks:[quote]
将TcpDelAckTicks注册表值设置为机器后,我的性能大幅提升(2.4秒到0.4秒) “apr_socket_accept()” - 调用服务器代码。客户只是发送 请求并等待循环响应。没有变化 性能
我到达那里的原因是因为我在寻找MTU周围的东西,认为它可能与网络有关。
然后我找到了这个http://lists.zeromq.org/pipermail/zeromq-dev/2010-November/007814.html,它有许多性能调优建议(不是专门的xp),我不会在这里总结一下,因为它几乎可以直接复制和粘贴(不确定我可以更简洁。)
我不确定这会有所帮助,但你可能没有发现它们。