I am not sure the HTTP server handles UDP, I want to say it does not handle that.
On Mon, Mar 16, 2015 at 11:50 AM, Myron Curtis < [email protected]> wrote: > Could this be a case of the Http server in opensim just being too slow to > respond to this traffic quickly enough? > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Michael > Heilmann > Sent: Monday, March 16, 2015 6:55 AM > To: [email protected] > Subject: [Opensim-dev] UDP async performance > > Opensim Devs > > I have been working on an external process that I hope to link to an > opensim > plugin I am authoring. As a sanity check, I ran a simple socket test > against the components to test for obvious problems before I get to the > heavy lifting. This test was not meant to reveal anything, just to confirm > that the pieces are in place. However, I am not seeing the expected > behavior. > > My simple sanity test: send 1000000 small udp packets at a server, and > have > it count packets received. This is trivial, and the sending client is > python, so all packets should be received. > > While running this on localhost: (~160K packets per second) > > Go, c++, nodejs, c# synchronous : negligible to no packet loss, as > > expected > > > > c# async: 80% packet loss > > > I have reviewed msdn documentation, and went through the opensim code (as > it > uses c# async) to clean up and run my tests. That 80% packet loss is after > forcing my threadpool and iocp thread counts up, and giving c# async extra > time before and after the test to warm up threadpools and process any > queues. > > I have read that in some cases C# and .Net has a packet loss bug for udp on > localhost. > > I re-ran this test between two linux servers with a 10gbe LAN interconnect > to remove any .net localhost packet loss issues, with the following > results: > (~115K packets per second) > > c# synchronous: ~998K messages received (average over 3 runs) Go : > > ~980K messages received (average over 3 runs) > > > > c# async: ~40K messages received (average over 3 runs) > disclosure: Go on my workstation is version 1.4.2, but on the servers is > version 1.2.1. Mono versions are identical > > Now, the 3 runs were very nearly identical, with differences in the > thousands of packets. As before, C# async was given extra treatment to > help > it along. > > I am on linux 64 bit, so I had a coworker write his own version of this > test > using Visual Studio 2013 on Windows (no code sharing), and he saw the same > behavior: c# async suffering massive packet loss while c# sync is keeping > up easily. > > Is there anything in the opensim client stack that I am missing, that > allows > for higher async performance? Or am I on a witch hunt, and this > performance > is within Opensim bounds? I have been increasing the threadpool and iocp > threads as Opensim does. I have pasted important pieces of the code below, > as the entirety could be too long for this > messageboard: (The UDPPacketBuffer class is coped from opensim code) > > > private void AsyncBeginReceive() > > { > > UDPPacketBuffer buf = new UDPPacketBuffer(); > > this.u.BeginReceiveFrom( > > buf.Data, > > 0, > > UDPPacketBuffer.BUFFER_SIZE, > > SocketFlags.None, > > ref buf.RemoteEndPoint, > > AsyncEndReceive, > > buf); > > } > > > > private void AsyncEndReceive(IAsyncResult iar) > > { > > //schedule another receive > > AsyncBeginReceive(); > > > > lock(this) > > { > > this.i++; > > } > > } > > > > public static void Main (string[] args) > > { > > int iocpThreads; > > int workerThreads; > > ThreadPool.GetMinThreads(out workerThreads, out iocpThreads); > > workerThreads = 32; > > iocpThreads = 32; > > Console.WriteLine(workerThreads); > > ThreadPool.SetMinThreads(workerThreads,iocpThreads); > > MainClass mc = new MainClass(); > > mc.AsyncBeginReceive(); > > //manually trigger packet report after test run completion > > Console.ReadLine(); > > Console.WriteLine(mc.i); > > } > > I have run this test repeatedly, varying workerThread and iocpThreads from > 8, to 16, 32, 64 ... 512, without any change in packets received. > If anyone had any insight into why this is suffering from so much packet > loss, I would appreciate it. Thanks. > > -- > Michael Heilmann > Research Associate > Institute for Simulation and Training > University of Central Florida > > _______________________________________________ > Opensim-dev mailing list > [email protected] > http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev > > _______________________________________________ > Opensim-dev mailing list > [email protected] > http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev > -- Michael Emory Cerquoni
_______________________________________________ Opensim-dev mailing list [email protected] http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
