mirror of
https://github.com/PaperMC/Folia.git
synced 2024-11-19 11:35:18 +01:00
749480c7ec
Before, it returned the center chunk section. Also, now instead of approximating the center chunk from the allocated sections, actually retrieve all chunks inside the region directly.
87 lines
4.7 KiB
Diff
87 lines
4.7 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/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java
|
|
index 300700477ee34bc22b31315825c0e40f61070cd5..0b78d1eb90500e0123b7281d722805dc65d551d0 100644
|
|
--- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java
|
|
+++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java
|
|
@@ -22,6 +22,9 @@ public final class ChunkFullTask extends ChunkProgressionTask implements Runnabl
|
|
protected final ChunkAccess fromChunk;
|
|
protected 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);
|
|
@@ -35,6 +38,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 protoChunkToFullChunk for what this function should be doing
|
|
@@ -49,6 +66,17 @@ public final class ChunkFullTask extends ChunkProgressionTask implements Runnabl
|
|
this.world.getPoiManager().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 1fc6814f48596169db00fdee480f5059abeb23db..dfab3a36810545933c295a225ef48e6f4793418a 100644
|
|
--- a/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java
|
|
+++ b/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java
|
|
@@ -148,6 +148,9 @@ public final class CommandServerHealth extends Command {
|
|
totalUtil += (report == null ? 0.0 : report.utilisation());
|
|
}
|
|
|
|
+ final double genRate = io.papermc.paper.chunk.system.scheduling.ChunkFullTask.genRate(currTime);
|
|
+ final double loadRate = io.papermc.paper.chunk.system.scheduling.ChunkFullTask.loadRate(currTime);
|
|
+
|
|
totalUtil += globalTickReport.utilisation();
|
|
|
|
tpsByRegion.sort(null);
|
|
@@ -259,6 +262,12 @@ public final class CommandServerHealth extends Command {
|
|
.append(Component.text(ONE_DECIMAL_PLACES.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.format(loadRate) + ", ", INFORMATION))
|
|
+ .append(Component.text("Gen rate: ", PRIMARY))
|
|
+ .append(Component.text(TWO_DECIMAL_PLACES.format(genRate) + "\n", INFORMATION))
|
|
+
|
|
.append(Component.text(" - ", LIST, TextDecoration.BOLD))
|
|
.append(Component.text("Lowest Region TPS: ", PRIMARY))
|
|
.append(Component.text(TWO_DECIMAL_PLACES.format(minTps) + "\n", CommandUtil.getColourForTPS(minTps)))
|