Add TPSWatcher #62
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/SpigotCore#62
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "TPS" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
Wofür? Spigot sammelt diese Information schon selbst. Siehe Scoreboard vom BauSystem.
Spigot sammelt zwar diese Informationen, jedoch sind diese für die letzte Minute etwas unakurat um zu wissen, ob der server gerade jetzt ein TPS problem hat. Als Beispiel dafür:
Geplante Anwendungsfälle?
Ich würde diesen TPS Watcher verwenden, damit ich eine genauere TPS Zahl im Scoreboard angeben kann, und vllt den '/tps' befehl dann dahingegend überarbeiten, dass dieser mehr werte angibt (Alle von Spigot, plus die eigenen, für kürzere Zeitabstände).
@ -0,0 +26,4 @@
public class TPSWatcher {
private LinkedList<Double> meter = new LinkedList<>();
Da wir weder die statistische Abweichung messen noch die Werte irgendwo hier speichern, ist meiner Meinung nach jegliche Liste hier verkehrt. Es reicht, wenn sich der 10s-Durchschnitt alle 10s aktualisiert und der 1s-Durchschnitt sich sekündlich aktualisiert, da muss nicht jeder Tick da sein => Keine Listen nötig. Ich möchte eine Implementierung ohne jegliche Listen.
Warum können wir nicht auch die 10s immer passend die letzten 10 Sekunden anzeigt und nicht nach 10 Sekunden dann mal wieder die letzten 10 Sekunden, dass finde ich auch nicht so sinnvoll. Ich überlege mal ob ich das anders machen kann
Weil wir dann 10 Werte cachen müssen. Deshalb. Ist wesentlich aufwändiger und aufwändiger zu warten für einen wesentlich geringeren Vorteil
@ -0,0 +59,4 @@
private static final double tickTimeDefault = 1000 / 20.0;
private static final double tickDefault = 20.0;
TPSWatcher() {
Ich hätte gernde die Funktionalität als Static-Funktionalität, da wir sowieso nie mehr als einen TPSWatcher benötigen werden und der Aufruf für den Erhalt von TPS Werten kürzer wird.
@ -0,0 +62,4 @@
TPSWatcher() {
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
long tickTime = System.currentTimeMillis() - lastTime;
lastTime = System.currentTimeMillis();
Das hier, nur das hier einfach alle 1s bzw. alle 10s ausführen, und du hast deine DurchschnittsTPS für die letzte 1s/10s.
Kann ich es einfach jede Sekunde machen, und dann 10 werte merken für 10 Sekunden? Das ganze könnte ich in einem fixen array speichern und auswerten
@ -0,0 +75,4 @@
public enum TpsAverage {
LAST_SECOND(1),
LAST_TEN_SECONDS(10),
LAST_THIRTY_SECONDS(30);
30s erscheint mir unnötig.
Ok dann werde ich diesen Wert rausstreichen
@ -0,0 +86,4 @@
}
public double getTPS(TpsAverage average) {
return average(average.count);
Ich würde gerne mit dieser Methode wenn dann ALLE verfügbaren TPS-Werte bekommen wollen, auch die von Spigot gemessenen.
Ok also willst du das dann als array oder liste?
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Licence fehlt
@ -0,0 +41,4 @@
if (tickTime != 0) {
now = (timeInterval / (double) tickTime) * tickDefault;
}
if (now < 0) {
Wann wird now < 0?
@ -0,0 +99,4 @@
}
private double round(double d) {
return Math.round(d * 10) / 10.0;
Bitte noch auf maximal 20 TPS limiten, das verwirrt ansonsten die Leute immer total
Schaut jetzt gut aus.
Achja, das Problem, dass über 20 TPS auftauchen können, ist immer noch da.