12
0

Add TPSWatcher #62

Manuell gemergt
Lixfel hat 9 Commits von TPS nach master 2020-11-07 11:06:32 +01:00 zusammengeführt
Besitzer
Keine Beschreibung angegeben.
Lixfel hat 2020-09-27 16:31:47 +02:00 Änderungen angefragt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Wofür? Spigot sammelt diese Information schon selbst. Siehe Scoreboard vom BauSystem.

Wofür? Spigot sammelt diese Information schon selbst. Siehe Scoreboard vom BauSystem.
Autor
Besitzer

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:

  • Wir gehen davon aus, dass wir eine TPS anzahl von 2 haben
  • Wir gucken uns das Scoreboard an
  • Wir sehen die nächsten 10 Minuten eine TPS von 20, oder zumindest höher 2
  • Wenn wir nun die TPS von dem letzten messen nehmen würden, würde das Scoreboard nach 10 Sekunden die genauere TPS anzahl anzeigen. Womit der spieler genauer weiß wie sehr der Server gerade laggt. Außerdem ist es für uns als Developer schöner, dass wenn wir neue Systeme testen wollen eine schnellere Tendenz sehen, wie schlecht die TPS wirklich sind.
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: * Wir gehen davon aus, dass wir eine TPS anzahl von 2 haben * Wir gucken uns das Scoreboard an * Wir sehen die nächsten 10 Minuten eine TPS von 20, oder zumindest höher 2 * Wenn wir nun die TPS von dem letzten messen nehmen würden, würde das Scoreboard nach 10 Sekunden die genauere TPS anzahl anzeigen. Womit der spieler genauer weiß wie sehr der Server gerade laggt. Außerdem ist es für uns als Developer schöner, dass wenn wir neue Systeme testen wollen eine schnellere Tendenz sehen, wie schlecht die TPS wirklich sind.
Lixfel hat 2020-09-27 20:08:13 +02:00 überprüft
Lixfel hat einen Kommentar hinterlassen
Besitzer

Geplante Anwendungsfälle?

Geplante Anwendungsfälle?
Autor
Besitzer

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).

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).
Lixfel hat 2020-10-04 10:54:10 +02:00 Änderungen angefragt
@ -0,0 +26,4 @@
public class TPSWatcher {
private LinkedList<Double> meter = new LinkedList<>();
Besitzer

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.

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.
Autor
Besitzer

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

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
Besitzer

Weil wir dann 10 Werte cachen müssen. Deshalb. Ist wesentlich aufwändiger und aufwändiger zu warten für einen wesentlich geringeren Vorteil

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() {
Besitzer

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.

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();
Besitzer

Das hier, nur das hier einfach alle 1s bzw. alle 10s ausführen, und du hast deine DurchschnittsTPS für die letzte 1s/10s.

Das hier, nur das hier einfach alle 1s bzw. alle 10s ausführen, und du hast deine DurchschnittsTPS für die letzte 1s/10s.
Autor
Besitzer

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

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);
Besitzer

30s erscheint mir unnötig.

30s erscheint mir unnötig.
Autor
Besitzer

Ok dann werde ich diesen Wert rausstreichen

Ok dann werde ich diesen Wert rausstreichen
@ -0,0 +86,4 @@
}
public double getTPS(TpsAverage average) {
return average(average.count);
Besitzer

Ich würde gerne mit dieser Methode wenn dann ALLE verfügbaren TPS-Werte bekommen wollen, auch die von Spigot gemessenen.

Ich würde gerne mit dieser Methode wenn dann ALLE verfügbaren TPS-Werte bekommen wollen, auch die von Spigot gemessenen.
Autor
Besitzer

Ok also willst du das dann als array oder liste?

Ok also willst du das dann als array oder liste?
Lixfel hat 2020-10-10 20:38:20 +02:00 Änderungen angefragt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +1,13 @@
package de.steamwar.core;
Besitzer

Licence fehlt

Licence fehlt
@ -0,0 +41,4 @@
if (tickTime != 0) {
now = (timeInterval / (double) tickTime) * tickDefault;
}
if (now < 0) {
Besitzer

Wann wird now < 0?

Wann wird now < 0?
@ -0,0 +99,4 @@
}
private double round(double d) {
return Math.round(d * 10) / 10.0;
Besitzer

Bitte noch auf maximal 20 TPS limiten, das verwirrt ansonsten die Leute immer total

Bitte noch auf maximal 20 TPS limiten, das verwirrt ansonsten die Leute immer total
Lixfel hat die Änderungen 2020-10-27 15:32:04 +01:00 genehmigt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Schaut jetzt gut aus.

Schaut jetzt gut aus.
Lixfel hat 2020-10-27 15:39:21 +01:00 Änderungen angefragt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Achja, das Problem, dass über 20 TPS auftauchen können, ist immer noch da.

Achja, das Problem, dass über 20 TPS auftauchen können, ist immer noch da.
Lixfel hat die Änderungen 2020-11-07 11:06:26 +01:00 genehmigt
Lixfel hat diesen Pull-Request 2020-11-07 11:06:32 +01:00 geschlossen
Lixfel löschte die Branch TPS 2020-11-07 11:06:59 +01:00
Anmelden, um an der Diskussion teilzunehmen.
Keine Beschreibung angegeben.