From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Wed, 2 Mar 2016 23:46:57 -0600 Subject: [PATCH] Configurable Chunk IO Thread Base Count diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ public class PaperConfig { return config.getString(path, config.getString(path)); } - private static void timings() { - boolean timings = getBoolean("timings.enabled", true); - boolean verboseTimings = getBoolean("timings.verbose", true); - TimingsManager.privacy = getBoolean("timings.server-name-privacy", false); - TimingsManager.hiddenConfigs = getList("timings.hidden-config-entries", Lists.newArrayList("database", "settings.bungeecord-addresses")); - int timingHistoryInterval = getInt("timings.history-interval", 300); - int timingHistoryLength = getInt("timings.history-length", 3600); - - - Timings.setVerboseTimingsEnabled(verboseTimings); - Timings.setTimingsEnabled(timings); - Timings.setHistoryInterval(timingHistoryInterval * 20); - Timings.setHistoryLength(timingHistoryLength * 20); - - Bukkit.getLogger().log(Level.INFO, "Spigot Timings: " + timings + - " - Verbose: " + verboseTimings + - " - Interval: " + timeSummary(Timings.getHistoryInterval() / 20) + - " - Length: " + timeSummary(Timings.getHistoryLength() / 20)); - } - - protected static String timeSummary(int seconds) { - String time = ""; - if (seconds > 60 * 60) { - time += TimeUnit.SECONDS.toHours(seconds) + "h"; - seconds /= 60; - } - - if (seconds > 0) { - time += TimeUnit.SECONDS.toMinutes(seconds) + "m"; - } - return time; - } - public static boolean useInteractLimiter; private static void useInteractLimiter() { useInteractLimiter = getBoolean("settings.limit-player-interactions", true); @@ -0,0 +0,0 @@ public class PaperConfig { Bukkit.getLogger().log(Level.INFO, "Disabling player interaction limiter, your server may be more vulnerable to malicious users"); } } + + public static int minChunkLoadThreads = 2; + public static void chunkLoadThreads() { + minChunkLoadThreads = Math.min(6, getInt("settings.min-chunk-load-threads", 2)); // Keep people from doing stupid things with max of 6 + } } diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java +++ b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java @@ -0,0 +0,0 @@ package org.bukkit.craftbukkit.chunkio; +import com.destroystokyo.paper.PaperConfig; import net.minecraft.server.Chunk; import net.minecraft.server.ChunkProviderServer; import net.minecraft.server.ChunkRegionLoader; @@ -0,0 +0,0 @@ import net.minecraft.server.World; import org.bukkit.craftbukkit.util.AsynchronousExecutor; public class ChunkIOExecutor { - static final int BASE_THREADS = 1; + static final int BASE_THREADS = PaperConfig.minChunkLoadThreads; // Paper static final int PLAYERS_PER_THREAD = 50; private static final AsynchronousExecutor instance = new AsynchronousExecutor(new ChunkIOProvider(), BASE_THREADS); --