[Spread-users] [Spread-users]unicast performance on multiple spread daemon

이정수 integer at digitalwave.co.kr
Mon Aug 26 11:44:40 EDT 2002

I use spread for unicast communication as well as group communication. 
And the most important thing in the our system is the performance.
I think that running a daemon on each machine is better solution than single daemon configuration
for better performace because of  following considerations. (Of coure it is better solution for system robustness, 
but I interested in the performance in this article.)
i) the system load will be distributed to multiple daemon.
ii) each application can connect to daemon by IPC(using "4803" as daemon name)
iii) if both sender and receiver run on the same machine, there is no inter-daemon communication
But, all expectaction is not true. specially, iii) is not true.
The following is detailed test environment and result.
our system consist of  2 machines.

<machine 1 >
- CPU : Ultra Sparc II 440Mhz Dual
-OS : Solaris 2.8
- Network interface
 lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet netmask ff000000
ge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet netmask ffffff00 broadcast
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5
        inet netmask ffffff00 broadcast
(* ge0 is giga-bit interface)

<machine 2 >  
-CPU : SUN CP1500
- OS : Solaris 2.7
-Network Interface 
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
        inet netmask ff000000
        inet netmask ffffff00 broadcast

case 1 : spread daemon is running on machine1 only.
	(machine have better CPU power and faster network interface)
         unicast sender is running on machine 1 and receiver is runnig on machine2.

		Spread_Segment {

case 2 :  spread daemon is runnig on  machine1 and machine2.
           unicast sender is running on machine1 and receiver is running on machine2.

		Spread_Segment {

Which case shows better speed? The answer is case 1.

The cause of this result may be overhead by token message exchange(Ring Protocol).
token message is exchanged between daemon  WHENEVER unicast send is occur.
In the group communication, it is reasonable. 
But, in the unicast communication using private group name, each daemon know the member of private group
and the location of the member without exchanging token message. Therefore, daemon maybe need not 
token message or reduce it.

Even if both of sender and receiver is runnig on machine1(local communication), token message
is exchanged between daemon on every send opreation. snoop result (at machine1) is below.
Is it unnecessary, ins'n it?

-=-=-=- -> ASM2_ge0     UDP D=4804 S=56223 LEN=32
    ASM2_ge0 -> UDP D=4804 S=32936 LEN=32
        ASM2 ->    UDP D=4803 S=32936 LEN=136
In this case, one multicast UDP, two broadcast UDP is occur for every send operation.

spread seems to handle unicast communication in the same way of group communication 
because spead regard unicast communication as a kind of group communication(group that have only one member).
If spread can reduce token message for the unicast communication, it will shows better performance in the unicast
on multiple daemons.

my opinion is right? or is any fault in my configuration, test method?
I'm expecting your comments.


- Kevin Lee
- DigitalWave,Inc.

More information about the Spread-users mailing list