Sonntag, 14. September 2014

Tipp: Begrenzen der FPS reduziert Lüftergeräusche im PC

Heute habe ich einen Tipp für alle Second Life Nutzer mit einem leistungsstarken PC bzw. einer leistungsstarken Grafikkarte. Da ich nur mit Windows unterwegs bin, bezieht sich mein Tipp auch nur auf dieses Betriebssystem. Ich denke aber, Mac- und Linux-Nutzer werden das entsprechend auch auf ihren Systemen anwenden können.

Ich selbst nutze mit einem Intel Core i7 Prozessor, einer Nvidia Geforce GTX 670 Grafikkarte und 12 GB DDR3 SDRAM einen recht ordentlichen PC für Second Life. Wenn ich nun inworld unterwegs bin, habe ich auf durchschnittlich bebauten Regionen und normaler Skriptlast zwischen 60 und 110 FPS (Frames per Second = Bildwiederholungen pro Sekunde). Mir scheint es so, dass der SL Viewer immer versucht, die maximal mögliche Anzahl an FPS vom PC abzurufen. Dabei wird dann sowohl die Grafikkarte als auch die CPU gut ausgelastet und das Ergebnis (zumindest bei mir) ist ein ständig hörbares Lüftergeräusch. Ist ja auch klar: Wenn von der Hardware immer die bestmögliche Leistung abgrufen wird, dann werden die betroffenen Teile sehr warm und müssen gekühlt werden.

Mir ging jedenfalls in letzter Zeit dieses Lüftergeräusch ziemlich auf den Senkel. Für einen ruckelfreien Bildaufbau und für einen flüssigen Ablauf von Animationen in Second Life, sind eigentlich nur 25 bis 30 FPS notwendig. Also habe ich mal etwas zum Thema "FPS-Begrenzung im SL Viewer" gegoogelt. In Foren und Blogs gibt es die weitverbreitete Annahme, dass die Debug Setting "MaxFPS" die Anzahl der Bildwiederholungen regelt. Das funktioniert jedoch für die meisten SL Viewer nicht. Eine Ausnahme bildet der Firestorm Viewer, wo das von hauseigenen Entwicklern offenbar behoben wurde. Bei Linden Lab wurde der gleiche Fehler zwar schon vor neun Monaten in der JIRA aufgenommen, aber passiert ist bis heute nichts.

Nun habe ich jedoch im Web eine ganz andere Möglichkeit gefunden, dieses Problem zu lösen. Und das funktioniert offenbar bei allen Viewern. Zumindest habe ich das bei vier unterschiedlichen Viewern angewendet und alle laufen nun genau so, wie ich mir das vorstelle.

Und zwar gibt es in den Eigenschaften der Viewer-Icons auf dem Desktop eine Parameterzeile, in die man auch verschiedene Optionen eintragen kann, die dann vom Viewer beachtet werden. Bei den Windows 7 Icons heißt diese Parameterzeile "Ziel". Im Allgemeinen steht dort der Pfad zur ausführbaren .exe-Datei des Viewers. Beim offiziellen SL Viewer steht dann dahinter noch die Installationssprache, wenn man eine andere als Englisch verwendet. Dort lassen sich noch beliebige andere Parameter eintragen. Jedem Parameter vorangestellt ist ein doppeltes Minuszeichen.

Eine Übersicht der möglichen Parameter gibt es hier in der SL Wiki:
>> Parameter reference

Auf der oben erwähnten Tweak-Seite zur Begrenzung der Viewer-FPS heißt es, man soll den Parameter "--cooperative" verwenden (ohne Anführungszeichen), gefolgt von der Anzahl der Millisekunden, die der Viewer vor jeder Bildwiederholung warten soll. Dazu wird auch gleich eine kleine Tabelle geliefert, die ich hier in leicht geänderter Form mal übernehme. Die Änderung bezieht sich auf die Nachkommastellen, die aktuell beim Start des Viewers nicht akzeptiert werden. Deshalb habe ich sie auf- oder abgerundet.

Tabelle für FPS-Begrenzungen:

Gewünschte FPSMillisekunden
10 FPS100 ms
20 FPS50 ms
24 FPS42 ms
30 FPS33 ms
40 FPS25 ms
50 FPS20 ms
60 FPS17 ms

Zwischenstufen lassen sich nach dieser Formel ermitteln:
1 / FPS * 1000 = ms

Beispiel: Wenn man in seinem Viewer gerne eine Begrenzung auf 30 FPS hätte, dann gibt man in den Eigenschaften des Viewer-Icons den Parameter "--cooperative 33" ein.

Hier zwei Bilder wie das aussieht. Links der SL Viewer, rechts der Black Dragon. Den neuen Parameter habe ich rot unterstrichen:

 

Bei meinen Tests lagen die FPS im Viewer dann immer etwas niedriger als in der Tabelle angegeben. Das kann an der Kombination aus CPU und GPU liegen, oder eine ganz andere Ursache haben. Jedenfalls wollte ich, dass mein Viewer sich im Bereich zwischen 25 bis 30 FPS bewegt und ich habe einfach den Wert für die Millisekunden immer weiter angepasst, bis es hingehauen hat. Letztendlich kam ich bei meinem System dann genau auf 25 ms, was laut Tabelle eigentlich für 40 FPS geeignet sein sollte.

Mit 26 FPS gibt es in SL keine Ruckeln
Aber das ist mir sowas von egal, denn mit dieser Begrenzung ist mein PC bei SL-Nutzung so leise, wie das früher mal mit dem Viewer 1.23 und vor Einführung von Windlight und Schatten der Fall gewesen war. Das ist wirklich unglaublich, wie ruhig der Rechner jetzt läuft. Es gibt zwar kurze Phasen nach einem Teleport auf eine neue Region, oder wenn ich extrem viele Flexi-Prims und Alpha-Texturen im sichtbaren Bereich habe, bei denen der Lüfter wieder zu hören ist. Aber die überwiegende Zeit höre ich ihn nicht mehr.

Wie gesagt: Der Tipp ist sicher nicht für jeden hilfreich. Wer sowieso schon immer nur 10 bis 15 FPS mit einem etwas schwächeren Rechner erreicht, sollte das nicht probieren. Bei jedem, der aber mehr als 60 FPS erreicht, bringt diese Begrenzung nicht nur einen ruhigeren PC, sondern man spart auch über die Monate einiges an Strom, weil CPU und GPU nicht so viel Leistung erbringen müssen.

8 Kommentare:

  1. Ich sollte mal ganz unverschämt das "Full Performance" profile das Second Life im code erzwingt bei NVidia Grafikkarten rausnehmen, mal sehen ob sich was ändert.

    Ich wär allerdings erstmal froh 60 FPS zu haben. Die hab ich nur in einer fast leeren SIM.

    AntwortenLöschen
    Antworten
    1. Ich denke, alles über 60 FPS macht bei LCD oder LED Monitoren auch aus dem Grund keinen Sinn, weil die bei 60 Hz gar nicht mehr Bilder pro Sekunde anzeigen können. Aus diesem Grund ist ein "Full Performance Profile" wirklich etwas dämlich. Gibt es sowas wirklich im SL Viewercode?

      Vielleicht solltest du dieses Thema mal auf einer der TPV-Meetings erwähnen. Ich habe schon von Leuten gehört, die sich fast nur oberhalb der 100 FPS in SL bewegen (z.B. mit einer GTX 770). Eigentlich könnten alle SL Viewer bei 60 FPS automatisch abriegeln.

      Löschen
    2. Ja, das Full Performance Profile hat Linden vor etwas längerer Zeit eingeführt weil einige Grafikkarten rumgespackt haben wenn sie nicht auf Full Performance erzwungen worden sind.

      Könnte man eigentlich entfernen, bin mir aber nicht so sicher ob die auf dem Meeting mir bei diesem Thema überhaupt zuhören würden. Alles was ich bisher auf diesen Meetings versucht habe anzusprechen wurde sofort von entweder Jessica oder Oz (wegen Jessica's Nörgelei in diesem Thema weil sich öfters auch schon andere TPV's beschwert haben) abgeblockt, worauf hin mich dann meist die Firestorm Fanboys die da auf den Meetings so ziemlich immer dabei sind, versucht haben als einen Idioten dahin zu stellen, seitdem gehe ich nicht mehr zu diesen Meetings, sie sind reine Zeitverschwendung bei denen nichts gescheites rumkommt.

      Es läuft dort immer wenn ich da war nach dem selben Prinzip ab:
      Es gibt ein Problem, das Problem wird besprochen und raus kommt am ende das entweder Linden sagt: "Das ist nicht unser Problem" oder Jessica reinredet und sagt: "Aber das können wir nicht tun die User sind unterbelichtet, die würden das nie verstehen!" oder wenn es etwas ist das von Linden kommt: "Oz, wir brauchen noch etwas mehr Zeit", es fehlt manchmal wirklich nur das "weil... wir sind zu inkompetent oder zu faul mit einem ganzen Team von Entwicklern etwas zu schaffen."

      Grauenhaft. Grauenhafte Zeitverschwendung.

      Deshalb lese ich alles entweder bei Nalates Blog, Modemworld oder eben hier nach weil dann wenigstens etwas informatives bei rumkommt.

      Löschen
  2. Klasse Tipp, benutze Firestorm und der hat bei meinem System vorher auf über 80 FPS hochgedreht. Musste allerdings den Wert 17 eingeben um dann auf auf 30 FPS zu kommen, selbst deine 25 lagen bei mir deutlich drunter. Der Lüfter war anschliessend deutlich leiser.

    AntwortenLöschen
  3. wenn du das mit dem Parameter machst hat es einen nachteil, du must ja immer neu starten um das zu testen
    meines wissen kanst du das auch und den debug settings einstellen
    und zwar wenn du die yieldtime änderst
    default ist -1
    ich hab das bei mir mal von -1 auf 18 gestelt und da ist die FPS von knappen 100 auf 25 gefallen

    und du must vorallem nicht immer neu starten sonder das wirkt sich sofort ohne neustart des viewers aus

    nen versuch isses wert

    LG
    Kerstin (S.Randt)

    AntwortenLöschen
    Antworten
    1. Hallo Kerstin,
      ich habe es eben mal versucht. Beim offiziellen SL Viewer von Linden Lab passiert gar nix, wenn ich den Wert bei "YieldTime" ändere. Egal was ich dort eingebe, die FPS bleiben immer gleich. Das gilt ebenfalls für die Debug Setting "MaxFPS".

      Wenn du den Firestorm Viewer benutzt, kann es durchaus sein, dass es geht. Das hatte ich oben ja auch so geschrieben.

      Und dass man mit der Parameter-Methode neu starten muss, stimmt schon. Aber jetzt weiß ich den Wert, der bei mir passt und ich kann ihn jetzt nach jeder sauberen Neuinstallation immer sofort eintragen, ohne rumzuprobieren.

      Löschen
    2. ja wenn man die einstellung dann mal hat muss man nicht mehr immer neu starten

      den Sl viewer hab ich vor längerer zeit genutzt, da hatte es noch geklappt
      derzeit nutz ich den FS

      aber dein Tipp ist natürlich klasse weil er ja viewerunabhängig ist

      lg
      kerstin

      Löschen
  4. Etwas spät, aber: Es gibt (zumindest in Firestorm) einpaar Debug settings, die den Zweck auch gut unterstützen. "BackgroundYieldTime" und "YieldTime" geben eine Leerlaufzeit nach jedem Frame an.

    Mit "BackgroundYieldTime = 400", kann man dafür sorgen, dass SL im Hintergrund kaum Rechenleistung abzweigt, sodass man es besser parallel laufen lassen kann, während man etwas anders macht.

    Mit "YieldTime" kann man erzwingen, dass selbst leistungshungrige Sims nie die Leistung voll auslasten, was den Lüfter massiv leiser macht. Dies ist insbesondere dann sinnvoll, wenn man keine hohen FPS erreicht, und trotzdem bereit ist, ein bisschen Leistung für einen leiseren Lüfter zu opfern.

    AntwortenLöschen