InterestManagement
From OpenSimulator
| Languages: |
|
InterestManagement is a subsystem in OpenSimulator (OpenSim) that manages the prioritization and control of updates for Avatars and objects between the server and client. It is primarily configured via the [InterestManagement] section and serves to efficiently distribute bandwidth and CPU load.
Contents |
Configuration
InterestManagement settings are located in the OpenSim.ini or OpenSimDefaults.ini file. The following parameters are available in the [InterestManagement] section:
| Parameter | Description | Values / Notes |
|---|---|---|
UpdatePrioritizationScheme
|
Sets the scheme for prioritizing updates. | Possible values:
|
ReprioritizationEnabled
|
Enables regular re-prioritization of update priorities. | true or false
|
ReprioritizationInterval
|
Time interval (in milliseconds) between re-prioritization runs. | Number (in ms) |
RootReprioritizationDistance
|
Distance threshold for re-prioritizing root (main) avatars. | Number (distance) |
ObjectsCullingByDistance
|
If enabled, object updates outside the view distance are not sent to the client. | true or false – Saves bandwidth but increases CPU load.
|
RootTerseUpdatePeriod
|
Only every nth compact ("terse") update is sent for avatars within the same region. | Number (0 = always send) |
ChildTerseUpdatePeriod
|
Only every nth compact ("terse") update is sent for avatars in other regions (e.g., neighboring regions). | Number (0 = always send) |
These options allow fine-tuning of how often and under what conditions clients are informed about state changes of objects and avatars.
Implementation in Scene.cs
The core code for InterestManagement is located in the Scene.cs file. However, it does not evaluate the complete list of parameters documented in the INI file.
The following settings are actually read and used in Scene.cs:
-
UpdatePrioritizationScheme -
ReprioritizationEnabled -
ReprioritizationInterval -
RootReprioritizationDistance -
ObjectsCullingByDistance
The following parameters, documented in the configuration file, are not evaluated in Scene.cs and have no direct effect there:
-
ChildReprioritizationDistance -
RootTerseUpdatePeriod -
ChildTerseUpdatePeriod
Their influence on the system only exists if they are processed elsewhere in the OpenSimulator source code.
Purpose and Function
The InterestManagement system filters and prioritizes data sent to clients. Its goal is to minimize network load and optimize server performance without significantly degrading the subjective user experience (e.g., avatar responsiveness). For example, ObjectsCullingByDistance ensures that invisible objects do not generate updates, while prioritization schemes determine which objects or avatars are updated first.