[Opensim-dev] 20,256 prim test
Stefan Andersson
stefan at tribalmedia.se
Thu Dec 13 08:50:06 UTC 2007
A note regarding the Sqlite/MySQL (and possibly MSSQL, if it's based on the same code) RegionStore implementation;
the region datastore in those adapters is borked, as it depends on a pre-initialized and re-used set of commands, all connected to one db connection, which means that we need to lock the database while updating (else the commands risk getting effed up), and that we never can use more than one connection. This means all db requests are thread-and-db synch end to end, which leads to real bad response times.That needs to be remedied asap. I have a tablemapper/rowmapper pattern on my hard disk that I could commit for discussion if the crew see fit?
/Stefan
Date: Wed, 12 Dec 2007 21:52:01 -0500From: teravus at gmail.comTo: opensim-dev at lists.berlios.deSubject: [Opensim-dev] 20,256 prim test
Greetings everyone
I was having fun tiling the ground and above with .25 meter cubes and ended up with this;
http://opensimulator.org/images/d/d0/My20000Test_001.jpg
This test was conducted on a 100MB ethernet network.
The instance is running 3 regions, two with no prim in it.
The sim is running ODE with a single agent.
The client is running on a different machine then the sim.
This was using the mySQL DB interface in Grid Mode
at 16,750 prim, the instance of OpenSim was using up 45% of a dual core 3Ghz processor(one core)
at 20,256 prim, the instance of OpenSim was using up 22% of a dual core 3Ghz processor(both cores)
In both cases the memory usage was around 145MB of RAM
using 58 Threads
758 handles
avg 1600 context switches
.NET Perf Info
11,750,740 = # Marshaling with unmanaged code(ODE)
2,839 = # GC handles
0.10 - 0.36 = % Time in GC
4,840 = Classes loaded
69 = Total Assemblies
.NET Locking and Threads
2 = locking contentions /sec
75,505+ and increasing = Queue Length peak
58 = Logical threads
4,294,967,033 = physical Threads
322 = current recognized threads
A couple of notes.
It's really difficult to get to 20,000 prim. The reason is DataStore Database backup takes an hour (based on prim duplications).
At least with mySQL, this can be done asynchronously, I suggest we do that, otherwise you can DOS a sim simply by copying prim.
IMHO, this is the *WORST* performance bog that we've got. Even worse then the packet object create and discard.
When logging into the sim, it takes about 3 minutes on a 100MB network to get all 20,256 prim at 600Kb/sec. During that time, you can't really move because everything is being pushed through the Task throttle (this is by design). Before this becomes general practice, we'll need to make sure we limit the amount of prim that go out at a time to a client.
One 3Ghz core could handle approx 18,000 prim before stalling in between frames.
Once again,
Have a look at the picture. It has the sim stats visible
Best Regards
Teravus Ousley
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20071213/064d20e5/attachment-0001.html>
More information about the Opensim-dev
mailing list