[Opensim-dev] Improving object update performance

Hurliman, John john.hurliman at intel.com
Wed Feb 18 01:19:13 UTC 2009


Continuing a phone conversation on the mailing list, this is my current understanding of the status of object updates in OpenSim:

1) Each object update is a single packet. No aggregation is done by combining multiple ObjectUpdate.ObjectData blocks into a single packet, or combining ImprovedTerseObjectUpdate.ObjectData blocks
2) Object updates are sent in the same order to all clients, with no prioritization (using distance from camera/avatar, frustum culling, etc)
3) OpenSim uses two packet types for sending object updates, ObjectUpdate and ImprovedTerseObjectUpdate. Different code paths arrive at each of these packets being sent, and no logic is used to determine the smallest object update packet possible to carry the modified data. This excludes the ObjectUpdateCompressed packet from being used
4) Full scene information is streamed to each client as it connects. ObjectUpdateCached packets are not used in cases where the simulator might suspect a cache hit


None of these are trivial to implement, but #1 would require the least amount of work and would be the least invasive change. #2, #3, and #4 require a stronger concept of an interest list in OpenSim, and a careful balance between cpu load, memory usage from state management, and network load.

John



More information about the Opensim-dev mailing list