From 71a4219ab63ee35344155549388e8b92a7fca5b5 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Tue, 7 Mar 2023 12:51:23 -0800 Subject: [PATCH] Make sure /tps includes global region in total util percent While we expect the util from the global region to be around 0.0, it doesn't mean it always will be. So, include it. --- patches/server/0004-Threaded-Regions.patch | 14 ++++++++------ regiontodo.txt | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/patches/server/0004-Threaded-Regions.patch b/patches/server/0004-Threaded-Regions.patch index ba78d03..5d449af 100644 --- a/patches/server/0004-Threaded-Regions.patch +++ b/patches/server/0004-Threaded-Regions.patch @@ -8600,12 +8600,13 @@ index 0000000000000000000000000000000000000000..390bda127be9be5349c1c442ca01df6b +} diff --git a/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java b/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java new file mode 100644 -index 0000000000000000000000000000000000000000..4889ebf6e3eb5901eeac49900c541d2359d71316 +index 0000000000000000000000000000000000000000..85348ddd7568ea68bfdb5092ded14886359c0c01 --- /dev/null +++ b/src/main/java/io/papermc/paper/threadedregions/commands/CommandServerHealth.java -@@ -0,0 +1,330 @@ +@@ -0,0 +1,332 @@ +package io.papermc.paper.threadedregions.commands; + ++import io.papermc.paper.threadedregions.RegionisedServer; +import io.papermc.paper.threadedregions.ThreadedRegioniser; +import io.papermc.paper.threadedregions.TickData; +import io.papermc.paper.threadedregions.TickRegionScheduler; @@ -8740,19 +8741,18 @@ index 0000000000000000000000000000000000000000..4889ebf6e3eb5901eeac49900c541d23 + world.regioniser.computeForAllRegions(regions::add); + } + -+ final long currTime = System.nanoTime(); -+ + final double minTps; + final double medianTps; + final double maxTps; -+ long totalTime = 0; + double totalUtil = 0.0; + + final DoubleArrayList tpsByRegion = new DoubleArrayList(); + final List reportsByRegion = new ArrayList<>(); -+ + final int maxThreadCount = TickRegions.getScheduler().getTotalThreadCount(); + ++ final long currTime = System.nanoTime(); ++ final TickData.TickReportData globalTickReport = RegionisedServer.getGlobalTickData().getTickReport15s(currTime); ++ + for (final ThreadedRegioniser.ThreadedRegion region : regions) { + final TickData.TickReportData report = region.getData().getRegionSchedulingHandle().getTickReport15s(currTime); + tpsByRegion.add(report == null ? 20.0 : report.tpsData().segmentAll().average()); @@ -8760,6 +8760,8 @@ index 0000000000000000000000000000000000000000..4889ebf6e3eb5901eeac49900c541d23 + totalUtil += (report == null ? 0.0 : report.utilisation()); + } + ++ totalUtil += globalTickReport.utilisation(); ++ + tpsByRegion.sort(null); + if (!tpsByRegion.isEmpty()) { + minTps = tpsByRegion.getDouble(0); diff --git a/regiontodo.txt b/regiontodo.txt index f5b7579..ca48e88 100644 --- a/regiontodo.txt +++ b/regiontodo.txt @@ -1,6 +1,7 @@ Get done before testing: - Mob#getTarget? - regioniser->regionaliser +- make plugin add ticket mt-safe Pre-Test: List of things not fully tested - Task queue