如何优化Windows上的ZeroMQ性能(XP SP3)

时间:2012-04-05 16:16:35

标签: windows performance zeromq

我有两台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

其他参数:

  • TcpAckFrequency = 1 //无法解决此问题。
  • Tcp1323Opts = 1
  • 启用接收侧缩放

我该如何找到瓶颈?我期望通过TCP和ZMQ性能实现什么目标? ZeroMQ网站性能部分详细介绍了吞吐量接近TCP(95%+)的测试。

任何表现提示/智慧(除了使用linux,;-))将不胜感激。

感谢!!!

另一条线索:如果我在两个系统(相同方向,不同端口)之间设置多个发送器/接收器对,我可以实现更高的聚合率。 (总共~42MB / s,三个)

1 个答案:

答案 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),我不会在这里总结一下,因为它几乎可以直接复制和粘贴(不确定我可以更简洁。)

我不确定这会有所帮助,但你可能没有发现它们。