如何优化在Windows上的ZeroMQ性能(XP SP3)
我有两台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 /秒)
快速谷歌拉这件事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),我不会在这里总结,因为它将是一个几乎直接复制和粘贴(不知道我可以更多简洁。)
我不确定这会有帮助,但你可能没有发现它们。
你有可能将代码归结为一个例子吗?通常使用zmq,这是一个小的实现细节,会被忽略,导致重大的减速。 – g19fanatic 2012-06-13 19:26:13