OpenSim 0.8/OpenSimIniTuning en

Tuning of OpenSim.ini

Here are some settings as they are set in addition to the necessary region settings. They are already accounted for in my reference version of the OpenSim.ini.

When a region crashed, it is recommended to not only restart that region, but the whole OpenSim application. This increases reliability, because sometimes the other regions of the same instance of OpenSim are affected by the crash.

  InworldRestartShutsDown = true

Who wants to give administrative accounts of the grid operator all rights to his land inworld may set allow_grid_gods to true (default is false). Should you wish tenants to only have the rights assigned inworld, parcel_owner_is_god must be set to false. It would also be possible to take away the region_owner rights existing by default, or to give those rights to the region_manager.

  ; allow_grid_gods = false
  parcel_owner_is_god = false

DThe Warp3DImageModule currently produces the most beautiful maps surfaces. If MaptileRefresh is set to a value greater than zero, then every X seconds (in this case 3600) a new map image is calculated. Prims will also be displayed on the map.

  MapImageModule = "Warp3DImageModule"
  MaptileRefresh = 3600

If a telehub is defined in about land, avatars will always be teleported there, no matter which coordinates they use in the map. The following parameter allows avatars to alternatively teleport to landmarks from their inventory, thus avoiding the telehub.

  TelehubAllowLandmark = true

This parameter is only necessary in case of failure! Some mono versions can't cope with the cache for Sculpt Map collisions. This feature can be turned off, but this is paid for with additional requests to the asset server of the grid. In order to reduce stress on the asset server, this is set to "false" only for testing purposes and then install another mono version.

  ; CacheSculptMaps = true

If OpenSim runs on a powerful computer, the maximum number of threads can be increased. Benchmark: 15 for one processor core (default), 30 for dual core processors and 45 for four or more cores in the processor. The minimum value should increase the performance of mono. with Mono 3.2 or better you can try much higher values, for example MaxPoolThreads = 150 and MinPoolThreads = 48. Under Windows with .NET MaxPoolThreads maybe 300 or whatever as their threading method is diverse.

  MaxPoolThreads = 15
  MinPoolThreads = 10

With the following parameters it is possible to limit data rates. Default is no limit, and that is ok for servers in professional data centers. Someone running his server on a private DSL connection can distribute the available bandwidth between the avatars present by experimenting with these limits. (Details in the OpenSim.ini)

  ; scene_throttle_max_bps = 2621440
  ; client_throttle_max_bps = 196608

Bug fix, only effective with the old ODE: The default value of 80 for the avatar weight is replaced by a much smaller value. This means that the avatars will not sink as deep into the ground when walking or standing.

 av_density = 3

If you prefer day length as in real life, this can be adjusted as follows:

  ;; Number of wall clock hours for an opensim day. 24.0 would mean realtime.
  day_length = 24

Choosing "ConfigurableWind" is interesting for sailors and pilots:

  ;; The Default Wind Plugin to load
  wind_plugin = ConfigurableWind

  ;; These settings are specific to the ConfigurableWind plugin
  ;; To use ConfigurableWind as the default, simply change wind_plugin
  ;; to ConfigurableWind and uncomment the following.
  ; avg_strength = 5.0
  ; avg_direction = 0.0
  ; var_strength = 5.0
  ; var_direction = 30.0
  ; rate_change = 1.0

Windlight is of course also great! With enable_windlight and AllowLightShareFunctions appropriate viewers can share the Windlight settings of the server, so that everyone sees the same weather.

  enable_windlight = true
  AllowLightShareFunctions = true

Note: From OpenSim 0.8.2 onwards (see section below) "AllowLightShareFunctions" is set in the file "osslEnable.ini". Technically it does not matter if the parameter is set here or there, but do it only once to avoid potential error souces!

Additional to the LSL functions, the OpenSim Script Engine understands numerous OSSL functions. Up to OpenSim 0.8.1 the configuration is done in the Sektion [XEngine] of the OpenSim.ini file. From OpenSim 0.8.2 upwards the OSSL configurations are sourced out into a separate file. If not other configured in the OpenSim.ini, you find the file in the directory "config-include" with the name "osslEnable.ini". If no file is given, and also nothing is configured using the old method configuring in [XEngine] of OpenSim.ini, then OSSL remains deactivated.

  ;; only OpenSim 0.8.2 or above
  Include-osslEnable = "config-include/osslEnable.ini"

In OpenSim versions below 0.8.1 the default script stop strategy is "abort". Actually the new "co-op" strategy has turned out to be better. The following activates the "co-op" strategy also in older OpenSim versions.

  ScriptStopStrategy = co-op

The next setting is pretty difficult. I will to allow the original comment to stand, I myself found "false" the better option.

  ;; Set this to true (the default) to load each script into a separate
  ;; AppDomain.
  ;; Setting this to false will load all script assemblies into the
  ;; current AppDomain, which will significantly improve script loading times.
  ;; It will also reduce initial per-script memory overhead.
  ;; However, setting this to false will also prevent script DLLs from being
  ;; unloaded from memory if the script is deleted. This may cause an OutOfMemory
  ;; problem over time when avatars with scripted attachments move in and out of
  ;; the region.
  ;; Some Windows users have also reported script loading problems
  ;; when AppDomainLoading = false
  AppDomainLoading = false

If scripts become instable because of lag, choosing higher values for "MaxThreads" and "EventLimit" may help.

  ;; How many threads to start at maximum load
  MaxThreads = 300

  ;# {EventLimit} {} {Amount of time a script can spend in an event handler} {} 30
  ;; Time a script can spend in an event handler before it is interrupted
  EventLimit = 90

If OpenSim is not recompiled on the server, but the whole ../bin directory structure is completely replaced with each update, then the scripts on the regions do not have to be recompiled when the program starts.

  DeleteScriptsOnStartup = false

This is very dependent on personal taste. With the option selected here objects closest to the avatar are rezzed first. Often, the default value "BestAvatarResponsiveness" is preferred, resulting in less lag, but possibly worse vision.

  UpdatePrioritizationScheme = FrontBack

With this the widely discussed NPCs (non-player characters) can be activated. It is possible to create copies of avatars including clothing and rezz them as puppets on the land. These NPC's can then be animated using scripts, for example to enliven role-play scenarios with extras.

  Enabled = true

The following sections are experimental settings which should increase the performance.

  Interval = 4000
  ThrottlePer100PrimsRezzed = 500
  UseSeparatePhysicsThread = true

Finally prim limits are set analogue to Second Life. Select the PrimLimitsModule and modify two limits.

  NonphysicalPrimMax = 64
  ClampPrimSize = true
  permissionmodules = DefaultPermissionsModule,PrimLimitsModule

Now the just configured module has to be activated. In the original sample file the following section is not included, so it must be copied completely:

  ;# {EnforcePrimLimits} {} {Enforce parcel prim limits} {true false} false
  ;; Enable parcel prim limits. Off by default to emulate pre-existing behavior.
  ;; Effective only if PrimLimitsModule is selected in [Startup] section.
  EnforcePrimLimits = true

Attention! If the land is already built on then check beforehand that all Prims meet the new limits! Existing Prims may be automatically resized. (In my reference file EnforcePrimLimits is therefore still set to "false".)

Continued: Configure OSSL function access