mirror of
https://github.com/PaperMC/Folia.git
synced 2024-12-02 13:43:31 +01:00
388cdacd1b
Most significant changes are to portal/teleport logic, there may be some bugs there. Not really concerned about the passenger teleport, as Folia had already added support for that. Not sure how the spark changes are going to work.
87 lines
4.9 KiB
Diff
87 lines
4.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Fri, 10 Mar 2023 00:16:26 -0800
|
|
Subject: [PATCH] Add chunk system throughput counters to /tps
|
|
|
|
|
|
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java
|
|
index fbdf721e8b4cfe6cef4ee60c53c680cbfc858d88..8581b8771b8cc89ff7bdb63fbfd5628a1e7d4762 100644
|
|
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java
|
|
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java
|
|
@@ -28,6 +28,9 @@ public final class ChunkFullTask extends ChunkProgressionTask implements Runnabl
|
|
private final ChunkAccess fromChunk;
|
|
private final PrioritisedExecutor.PrioritisedTask convertToFullTask;
|
|
|
|
+ public static final io.papermc.paper.util.IntervalledCounter chunkLoads = new io.papermc.paper.util.IntervalledCounter(java.util.concurrent.TimeUnit.SECONDS.toNanos(15L));
|
|
+ public static final io.papermc.paper.util.IntervalledCounter chunkGenerates = new io.papermc.paper.util.IntervalledCounter(java.util.concurrent.TimeUnit.SECONDS.toNanos(15L));
|
|
+
|
|
public ChunkFullTask(final ChunkTaskScheduler scheduler, final ServerLevel world, final int chunkX, final int chunkZ,
|
|
final NewChunkHolder chunkHolder, final ChunkAccess fromChunk, final PrioritisedExecutor.Priority priority) {
|
|
super(scheduler, world, chunkX, chunkZ);
|
|
@@ -41,6 +44,20 @@ public final class ChunkFullTask extends ChunkProgressionTask implements Runnabl
|
|
return ChunkStatus.FULL;
|
|
}
|
|
|
|
+ public static double genRate(final long time) {
|
|
+ synchronized (chunkGenerates) {
|
|
+ chunkGenerates.updateCurrentTime(time);
|
|
+ return chunkGenerates.getRate();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public static double loadRate(final long time) {
|
|
+ synchronized (chunkLoads) {
|
|
+ chunkLoads.updateCurrentTime(time);
|
|
+ return chunkLoads.getRate();
|
|
+ }
|
|
+ }
|
|
+
|
|
@Override
|
|
public void run() {
|
|
// See Vanilla ChunkPyramid#LOADING_PYRAMID.FULL for what this function should be doing
|
|
@@ -55,6 +72,17 @@ public final class ChunkFullTask extends ChunkProgressionTask implements Runnabl
|
|
((ChunkSystemPoiManager)this.world.getPoiManager()).moonrise$checkConsistency(this.fromChunk);
|
|
}
|
|
|
|
+ final long time = System.nanoTime();
|
|
+ if (this.fromChunk instanceof ImposterProtoChunk wrappedFull) {
|
|
+ synchronized (chunkLoads) {
|
|
+ chunkLoads.updateAndAdd(1L, time);
|
|
+ }
|
|
+ } else {
|
|
+ synchronized (chunkGenerates) {
|
|
+ chunkGenerates.updateAndAdd(1L, time);
|
|
+ }
|
|
+ }
|
|
+
|
|
if (this.fromChunk instanceof ImposterProtoChunk wrappedFull) {
|
|
chunk = wrappedFull.getWrapped();
|
|
} else {
|
|
diff --git a/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java b/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java
|
|
index 3bcb1dc98c61e025874cc9e008faa722581a530c..012d3a7da7fe483393a0888c823bd2e78f5c3908 100644
|
|
--- a/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java
|
|
+++ b/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java
|
|
@@ -170,6 +170,9 @@ public final class CommandServerHealth extends Command {
|
|
totalUtil += (report == null ? 0.0 : report.utilisation());
|
|
}
|
|
|
|
+ final double genRate = ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task.ChunkFullTask.genRate(currTime);
|
|
+ final double loadRate = ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task.ChunkFullTask.loadRate(currTime);
|
|
+
|
|
totalUtil += globalTickReport.utilisation();
|
|
|
|
tpsByRegion.sort(null);
|
|
@@ -284,6 +287,12 @@ public final class CommandServerHealth extends Command {
|
|
.append(Component.text(ONE_DECIMAL_PLACES.get().format(maxThreadCount * 100.0), INFORMATION))
|
|
.append(Component.text("%\n", PRIMARY))
|
|
|
|
+ .append(Component.text(" - ", LIST, TextDecoration.BOLD))
|
|
+ .append(Component.text("Load rate: ", PRIMARY))
|
|
+ .append(Component.text(TWO_DECIMAL_PLACES.get().format(loadRate) + ", ", INFORMATION))
|
|
+ .append(Component.text("Gen rate: ", PRIMARY))
|
|
+ .append(Component.text(TWO_DECIMAL_PLACES.get().format(genRate) + "\n", INFORMATION))
|
|
+
|
|
.append(Component.text(" - ", LIST, TextDecoration.BOLD))
|
|
.append(Component.text("Lowest Region TPS: ", PRIMARY))
|
|
.append(Component.text(TWO_DECIMAL_PLACES.get().format(minTps) + "\n", CommandUtil.getColourForTPS(minTps)))
|