[zeromq-dev] Fwd: Some clarifications about HWM for pub/sub

Emmanuel TAUREL taurel at esrf.fr
Tue Nov 29 16:40:26 CET 2011


Hi Chuck,

Sorry for sending the link with the test software privately to you, I 
hit the wrong button in my mailer.

> I ran this on my box and confirmed your findings. I also rewrote it in 
> Ruby (my language of choice) and confirmed it again.
>
> I tested with 2.1.10, master 2.1 (2.1.11) and 3.1. I adjusted the HWM 
> on both the PUB and SUB sockets too. When the HWM was high enough 
> (around 200) I never saw any dropped messages. The subscribers were 
> always able to keep up.
>
> What surprised me was that setting the HWM on the SUB socket had *no 
> effect.*  I had two subscribers each with an HWM of 1. The first 
> subscriber merely verified the sequence no and printed the gap if 
> there was one. The second subscriber would sleep for 10ms between each 
> message and then print the gap.
>
> The message gaps for *both* subscribers (the fast one and the slow 
> one) were identical when PUB HWM was set to 10. That does not make 
> sense to me. The slow subscriber should have been dropping messages 
> like mad but it showed the exact same message gaps as the fast one.
>
> This leads me to believe that the PUB socket drops messages for *all* 
> peers when even one of them is slow. It also leads me to believe that 
> HWM is not working on the SUB socket.
>
> I would appreciate it if someone could independently confirm this. If 
> true, there appears to be 2 bugs here.
>
> 1. SUB HWM isn't working (for 2.1.x or 3.1.x)
It's also my feeling but I need more investigation here. What I have 
noticed already is that even with a very small HWM on sub side, ZMQ never
drop messages on this side. What I have seen, is that when you have a 
small HWM on sub side, messages are kept in TCP buffer until there are some
TCP zero window packets on the wire which regulate the traffic between 
pub and sub. But I still have to do some further test here.

Regards

Emmanuel





More information about the zeromq-dev mailing list