[Spread-users] Java API Performance
Mike Perik
michaelperik at yahoo.com
Wed Apr 23 13:38:55 EDT 2008
Everything is running on the same box. It's a linux machine using java 1.5.0_07. I have one machine in the configuration and all of the applications connect locally to the spread daemon.
Like I said the C implementation does not have this latency.
Mike
--- On Wed, 4/23/08, Benjamin Black <nostromo at gmail.com> wrote:
> From: Benjamin Black <nostromo at gmail.com>
> Subject: Re: [Spread-users] Java API Performance
> To: michaelperik at yahoo.com
> Date: Wednesday, April 23, 2008, 10:21 AM
> fyi, the behavior you describe sounds like a network issue
> rather than
> an api issue. have you tried running everything on a
> single machine
> to see if you get the same behavior? have you tried on
> multiple
> machines with the same behavior?
>
> On Apr 23, 2008, at 7:48 AM, Mike Perik wrote:
>
> > Anyone have any idea where this latency is coming
> from? It makes the
> > use of the Java API useless.
> >
> > Is there anything I can do to see when the Spread
> daemon gets the
> > message? I've added milliseconds to the logging
> done by the daemon
> > but I'm finding it difficult to track the receipt
> and sending of the
> > application messages.
> >
> > Has anyone done a JNI version of the C API?
> >
> > Thanks,
> > Mike
> >
> >
> > --- On Mon, 4/21/08, Mike Perik
> <michaelperik at yahoo.com> wrote:
> >
> >> From: Mike Perik <michaelperik at yahoo.com>
> >> Subject: Re: [Spread-users] Java API Performance
> >> To: spread-users at lists.spread.org
> >> Date: Monday, April 21, 2008, 3:52 PM
> >> I run a second instance of the process that only
> receives
> >> and it has the same latency issue. The sender
> doesn't
> >> have to listen but I am doing it to check the
> latency there
> >> as well.
> >>
> >> I've removed the sender doing a receive and
> the latency
> >> dropped to approx 1 ms.
> >>
> >> Why would the latency increase when I attempt to
> receive?
> >> If I don't do a receive (I also don't join
> the
> >> group the message is sent to) and just blast the
> messages
> >> out the latency is high also. If I sleep or 1 ms
> after
> >> doing the send the latency drops down to ~1 ms
> again.
> >>
> >> I also did a test where I sent the first 2500
> messages
> >> without joining the "LATENCY" group and
> the times
> >> were ~1 ms. On the 2500th message I had the
> sender joining
> >> the "LATENCY" group and the latency
> number jumped
> >> from between 2ms - 41 ms. Seems to increment by 2
> ms per
> >> order.
> >>
> >> Recver Latency: 2
> >> Recver Latency: 41
> >> Recver Latency: 39
> >> Recver Latency: 37
> >> Recver Latency: 35
> >> Recver Latency: 33
> >> Recver Latency: 31
> >> Recver Latency: 29
> >> Recver Latency: 27
> >> Recver Latency: 25
> >> Recver Latency: 23
> >> Recver Latency: 21
> >> Recver Latency: 19
> >> Recver Latency: 17
> >> Recver Latency: 16
> >> Recver Latency: 14
> >> Recver Latency: 12
> >> Recver Latency: 10
> >> Recver Latency: 8
> >> Recver Latency: 6
> >> Recver Latency: 4
> >> Recver Latency: 2
> >> Recver Latency: 41
> >> Recver Latency: 39
> >> Recver Latency: 37
> >> Recver Latency: 35
> >> Recver Latency: 33
> >> Recver Latency: 31
> >> Recver Latency: 29
> >> Recver Latency: 27
> >> Recver Latency: 25
> >> Recver Latency: 24
> >> Recver Latency: 22
> >> Recver Latency: 20
> >> Recver Latency: 18
> >> Recver Latency: 16
> >> Recver Latency: 14
> >> Recver Latency: 12
> >> Recver Latency: 10
> >> Recver Latency: 8
> >> Recver Latency: 6
> >> Recver Latency: 4
> >> Recver Latency: 2
> >> Recver Latency: 41
> >> Recver Latency: 39
> >> Recver Latency: 37
> >>
> >> Any ideas on how I can be a subscriber and a
> publisher on
> >> the same group without incurring this huge time
> penalty?
> >>
> >> Am I doing something wrong here?
> >>
> >> Mike
> >>
> >>
> >> --- On Mon, 4/21/08, John Keating
> >> <jkeating at ca.afilias.info> wrote:
> >>
> >>> From: John Keating
> <jkeating at ca.afilias.info>
> >>> Subject: Re: [Spread-users] Java API
> Performance
> >>> To: michaelperik at yahoo.com
> >>> Cc: spread-users at lists.spread.org
> >>> Date: Monday, April 21, 2008, 2:51 PM
> >>> When you're the sender, you're also
> calling
> >>> receiveMessage()...should you?
> >>>
> >>> Mike Perik wrote:
> >>>> Has anyone done any basic performance
> tests with
> >> the
> >>> Java API?
> >>>> I'm seeing what I would consider
> lengthy
> >> sending
> >>> times.
> >>>>
> >>>> My test involves a process sending 5000
> messages.
> >> The
> >>> message is the current time with the
> granularity to
> >>> milliseconds. The sending process sends a
> message and
> >> then
> >>> receives the message. When it receives the
> message is
> >> takes
> >>> time it received it and subtracts the sending
> time.
> >> I'm
> >>> seeing a round trip time of 39-41
> milliseconds. I did
> >> the
> >>> same test in C and the round trip time is more
> like 1
> >> ms.
> >>>>
> >>>> Maybe I'm doing something incorrectly,
> if so
> >>> I'm not sure what it is and would be
> interested in
> >> any
> >>> help you can give me.
> >>>>
> >>>> Below is the code I'm using.
> >>>>
> >>>> Thank you for your help,
> >>>> Mike
> >>>>
> >>>>
> >>>> import spread.*;
> >>>> import java.net.*;
> >>>>
> >>>> public class spreadlatency
> >>>> {
> >>>> SpreadConnection _sc;
> >>>> boolean _sender = false;
> >>>> MessageFactory _mf;
> >>>> static public void main(String args[])
> throws
> >>> Exception
> >>>> {
> >>>> SpreadConnection sc = new
> >> SpreadConnection();
> >>>> spreadlatency sl = new
> spreadlatency(sc,
> >>> args.length == 0 ? true : false);
> >>>>
> sc.connect(InetAddress.getLocalHost(),
> >> 4803,
> >>> null, false, false);
> >>>> sl.run();
> >>>> }
> >>>>
> >>>> public spreadlatency(SpreadConnection
> sc,
> >> boolean
> >>> sender) throws Exception
> >>>> {
> >>>> _sc = sc;
> >>>> _sender = sender;
> >>>> }
> >>>>
> >>>> public void run()
> >>>> {
> >>>> SpreadGroup sg = new SpreadGroup();
> >>>> try {
> >>>> sg.join(_sc,
> "LATENCY");
> >>>> }
> >>>> catch (Exception ex)
> >>>> {
> >>>> ex.printStackTrace();
> >>>> }
> >>>> if (_sender == true)
> >>>> {
> >>>> SpreadMessage sm = new
> >> SpreadMessage();
> >>>> short y = 1000;
> >>>> sm.setType(y);
> >>>>
> sm.addGroup("LATENCY");
> >>>> int x = 0;
> >>>> while (x++ < 5000)
> >>>> {
> >>>> // String st
> =
> >>> "";
> >>>> long t =
> >> System.currentTimeMillis();
> >>>> // st += t;
> >>>> //
> >>> sm.setData(st.getBytes());
> >>>> try {
> >>>> sm.setObject(new
> Long(t));
> >>>> _sc.multicast(sm);
> >>>> receiveMessage();
> >>>> }
> >>>> catch (Exception ex)
> >>>> {
> >>>> ex.printStackTrace();
> >>>> }
> >>>>
> >>>> }
> >>>> }
> >>>> else
> >>>> {
> >>>> int x = 0;
> >>>> while (x++ < 5000)
> >>>> {
> >>>> receiveMessage();
> >>>> }
> >>>> }
> >>>> }
> >>>>
> >>>> void receiveMessage()
> >>>> {
> >>>> try {
> >>>> SpreadMessage sm =
> _sc.receive();
> >>>> short type = sm.getType();
> >>>> if (type == 1000)
> >>>> {
> >>>> // String s
> = new
> >>> String(sm.getData());
> >>>> // Long l =
> >>> Long.valueOf(s);
> >>>> Long l =
> (Long)sm.getObject();
> >>>> if (_sender == true)
> >>>> {
> >>>>
> >> System.out.println("Sender
> >>> Latency: " + (System.currentTimeMillis()
> -
> >>> l.longValue()));
> >>>> }
> >>>> else
> >>>> {
> >>>>
> >> System.out.println("Recver
> >>> Latency: " + (System.currentTimeMillis()
> -
> >>> l.longValue()));
> >>>> }
> >>>> }
> >>>> }
> >>>> catch (Exception ex)
> >>>> {
> >>>> ex.printStackTrace();
> >>>> }
> >>>> }
> >>>> }
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> ____________________________________________________________________________________
> >>>> Be a better friend, newshound, and
> >>>> know-it-all with Yahoo! Mobile. Try it
> now.
> >>>
> >>
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> >>>>
> >>>>
> _______________________________________________
> >>>> Spread-users mailing list
> >>>> Spread-users at lists.spread.org
> >>>>
> >>
> http://lists.spread.org/mailman/listinfo/spread-users
> >>>>
> >>
> >>
> >>
> >>
> ____________________________________________________________________________________
> >> Be a better friend, newshound, and
> >> know-it-all with Yahoo! Mobile. Try it now.
> >>
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> >>
> >> _______________________________________________
> >> Spread-users mailing list
> >> Spread-users at lists.spread.org
> >>
> http://lists.spread.org/mailman/listinfo/spread-users
> >
> >
> >
> >
> ____________________________________________________________________________________
> > Be a better friend, newshound, and
> > know-it-all with Yahoo! Mobile. Try it now.
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> >
> > _______________________________________________
> > Spread-users mailing list
> > Spread-users at lists.spread.org
> > http://lists.spread.org/mailman/listinfo/spread-users
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
More information about the Spread-users
mailing list