Performance/de

From OpenSimulator

Jump to: navigation, search

Contents

Einführung

Die Leistung von OpenSimulator ist ein sehr komplexes Thema. Die Leistung kann von einer Vielzahl von Faktoren beeinflusst werden, darunter die Anzahl der Prims in einer Region, die Anzahl der Regionen, die Anzahl der Avatare, die Netzwerkqualität zwischen Server und Viewer, die Netzwerkqualität zwischen Simulator und Grid-Services usw.

Wir können die Überlegungen zur Leistung in folgende Punkte unterteilen:

  1. Netzwerkprobleme (Bandbreite und Latenz zwischen Viewer und Simulator, zwischen Simulatoren und zwischen Simulator und Grid-Service).
  2. Simulatorprobleme (z. B. Anzahl der Szenenobjekte, Anzahl der Texturen, Anzahl der Skripte).
  3. Grid-Probleme (hauptsächlich Skalierungsdienste wie Asset, Inventar usw., um mehr Simulatoren und Benutzer zu bedienen).

Die größten Probleme sind wahrscheinlich Netzwerk- und Simulatorprobleme.

Um einen Simulator auszuführen, müssen Sie über eine gute Bandbreite (zum Herunterladen von Texturen), geringe Latenz (damit Bewegungen rechtzeitig gesehen und Aktionen verarbeitet werden) und gute Qualität verfügen (damit zufällige Paketverluste nicht zu verpassten Aktionen oder anderen Problemen führen).

Sie müssen auch die Fähigkeiten Ihrer Hardware kennen. Je mehr Szenenobjekte, Skripte und Avatare Sie haben, desto mehr Speicher und CPU werden verwendet.

Grid-Probleme sind weniger wichtig, bis Sie größere Grid-Größen erreichen (z. B. über 60 gleichzeitige Benutzer).

Überwachung der Leistung

Das Sammeln von Daten zur Analyse von Leistungsproblemen ist ein sich entwickelnder Bereich. Wir können dies in Client-seitige Überwachung (z. B. Statistiken, die Sie im Statistikfenster eines Viewer-Programms sehen können) und Server-seitige Leistungsanalyse aufteilen. Die Server-seitige Leistungsanalyse umfasst OpenSimulator Serverüberwachung und allgemeine Systemtools (z. B. top unter Linux, um zu überwachen, welche Prozesse CPU/Speicher verbrauchen, und allgemeine Überwachungstools wie Zabbix).

Allgemeine Tipps

  • Wenn immer möglich, nehmen Sie nicht an, dass etwas ein Leistungsengpass ist, messen Sie es! Sie könnten zum Beispiel denken, dass Ihre Asset-Datenbank groß ist, aber selbst große Asset-Datenbanken verursachen selten echte Probleme.
  • Machen Sie so viele Objekte wie möglich unsichtbar. Unsichtbare Objekte müssen nicht auf Kollisionen mit Avataren und anderen Objekten getestet werden, was die Physik-Rahmenzeit reduziert und die Leistung verbessert.
  • Lassen Sie so wenige Objekte wie möglich von Physik betroffen sein (z. B. unter Gravitation fallen, von anderen Avataren beweglich). Physikobjekte erfordern viel mehr Kollisionstests als gewöhnliche nicht-phantom-Objekte.
  • Es kann schwierig sein, Messungen durchzuführen, da derzeit nicht viele Tools existieren. Ein solches Tool ist jedoch pCampbot, das mit OpenSimulator gebündelt ist. Dies kann eine Reihe von gleichzeitigen libomv-Clients auf einem Simulator instanziieren, die bestimmte Aktionen wie Klicken auf Dinge und Herumspringen durchführen können. Einige Teile davon (z. B. Erscheinungsbild) sind derzeit ziemlich fehlerhaft und generieren viele Protokolldaten.
  • Wenn Ihre Avatare viel zucken oder unkontrolliert herumfliegen, ist dies oft ein Signal für abgeworfene Pakete aufgrund von Netzwerkproblemen. Für wichtige Pakete wird der Simulator den Sendevorgang 3 Mal wiederholen, aber das Paket danach ablegen. Auf der Simulator-Konsole gibt der Befehl "show queues" an, wie viele Pakete der Simulator erneut senden muss, und die Gesamtanzahl der Sendevorgänge. Wenn die Gesamtanzahl der Wiederholungen größer als 10% ist, handelt es sich um ein Signal für Netzwerkprobleme, zumindest zwischen einem bestimmten Viewer und dem Simulator. Das Problem kann am Ende des Benutzers liegen (z. B. ein schlechter Router, der über WLAN verwendet wird, ein schlecht funktionierender ISP), für den nur schwer etwas getan werden kann!

3 Arten von Ticks

Wenn Sie Zeiten in C# messen, sollten Sie beachten, dass das Wort "Tick" überladen ist: Es gibt 3 verschiedene Werte für einen Tick, und es ist wichtig, sie nicht zu vermischen.

  1. Stopuhr - Variable Auflösungen, abhängig vom Betriebssystem. Stopwatch.Frequency enthält die Anzahl der Ticks pro Sekunde. Auf Windows sind dies etwa 300 Ticks pro Millisekunde.
  2. TimeSpan - 10.000 Ticks = 1 Millisekunde
  3. Environment.TickCount - 1 Tick = 1 Millisekunde

Es wird empfohlen, die Stopwatch-Klasse für die Zeiterfassung zu verwenden, da sie sub-ms-Zeiten messen kann. Sie können den Wert der Stopwatch in ms abrufen, indem Sie Stopwatch.ElapsedMilliseconds verwenden, oder in Ticks mit Stopwatch.ElapsedTicks.

Weitere Informationen

Tipps zur Leistungsverbesserung

  • Wenn Sie den Simulator unter Windows ausführen, versuchen Sie, Hyper-Threading zu aktivieren.
  • Sie sollten das Mono-Profil oder die Binärdatei mit nativer Codeausführung (Ngen) verwenden.
  • Wenn Sie eine unbegrenzte Bandbreite haben, können Sie die unbegrenzte Bandbreite in den Regionseinstellungen aktivieren.
  • Sie können auch die Größe der Asset-Cache-Einstellung erhöhen, um mehr Asset-Daten zu speichern. Die Standardeinstellung beträgt
  1. Möglicherweise benötigen Sie auch mehr Viewer-Verbindungen. Die Standardeinstellung beträgt 4096, aber wenn Sie viele Avatare und andere Dinge haben, die viele Verbindungen erfordern, erhöhen Sie diese auf beispielsweise 16384.
  • Es gibt viele Dinge, die Sie in der Konfigurationsdatei ändern können, um die Leistung zu verbessern. Sie sollten besonders auf diese Werte achten:
    • MinFrameTime - wie viel Zeit in Millisekunden zwischen Frames zulässig ist (Verringern Sie dies, um die Framerate zu erhöhen, erhöhen Sie dies, um die Serverlast zu verringern). Der Standardwert beträgt 10 ms.
    • LogLevel - Standardmäßig werden alle Protokolle aktiviert. Wenn Sie die Protokolle deaktivieren, wird auch die Leistung verbessert.
    • FrameTimeDilation - Standardmäßig wird jede Stunde auf dem Simulator ein Neustart durchgeführt. Sie können dies ändern, um die Ausfallzeit zu verringern (bei gleichzeitigem Anstieg der Serverlast).
    • SleepTime - wie viel Zeit der Simulator zwischen Schritten wartet. Dies kann die Leistung beeinflussen. Je mehr Zeit zwischen den Schritten vergeht, desto weniger CPU wird verwendet.
    • Bin/textures - Sie können dies auf einen leistungsfähigen lokalen Pfad oder Netzwerkpfad ändern, um die Asset-Texturladezeit zu verringern.
    • Bin/objects - Sie können dies auf einen leistungsfähigen lokalen Pfad oder Netzwerkpfad ändern, um die Simulatoreffizienz zu erhöhen.
  • Wenn Sie viele Avatare haben, sollten Sie die GenericAvatarThrottle in der OpenSim.ini-Datei erhöhen, um die Anzahl der gleichzeitigen Verbindungen zu erhöhen.
  • Überwachen Sie die Protokolle, um die Ursache für Leistungsprobleme zu ermitteln. Verwenden Sie Werkzeuge wie die Simulator-Konsole, um die Belastung durch Skripte, Physik und andere Faktoren zu überwachen.
Personal tools
General
About This Wiki