OpenSim 0.9/OpenSimIniTuning

Aus Hyperweb & OpenSim
Wechseln zu: Suche

Tuning der OpenSim.ini

Hier folgen einige Einstellungen, wie sie zusätzlich zu den notwendigen Regions-Einstellungen gesetzt werden können. In meiner Referenzversion der OpenSim.ini sind sie bereits berücksichtigt.

Wenn eine Region abstürzt, soll nicht nur die Region neu gestartet werden, sondern die ganze OpenSim-Applikation. Dies erhöht die Betriebssicherheit, weil manchmal auch die anderen Regionen der selben OpenSim-Instanz vom Crash in Mitleidenschaft gezogen werden.

[Startup]
  InworldRestartShutsDown = true

Wer administrativen Accounts des Gridbetreibers inworld alle Rechte auf seinem Land geben möchte, kann allow_grid_gods auf true setzen (Default ist false). Sollen Mieter auf dem Land nur die inworld vergebenen Rechte haben, muss parcel_owner_is_god auf false gesetzt werden. Außerdem wäre es möglich, dem region_owner die defaultmäßig vorhandenen Rechte wegzunehmen, oder einem region_manager die Rechte zu geben.

[Permissions]
  ; allow_grid_gods = false
  parcel_owner_is_god = false

Das Warp3DImageModule erzeugt derzeit die schönsten Landkarten-Oberflächen, belastet aber auch den Server stärker. Wird MaptileRefresh auf einen Wert größer Null gesetzt, dann wird alle X Sekunden (hier 3600) ein neues Kartenbild errechnet. Prims sollen auch auf der Karte angezeigt werden.

[Map]
  MapImageModule = "Warp3DImageModule"
  MaptileRefresh = 3600

Wenn ein Telehub auf dem Land ist, teleportieren Avatare immer dorthin, egal welche Koordinaten sie in der Map einstellen. Der folgende Parameter erlaubt Avataren aber, alternativ zu Landmarks aus ihrem Inventar zu teleportieren, und damit den Telehub zu umgehen.

[Startup]
  TelehubAllowLandmark = true

Dieser Parameter ist nur im Fehlerfall notwendig! Manche Mono-Versionen kommen mit dem Cache für Sculpt-Map-Kollisionen nicht klar. Der Cache kann ausgeschaltet werden, was aber zusätzliche Anfragen beim Assetserver des Grids verursacht. Setze den Wert deshalb nur zu Testzwecken auf "false", und installiere dann eine andere Mono-Version.

[Startup]
  ; CacheSculptMaps = true

Wenn OpenSim auf einem leistungsfähigen Rechner läuft, kann die Anzahl der maximalen Threads erhöht werden. Bei alten Mono-Versionen muss die Anzahl ggf. reduziert werden.

[Startup]
  MaxPoolThreads = 300
  MinPoolThreads = 32

Mit den folgenden Parametern können Datenraten limitiert werden. Default ist ohne Limit, und für Server in professionellen Rechenzentren ist das auch gut so. Wer aber seinen Server an einem privaten DSL-Anschluss betreibt, kann die verfügbare Bandbreite durch Experimentieren mit diesen Limits gerechter auf die anwesenden Avatare verteilen. (Details in der OpenSim.ini)

[ClientStack.LindenUDP]
  ; scene_throttle_max_bps = 800000
  ; client_throttle_max_bps = 100000

Bugfix, nur mit der alten ODE wirksam: Der Defaultwert 80 für das Avatargewicht wird durch einen erheblich kleineren Wert überschrieben. Dies führt dazu, dass die Avatare beim Laufen und Stehen nicht mehr so tief im Boden einsinken.

[ODEPhysicsSettings]
  av_density = 3

Wer Tageslängen wie im realen Leben bevorzugt, kann das wie folgend anpassen:

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

Segler und Piloten bevorzugen oft "ConfigurableWind" gegenüber zufälligem Wind:

[Wind]
  ;; 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 ist natürlich auch klasse! Mit enable_windlight können sich geeignete Viewer die Windlight-Einstellungen des Servers teilen, so dass alle Beteiligten das gleiche Wetter sehen.

[LightShare]
  enable_windlight = true

Die OpenSim Script Engine versteht neben den LSL Funktionen auch noch unzählige OSSL Funktionen. Sofern nicht anders konfiguriert, findet ihr die Datei im Verzeichnis "config-include" mit dem Namen "osslEnable.ini". Wird hier keine Datei angegeben, und auch nicht OSSL nach der alten Methode in einer Sektion [XEngine] von OpenSim.ini konfiguriert, dann bleibt OSSL abgeschaltet.

[OSSL]
  Include-osslEnable = "config-include/osslEnable.ini"

Die nächste Einstellung ist ziemlich diffizil. Ich lasse mal den Original-Kommentar stehen, selber empfand ich "false" als die bessere Variante.

[XEngine]
  ;; 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

Wenn Scripte wegen Lag instabil werden, hilft es manchmal, für "MaxThreads" und "EventLimit" die Werte zu erhöhen.

[XEngine]
  ;; 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

Wird OpenSim nicht auf dem Server neu compiliert, sondern die gesamte ../bin Verzeichnisstruktur bei jedem Update komplett ausgetauscht, dann müssen die Scripte auf den Regionen nicht bei jedem Programmstart neu compiliert werden.

[XEngine]
  DeleteScriptsOnStartup = false

Dies ist sehr von den persönlichen Vorlieben abhängig. Mit der hier gewählten Option werden zuerst die Objekte gerezzt, die dem Avatar am nächsten sind. Oft wird auch der Defaultwert "BestAvatarResponsiveness" bevorzugt, mit weniger Lag aber eventuell schlechterer Sicht.

[InterestManagement]
  UpdatePrioritizationScheme = FrontBack

Hiermit werden die vieldiskutierten NPCs (Nichtspieler-Figuren) aktiviert. Es können Kopien von Avataren inclusive Kleidung erzeugt und als Puppen auf das Land gerezzt werden. Diese lassen sich dann mit Hilfe von Scripten animieren, um beispielsweise Rollenspielszenarien mit Statisten zu beleben.

[NPC]
  Enabled = true

Die folgenden Abschnitte sind experimentelle Settings, die die Performance verbessern sollen.

[ServiceThrottle]
  Interval = 4000
[Attachments]
  ThrottlePer100PrimsRezzed = 500
[BulletSim]
  UseSeparatePhysicsThread = true

Abschließend können Prim Limits analog zu Second Life eingestellt werden. Dazu wird das PrimLimitsModule ausgewählt, und zwei Limits verändert.

[Startup]
  NonphysicalPrimMax = 64
  ClampPrimSize = true
[Permissions]
  permissionmodules = DefaultPermissionsModule,PrimLimitsModule

Nun muss das eben konfigurierte Modul noch aktiviert werden. In der Original-Beispieldatei ist die folgende Sektion nicht enthalten, muss also dann noch komplett hineinkopiert werden:

[PrimLimitsModule]
  ;# {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

Achtung! Wenn das Land bereits bebaut ist, vergewissere dich vorher, dass alle Prims die neuen Limits erfüllen! Vorhandene Prims werden ggf. automatisch verkleinert. (In meiner Referenzdatei ist EnforcePrimLimits deshalb noch auf "false" gesetzt.)



Weiter: Konfiguration der Berechtigungen für OSSL Funktionen