Hi Patrik,

After further testing, I'm running into an issue I can't explain and I'm 
hoping you could shed some light on it...
The simplest form that showcases the problem is the following setup:

Two actors... a Sender and a Receiver, using RemoteActorRefProvider.  The 
receiver is started on a known port and waits to receive "case class 
Message(id: Int)" messages.
When the sender starts (as a different JVM process), it looks up the 
ActorRef of the receiver, and then does: for i=1 to N { receiver ! 
Message(i) }
(the code for this is here: 
https://github.com/borice/akka-remote-actor-flood-test)

What I'm seeing is that if I look at the amount of time it takes to receive 
20K messages, that time depends on the value of N (which it shouldn't). 
For example, when N=100,000,  it takes about 500ms - 600ms to receive 20K 
messages.   When N=800,00, it takes 6-7 seconds (10x increase) per 20K 
messages ....
The other weird thing is that the later batches of 20K messages are 
received progressively faster.

If you look at the GitHub link above, the README.md file contains example 
log output after running the application for different values of N. 
I've ran both sender and receiver through a profiler (YourKit profiler) and 
here's what I'm seeing:

For N = 100,000

<https://lh5.googleusercontent.com/-StPZXZuvXf4/Uy9hGzSyIbI/AAAAAAAAJ-c/NIpqSdavFTs/s3200/profile_100k.png>

For N = 800,000 (stopped capturing profiler data after receiver received 
300,000 messages)

<https://lh5.googleusercontent.com/-u2dHrkV3YkM/Uy9d1zeaDKI/AAAAAAAAJ-Q/16tlNRzagOk/s3200/profile_800k.png>
>From the socket send/receive graphs it looks like the sender isn't sending 
the data out as fast as the network can handle... (in other words, I'm 
inclined to think that something in the sending side is not taking 
advantage of all the network bandwidth available.  The CPU usage was not 
being maxed out either... the garbage collector wasn't working overly 
hard... so I'm not sure I understand why using a different value for N (the 
number of messages sent) matters to the amount of time each block of 
messages is received.

Does this make sense to you?

One other usage for Akka I was planning is to retrieve streaming data from 
a Microsoft Kinect from a service sending it via UDP, then do some 
calculations on it, and send it back out to someone else via UDP.   So this 
would be a live continuous stream of data coming at (for now) 30 
readings/second... but soon perhaps at 100 readings/second.

Thanks very much for your help!!!

Best,
Boris

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to