0

我有两台 Windows XP SP3 机器,我试图将 3k ZMQ 消息从一台机器发送到另一台机器。这些都是相当现代的系统(带有 5100 芯片组的双四核至强和带有 5500 芯片组的双六核至强),带有服务器级英特尔千兆以太网卡。

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

使用 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,三个)

4

1 回答 1

1

一个快速的谷歌拉了这个http://comments.gmane.org/gmane.network.zeromq.devel/10089

该线程的核心是 TcpDelAckTicks: [quote]

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

我到达那里的原因是因为我正在寻找 MTU 周围的东西,认为它可能与网络相关。

然后我找到了这个http://lists.zeromq.org/pipermail/zeromq-dev/2010-November/007814.html,里面有很多性能调优建议(虽然不是专门xp),这里就不总结了,因为它几乎是直接的复制和粘贴(不确定我是否可以更简洁。)

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

于 2012-04-18T07:10:28.727 回答