Customable players per io thread
This commit is contained in:
@@ -157,4 +157,9 @@ public class AkarinGlobalConfig {
|
||||
private static void registryTerminationSeconds() {
|
||||
registryTerminationSeconds = getSeconds(getString("bootstrap.parallel-registry-termination", "9s"));
|
||||
}
|
||||
|
||||
public static int playersPerIOThread;
|
||||
private static void playersPerIOThread() {
|
||||
playersPerIOThread = getInt("chunk.players-per-chunk-io-thread", 50);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package io.akarin.server.mixin.core;
|
||||
|
||||
import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
|
||||
import org.bukkit.craftbukkit.util.AsynchronousExecutor;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import io.akarin.server.core.AkarinGlobalConfig;
|
||||
import net.minecraft.server.Chunk;
|
||||
|
||||
@Mixin(value = ChunkIOExecutor.class, remap = false)
|
||||
public class MixinChunkIOExecutor {
|
||||
@Shadow @Final static int BASE_THREADS;
|
||||
@Shadow @Mutable @Final static int PLAYERS_PER_THREAD;
|
||||
@Shadow @Final private static AsynchronousExecutor<?, Chunk, Runnable, RuntimeException> instance;
|
||||
|
||||
@Overwrite
|
||||
public static void adjustPoolSize(int players) {
|
||||
int size = Math.max(BASE_THREADS, (int) Math.ceil(players / (PLAYERS_PER_THREAD = AkarinGlobalConfig.playersPerIOThread)));
|
||||
instance.setActiveThreads(size);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import java.util.function.Supplier;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
|
||||
import net.minecraft.server.MCUtil;
|
||||
|
||||
@Mixin(value = MCUtil.class, remap = false)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
"MixinTimingHandler",
|
||||
"MixinVersionCommand",
|
||||
"MixinMinecraftServer",
|
||||
"MixinChunkIOExecutor",
|
||||
"MixinTileEntityEnchantTable"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user