2012-04-05 32 views
0

我有两台Windows XP SP3机器,我试图将3k ZMQ消息从一台发送到另一台。这些都是相当现代的系统(采用5100芯片组的Dual Quad Core Xeon和采用5500芯片组的双核Hex Xeon),并带有服务器级Intel千兆以太网卡。如何优化在Windows上的ZeroMQ性能(XP SP3)

两台机器之间没有交换机或路由器,点对点连接。

使用pcttcp进行性能比较,我可以通过TCP从一台机器发送70MB /秒(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,;-))将不胜感激。

谢谢!

另一个线索:如果我设置多个发送器/两个系统之间接收器对(相同的方向,不同的端口)我能够实现更高的aggrigate速率。 (三共〜42MB /秒)

+0

你有可能将代码归结为一个例子吗?通常使用zmq,这是一个小的实现细节,会被忽略,导致重大的减速。 – g19fanatic 2012-06-13 19:26:13

回答

1

快速谷歌拉这件事http://comments.gmane.org/gmane.network.zeromq.devel/10089

块金指出,线程是为TcpDelAckTicks:[报价]

我得到的大量增加将TcpDelAckTicks注册表值设置为在服务器代码中执行 “apr_socket_accept()”调用的机器之后的性能(2.4秒至0.4秒)。客户端只发送 请求并等待响应循环。 表现没有变化。

我到那里的原因是因为我在寻找MTU附近的东西,认为它可能与网络有关。

然后我发现这http://lists.zeromq.org/pipermail/zeromq-dev/2010-November/007814.html,它有一些性能调整建议(不专门xp),我不会在这里总结,因为它将是一个几乎直接复制和粘贴(不知道我可以更多简洁。)

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

+0

是的,我也看到了。这实际上与设置TcpAckFrequecy = 1相同。在我做这件事之前,我的速度非常慢。不过谢谢。 – JeffV 2012-04-18 12:32:23

+0

没有probs。你禁用了你的防火墙? – pms1969 2012-04-18 13:55:31

+0

是的,防火墙被禁用。 – JeffV 2012-04-19 17:51:53

相关问题