Re: Connecting spread daemons with different segment configurations
John Lane Schultz <[email protected]> Thu, 29 Jan 2015 11:37:02 -0500
| Newsgroups | gmane.network.spread.user |
|---|---|
| Message-ID | <[email protected]> |
> We just tried to define more than 20 segments in the spread configuration= , but this is not valid due to the following ... I think you meant: #define MAX_SEGMENTS 20 Line 66 of daemon/spread_params.h > First of all, it seems a bit sloppy to me, that there is no "#ifndef MAX_= PROC_NAME", so that one can define this macro variable during configuration= time with "./configure". It was never intended for MAX_SEGMENTS to be so easily a reconfigurable con= stant because of the following: > On the other hand I want to know, why have you chosen such a small number? Three main reasons. = First, it was expected that in LAN type environments that support broadcast= and multicast that this network capability would be exploited by putting a= ll such daemons in the same segment, reducing the need for so many segments= . So, multiple segments was really meant to support WAN type deployments a= nd not degenerate LAN deployments. Getting a membership algorithm to conve= rge across a WAN with more and more segment representatives in each-to-all = communication requires exponentially more communication globally and typica= lly requires ever less sensitive timeouts to allow convergence without memb= ership =93flapping=94 causing needless membership reformations. Second, the way the membership algorithm currently is implemented, all memb= ership information for a potential ring needs to fit within a single Spread= packet, which is typically 1472 bytes minus overhead*. Space is used on t= he token for each segment and in the worst case there could be an entry for= each segment and every daemons=92 ID. So there is a space constraint on h= ow many of these things can be supported without reworking this mechanism. = Modifying this and similar membership constants without being aware of suc= h constraints is dangerous and likely to fail. Finally, we try to discourage people from using 1 daemon per segment config= urations unless it is absolutely required because of the inefficient commun= ication where each daemon needs to send each data message individually to e= ach segment leader. * - This was true before Spread 4.4. In Spread 4.4, we allow the most prob= lematic membership packets to go up to 64KiB by leaning on IP de/fragmentat= ion. If your membership info exceeds a single MTU then a warning will be l= ogged and any underlying network loss will be magnified for these packets, = but in low loss environments it may well go unnoticed. > In you manual you describe a tested configuration of 60 daemons (which is= totally OK for us). Yes, we have seen even larger deployments than that. However, all such dep= loyments, so far as I know, exploit the multi-daemon per segment (i.e. - ne= twork multicast or broadcast) functionality for both performance and capabi= lity reasons (i.e. - the above constraints). > Are there any big disadvantages of huge segment setups and what happens i= f I increase the number of daemons? That depends on what you mean by =93huge segment setups.=94 = If you mean one daemon per segment and many such segments, then, yes, there= are big disadvantages to such deployments versus multiple-daemon per segme= nt configurations. The main problems, which I alluded to above are the com= munication costs, and membership stability (in particular on membership for= mation). On the other hand, adding more daemons to a segment has very low cost as th= e main effect is simply to extend the control token ring by one more member= . Even so, token ring protocols don=92t scale up well to huge numbers of p= articipants and trying to push a Spread configuration towards or even beyon= d 100 daemons may make the system prone to daemon membership churn, even in= a LAN environment, without tailoring the membership timeouts appropriately. > My first guess would be, that the communication overhead is increasing ex= ponentially, due to the fact that the spread daemons always try to test the= ir communication partners. During membership formation, yes, globally that communication scales expone= ntially with the number of segments. Once a ring is formed, data communica= tion (cpu overhead) scales linearly with the number of segments while the p= rimary control communication scales linearly with the number of alive daemo= ns per token ring cycle. > So is it safe to just increase the "MAX_PROC_NAME" variable? It may well work up to some point depending on how exactly many daemons and= segments you try to use and how many daemons are active at any given time,= up until you trip over the packet space constraint that I discussed above = (pre Spread 4.4.) or underlying network loss gets magnified too much (Sprea= d 4.4.). Cheers! ----- John Lane Schultz Spread Concepts LLC Cell: 443 838 2200 On Jan 29, 2015, at 10:21 AM, Timo Korthals <[email protected]= .de> wrote: Dear spread users, we are trying to setup a huge (< 60) spread daemon network. We just tried to define more than 20 segments in the spread = configuration, but this is not valid due to the following line in = "include/sp.h": #define MAX_PROC_NAME 20 /* largest possible size of = process name of daemon */ First of all, it seems a bit sloppy to me, that there is no "#ifndef = MAX_PROC_NAME", so that one can define this macro variable during = configuration time with "./configure". On the other hand I want to know, why have you chosen such a small number? In you manual you describe a tested configuration of 60 daemons (which = is totally OK for us). Are there any big disadvantages of huge segment setups and what happens = if I increase the number of daemons? My first guess would be, that the communication overhead is increasing = exponentially, due to the fact that the spread daemons always try to = test their communication partners. In fact, for our setup we just want to send a really small amount of = data, and only want the advantage of the connectability. So is it safe to just increase the "MAX_PROC_NAME" variable? Kind regards, Timo Timo Korthals, M.Sc. Universit=E4t Bielefeld AG Kognitronik & Sensorik Exzellenzcluster Cognitive Interaction Technology (CITEC) Inspiration 1 (Zehlendorfer Damm 199) 33619 Bielefeld - Germany Office : 3.037 Phone : +49 521 106-67368 eMail : [email protected] Internet: http://www.ks.cit-ec.uni-bielefeld.de/ _______________________________________________ Spread-users mailing list [email protected] http://lists.spread.org/mailman/listinfo/spread-users