It’s been a while since we last updated our site. We spent a lot of time developing our backend and today we finally rolled out the following major upgrades to our service.
Opensim 0.7.2 Final
We were one of the first commercial grids to run OpenSim 0.7.2 RC1 and now we’re one of the first to run the release version of OpenSim 0.7.2.
New Assets System
Assets are pieces of content such as textures, sounds, animations, etc. Assets are by far the largest part of the data used in OpenSim, and therefore handling assets efficiently is important for making worlds run smoothly. We’ve created a new cloud-based assets system, which is faster and more scalable than the asset server that is part of OpenSim. We call it Cassy: the Comprehensive Assets System. Cassy enables Kitely to have faster world startup times, less server lag and provide faster viewer rezz times than grids based on standard OpenSim. Here are a few of the improvements in Cassy (there are many more).
OpenSim normally stores assets in a database. This database is managed by a single Assets Server, which needs to provide its service to all the active worlds. The database and the assets server are bottlenecks, slowing down all the worlds. To remove this bottleneck, we no longer store assets in the database: we store them in Amazon’s cloud storage system, S3. Unlike the database, which can only be accessed by the Assets Server, any instance of OpenSim can access S3. This allows us to distribute the work of the assets server among all of the sims: whenever any instance of OpenSim encounters a new asset, it uploads it directly to S3. This is faster and more scalable than sending the asset to the Assets Server, where it would have stored it in the database. Similarly, when OpenSim needs to load an asset, it downloads it directly from S3 instead of requesting the asset from the assets server.
Another improvement is how we handle duplicate assets. It’s quite common for several users to upload the same asset in a grid such as ours where many users get their content from third-party OpenSim sites. Normally this would cause two copies (or more) of the asset to be stored in the assets server. But Cassy detects such duplicates and stores only a single copy of the asset, improving storage and cache efficiency.
We also improved how viewers download textures. Textures are the largest and most common type of asset, and viewers spend a lot of time downloading them from OpenSim. Modern viewers, such as the Second Life Viewer versions 2 and 3, load textures using HTTP (older viewers used a different protocol, called UDP). OpenSim spends a lot of time sending the textures to the viewers. To lighten the load, we now serve textures from web servers running Apache. When a viewer requests a texture OpenSim redirects it to Apache, where it can download the texture. Apache is much more efficient than OpenSim at serving files so this makes the server run more smoothly, and viewers can display worlds faster.
Unfortunately not all viewers support HTTP redirection, so we only enable this feature for viewers that we’ve tested and we know can do it. This currently includes the Second Life Viewer 2.x and 3.x, and Firestorm 2.x. (Firestorm 3.x doesn’t work with Kitely at present, but they will fix this).
We also improved handling of scripts. We already save compiled scripts; this was explained in a previous blog post. Cassy now employs several additional techniques that help it load scripts significantly faster than standard OpenSim. This means that in most cases script-heavy worlds that would take minutes for all the scripts they include to start running in standard OpenSim will take seconds to start running in Kitely. Scripts still need to be compiled when a newly imported OAR file is first started, which may result in slower startup times, but after the scripts have been compiled worlds should now become fully functional much faster than they did previously.
Other Improvements
There was a problem where the terrain would appear striped. It was caused, curiously enough, by having worlds whose locations in the Kitely grid had very high coordinates. We moved all the worlds closer together and the problem disappeared.
We enabled physics for meshes so you should no longer encounter invisible boundaries around mesh objects.
People started uploading very big worlds into Kitely so we increased the upload size limit for OAR files from 250 MB to 1 GB. In addition, we made the system more robust to prevent such uploads from failing occasionally.