OpenSim Performance and Scalability on Windows setup

Performance results and testing

The first pass at creating tests was based on the TestClient? provided as one of the examples in the SecondLife? library package. The multi-login batch command was extended to allow sub-second intervals and then tested up to 100 simultaneous logins. Due to the difficulty in logging into non-existent clients, a second batch command for creating batches of new users was written and this works well. It has been tested for up to 1000 new users. The final batch command explored but not completed was to have moved a large number of logged in clients around independently. However the focus of our work had moved away from client testing towards server-side unit tests.

The second pass at creating tests was based on the Open Source nunit project. Tests were created initally to prove and test parts of the MySQL database access code, and then extended to test the management of the servers. All these tests were developed to be capable of running without the servers running in the background, and hence be part of the normal build process.

Some of these tests immediately showed up that some exceptions were not being handled within the server code, and so exception handling for these tests was added to the test code itself. Others of the tests were written as stubs and were left deliberately failing as reminders.

Building the server software on Windows XP has historically been a minefield for developers. This is due to the Visual Studio C# compiler often finding errors that are only warnings under Linux. This has applied to every official release of the openSim software up to and including 0.5.8. The latest revisions have overcome these difficulties and this may be taken as a sign of the growing maturity of the product.

The second major problem has been that we have been using MySQL as the database server on Windows XP, and this is not always as well supported as SQLite. When errors have cropped up in the database handling, these have been tracked down to minor differences between the two database packages.

The third and last major problem has been in keeping consistency between versions, and it takes some time to ensure the wealth of initialisation files in step across versions. There is a config file for each server, and XML initialisation file for each server, and the openSim.ini and mysql_connection.ini files, twelve in all. many of these have much in common and single configuration file would have been simpler to maintain.

The code is highly susceptible to falling over for a number of reasons. That these incidents are going down is good, but their existence is unfortunately a sign of lack of strong development strategies. There are still a number of unhandled exceptions, and packets have to be rejected or resent more often than is good. One problem that always seems to be around is that users have a habit of remaining logged on, especially after a server crash, and this logon does not time out, resulting in that user becoming unavailable for testing until the 'agents' table is adjusted.

It also took me some time to realise that if you reset all the data in the database to the originally provided data files like ngi00.dat, then the database tables would be reconstructed as version 1.0, but other tables that had been created in later versions needed to be removed and the migrations table reset to version 1.0. Otherwise the clever server software that looks for out of date tables fails to find any differences and the servers fail to be in sync with the database. The correct process is to export the data from the database once it has been brought up to date. These data files can then be used to restore the data should it get corrupted in this version. If a new version of the software becomes available, the data should be restored to this last known state before upgrading.

Configuration

The Windows testbed consists of three PCs, being two desktop machines running at around 2.9 GHz (the main PC being an Acer 2.93 GHz machine running XP SP2 and the second an Intel Pentium 4 processor with 2GBytes of memory and 2.8GHz, running XP Professional SP3), and a Dell Inspiron 1100 laptop. The three machines are linked over an Internet Router, the D-Link DSL-G604T.

Norton Internet Security 360 is used on the machines and the local network defined as Trusted.

Microsoft Visual Studio 2005 is used with .Net 2.0, and Microsoft C#.

The current version of OpenSim? is r5218 I think, but it is updated regularly.

Testing Results

Topic revision: r3 - 30 Jul 2008 - 05:06:39 - NigelTucker

tip TWiki Tip of the Day
InterwikiPlugin links
The InterwikiPlugin automatically links ExternalSite:Page text to external sites based on aliases defined ... Read on Read more

 
World45 Wiki
This site is powerd by World45 Wiki collaboration platformCopyright © by World45 Ltd. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback