我有两台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 /秒)
你有可能将代码归结为一个例子吗?通常使用zmq,这是一个小的实现细节,会被忽略,导致重大的减速。 – g19fanatic 2012-06-13 19:26:13