From 6dd4629fcd4f59dddf0b5bb7e787b026a73bfd10 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Wed, 8 Sep 2021 13:59:32 -0400 Subject: [PATCH] Utilize multiple threads for Bedrock networking if possible --- .../java/org/geysermc/connector/GeyserConnector.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java index 234a3b1ca..0c9217147 100644 --- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java +++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java @@ -34,6 +34,8 @@ import com.nukkitx.network.util.EventLoops; import com.nukkitx.protocol.bedrock.BedrockServer; import io.netty.channel.epoll.Epoll; import io.netty.channel.kqueue.KQueue; +import io.netty.util.NettyRuntime; +import io.netty.util.internal.SystemPropertyUtil; import lombok.Getter; import lombok.Setter; import org.geysermc.common.PlatformType; @@ -233,10 +235,16 @@ public class GeyserConnector { RakNetConstants.MAXIMUM_MTU_SIZE = (short) config.getMtu(); logger.debug("Setting MTU to " + config.getMtu()); + Integer bedrockThreadCount = Integer.getInteger("Geyser.BedrockNetworkThreads"); + if (bedrockThreadCount == null) { + // Copy the code from Netty's default thread count fallback + bedrockThreadCount = Math.max(1, SystemPropertyUtil.getInt("io.netty.eventLoopThreads", NettyRuntime.availableProcessors() * 2)); + } + boolean enableProxyProtocol = config.getBedrock().isEnableProxyProtocol(); bedrockServer = new BedrockServer( new InetSocketAddress(config.getBedrock().getAddress(), config.getBedrock().getPort()), - 1, + bedrockThreadCount, EventLoops.commonGroup(), enableProxyProtocol );