Performance Improvements and Bug Fixes

We updated the system today with several performance improvements, and fixed some OpenSim bugs that were reported by our users.

We’ve updated Kitely to OpenSim 0.8.2.1. This is a minor change, after last week’s update to OpenSim 0.8.2.

We improved the performance of our cloud-based inventory system for users with very large inventories. Your avatar’s inventory should now load faster in the viewer.

We fixed a bug that caused regions in big worlds to appear Offline in the World Map. Those regions weren’t really offline; they just looked that way on the map. Now they are properly displayed as being online.

We fixed a bug that, on rare occasions, caused teleports to high coordinates of a big world to result in the avatar being teleported to location (128,128).

One of the most advanced LSL functions is llCastRay. OpenSim now supports two versions of llCastRay: v1 and v3. We’re currently using v1, which is the default. However, we’re considering switching to llCastRay v3. If you’re currently using llCastRay then please join this forum thread and let us know what you think. If you’re a world owner then we can selectively switch your world to use llCastRay v3, if you’d like to test it.

When evaluating the alternatives to llCastRay, please test two aspects: 1) Is v3 faster or slower than v1? 2) Is v3 more or less correct than v1 (i.e., does it identify the hit objects correctly)?

VarRegions, 10x Faster Object Contents, and More Fonts

We updated our system today with several big changes, including upgrading to OpenSim 0.8.2 Release; converting all the big worlds to VarRegions; and 10x faster loading of object contents.

OpenSim 0.8.2 Release

We upgraded to OpenSim 0.8.2 Release. We were already using OpenSim 0.8.2 Dev, so most of the features in OpenSim 0.8.2 have already been included in Kitely. However, there are still a few changes:

The new version of OpenSim has changed the format of compiled scripts. Therefore, all of the scripts in Kitely need to be recompiled. The first time that any world is started after this update, it will spend some time recompiling its scripts. During this time the world will perform slower than usual, and scripts will be slow to start. This will take a few minutes, and it will only happen once.

The value shown for Physics FPS has changed. It used to be around 55 fps, but for a while OpenSim switched to a different way of showing frame rates, which caused the Physics FPS to show around 11 fps. That change has been unpopular so it was reversed, and now OpenSim shows a Physics FPS around 55 again.

In avatars’ inventories, the “# Kitely Market” folder will now appear near the bottom of the inventory instead of at the top. This is due to a change in how OpenSim handles inventory folders.

A new OSSL function has been added: osGetAvatarHomeURI. It returns an avatar’s Home URI, i.e. the address of its home grid.

Converted All the Big Worlds to VarRegions

All the big worlds (worlds with more than one region) are now VarRegions. See our previous blog post for more information.

10x Faster Object Contents

Don’t you hate it when you click on an object to view its contents, and you’re stuck looking at “Loading contents…” for a long time?

Loading Contents

To fix this, we have significantly improved loading the contents of an object:

First, we’ve improved the reliability of this operation, so the “Loading contents…” message should always disappear eventually, and the contents of the object will appear. (Previously, sometimes the contents never appeared, no matter how long you waited.)

Second, we vastly improved the speed of loading object contents. To test this, we created an object with a large inventory (95 items). In regular OpenSim (and in Kitely before today’s update), loading this object’s contents took 16.0 seconds. After this update, loading the contents takes just 3.5 seconds, a 78% reduction!

But wait, there’s more! Viewers have a debug option called XferThrottle, which can be tweaked to get even more speed. The default value of this option is 150000. If you increase it to 500000 then the time to load the object’s contents drops even more: to 1.6 seconds. So in total, Kitely has reduced the time to load the object’s contents from 16.0 seconds to 1.6 seconds, which is ten times faster than regular OpenSim!

Here’s how you can change the XferThrottle option:

  • Start the viewer
  • Make sure the “Debug” or “Advanced” menu is visible (either name might be used). If the menu isn’t visible then press Ctrl+Alt+D to show it.
  • Select from the Debug or Advanced menu: “Debug Settings” or “Show Debug Settings”
  • In the Debug Settings dialog: type “XferThrottle”
  • Enter the value you want
  • Restart the viewer (this is required)

Here’s what the Debug Settings dialog looks like in Firestorm:

XferThrottle

Two final notes: First, increasing XferThrottle above 500,000 doesn’t reduce the loading time any more. Second, increasing XferThrottle doesn’t reduce the loading time in regular OpenSim, because it’s too slow to take advantage of this setting.

Other Changes

We upgraded to Mono 4.2.1, which should be slightly faster than the version of Mono we used before today’s update (3.10).

We installed additional fonts on our servers, which you can use in scripts. See this forum thread for more information. Some of the new fonts include: Zapf Chancery, Arial Black, Comic Sans MS, Impact, and the ever-popular Webdings.

We fixed a search bug: if a world name contained a common word such as “of” or “in”, and you searched for the world using that word, then the world wasn’t found. Now it will be found. (To be clear, it’s not possible to search just using such short words. But it’s possible to include them in addition to more substantial words. E.g.: you can search for “state of”, but not just for “of”.)

We changed the default viewer that we offer to new users to Firestorm 4.7.5.

Big Kitely Worlds Will Soon be Converted to VarRegions

Kitely supports worlds that have more than one region. Currently, such worlds can be run in one of two modes (selected by the world manager): Multi-region, or Advanced Megaregion. This will change on December 9, 2015: these worlds will be converted to VarRegions, and the option to run worlds in Multi-region or Advanced Megaregion mode will be removed.

This post explains why we’re making this change, and how it will affect you.

Historical Background

Three years ago OpenSim supported two ways to create big worlds: 1) By placing multiple separate regions next to each other: this is called “Multi-region mode”. 2) By combining multiple small regions into a single big region, called a “Megaregion“.

Multi-region mode suffered from many problems. First, there were slowdowns and errors when avatars and objects (including vehicles) crossed region borders. Second, it was wasteful in server resources, making worlds operate slowly. Megaregion mode was more efficient in using server resources, although still not great. It didn’t suffer from region crossing problems, but it did have other limitations that prevented it from being a good alternative to multi-region mode. Kitely’s solution was to develop Advanced Megaregions, which were both more efficient than regular megaregions, as well as solving many of their limitations.

Two years later, at the end of 2014, OpenSim 0.8 introduced a third option for creating big worlds: VarRegions. VarRegions behaved similarly to Kitely’s proprietary Advanced Megaregions, but they had some important limitations. First, they didn’t support the ODE physics engine, which Advanced Megaregions did support, and that was then (and still is) the most dependable OpenSim physics engine. Second, they required all users to upgrade their viewers, since older viewers didn’t support VarRegions. Third, they were less flexible than megaregions in selecting region settings for big worlds. We therefore decided that it was premature to switch Kitely from using Advanced Megaregions to using VarRegions.

Recently, however,  OpenSim 0.8.2 was released, and it has fixed the biggest problem with VarRegions, by allowing them to use ODE. In addition, OpenSim 0.8.2 has deprecated support for megaregions.

Since Kitely’s Advanced Megaregions depend on a part of OpenSim that is no longer maintained, we were left with two options: either we keep the old code, thus making it hard for us to remain compatible with future OpenSim releases; or we migrate all Kitely Advanced Megaregions to use VarRegions, and thus maintain our ability to remain compatible with the standard OpenSim branch. We chose the second option.

Upcoming Changes

The switch to VarRegions will have the following effects:

(This affects only worlds with more than one region.)

All big Multi-region and Advanced Megaregion worlds will be converted to VarRegions. The option to switch between Multi-region and Advanced Megaregion mode will be removed. This means that even if you didn’t use Advanced Megaregion mode before the upcoming change, your big worlds will still be converted to VarRegions.

Importing an OAR file that contains multiple regions saved in Multi-region or Megaregion mode will result in the contents of the OAR file being automatically converted to use VarRegion mode. Exporting big Kitely worlds will always create a VarRegion OAR file.

The region settings of the root region will now be used in the entire big world. This will happen regardless of whether that big world had used Multi-region mode or Advanced Megaregion mode. These settings include terrain textures, water height, etc. This means that if you had set different region settings for different parts of your big world, then the settings for all of the regions except for the root region will be lost. The settings in the root region will be used throughout your world.

Some landmarks might stop working, although this should be rare. Landmarks that were created in a non-root region of a Multi-region world will stop working, because those regions won’t exist anymore. Landmarks for the root region, as well as any landmarks that were created in an Advanced Megaregion world, will continue to work. Since most big Kitely worlds are using Advanced Megaregion mode, this change should have very little effect on most of the landmarks that people have created in Kitely.

Things That will Remain the Same

All other world management features provided in your Kitely account control panel will remain. This includes the ability to change world sizes, change the physics engine, etc.

What you Need to Do

Most people don’t need to do anything.

If you want to have a backup of your world in Multi-region or Megaregion mode then you need to Export your world before the upcoming change. This will create a Multi-region or Megaregion OAR file. You’ll still be able to export your world after the change, of course, but at that point the OAR file will use VarRegion mode.