geforkt von Mirrors/Paper
Merge pull request 'IO_Uring support' (#12) from io_uring into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #12
Dieser Commit ist enthalten in:
Commit
32ff11c890
55
patches/server/1010-IO_Uring-support.patch
Normale Datei
55
patches/server/1010-IO_Uring-support.patch
Normale Datei
@ -0,0 +1,55 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Lixfel <agga-games@gmx.de>
|
||||
Date: Wed, 13 Mar 2024 18:23:22 +0100
|
||||
Subject: [PATCH] IO_Uring support
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index fb98936bb8a5488db75d676c5bcb4060597fbbf8..2e803f7231b66323373c16e0cbf70e2405b1ed59 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -31,6 +31,7 @@ dependencies {
|
||||
runtimeOnly(log4jPlugins.output)
|
||||
alsoShade(log4jPlugins.output)
|
||||
implementation("io.netty:netty-codec-haproxy:4.1.87.Final") // Paper - Add support for proxy protocol
|
||||
+ implementation("io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.24.Final:linux-x86_64")
|
||||
// Paper end
|
||||
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
||||
implementation("org.ow2.asm:asm:9.4")
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
||||
index 44d99e89226adb6234b9405f25ac9dab9bd84297..6674e461e9668449686369d1e535ed372bd9240b 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
||||
@@ -23,6 +23,9 @@ import io.netty.channel.nio.NioEventLoopGroup;
|
||||
import io.netty.channel.socket.ServerSocketChannel;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||
import io.netty.handler.timeout.ReadTimeoutHandler;
|
||||
+import io.netty.incubator.channel.uring.IOUring;
|
||||
+import io.netty.incubator.channel.uring.IOUringEventLoopGroup;
|
||||
+import io.netty.incubator.channel.uring.IOUringServerSocketChannel;
|
||||
import io.netty.util.HashedWheelTimer;
|
||||
import io.netty.util.Timeout;
|
||||
import io.netty.util.Timer;
|
||||
@@ -56,6 +59,9 @@ public class ServerConnectionListener {
|
||||
public static final LazyLoadedValue<EpollEventLoopGroup> SERVER_EPOLL_EVENT_GROUP = new LazyLoadedValue<>(() -> {
|
||||
return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()); // Paper
|
||||
});
|
||||
+ public static final LazyLoadedValue<IOUringEventLoopGroup> SERVER_IOURING_EVENT_GROUP = new LazyLoadedValue<>(() -> {
|
||||
+ return new IOUringEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()); // Paper
|
||||
+ });
|
||||
final MinecraftServer server;
|
||||
public volatile boolean running;
|
||||
private final List<ChannelFuture> channels = Collections.synchronizedList(Lists.newArrayList());
|
||||
@@ -89,7 +95,11 @@ public class ServerConnectionListener {
|
||||
Class oclass;
|
||||
LazyLoadedValue lazyinitvar;
|
||||
|
||||
- if (Epoll.isAvailable() && this.server.isEpollEnabled()) {
|
||||
+ if (IOUring.isAvailable() && this.server.isEpollEnabled()) {
|
||||
+ oclass = IOUringServerSocketChannel.class;
|
||||
+ lazyinitvar = ServerConnectionListener.SERVER_IOURING_EVENT_GROUP;
|
||||
+ ServerConnectionListener.LOGGER.info("Using io_uring channel type");
|
||||
+ } else if (Epoll.isAvailable() && this.server.isEpollEnabled()) {
|
||||
if (address instanceof io.netty.channel.unix.DomainSocketAddress) {
|
||||
oclass = io.netty.channel.epoll.EpollServerDomainSocketChannel.class;
|
||||
} else {
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren