-
Enhancement
-
Resolution: Unresolved
-
P3
-
None
-
None
-
None
-
generic
-
linux
In computing, RDMA (Remote Direct Memory Access) is a direct memory access from the memory of one computer into that of another. This permits high-throughput, low-latency networking, which is especially useful in massively parallel computer clusters [1].
Rsockets (RDMA-sockets) is a protocol over RDMA that supports a socket-level API for applications [2]. In addition, rsockets has been enabled for both TCP sockets and UDP sockets. All the necessary support from Linux kernel has been upstreamed years ago.
We are proposing introducing rsockets support into JDK so that all Java based applications can take advantage of RDMA. Performance-wise, from our preliminary data, we observe up to 35% better write throughput with HDFS (Hadoop Distributed File System, the file system underneath Apache Hadoop, Apache Spark and Apache HBase) when rsockets are used comparing to regular TCP sockets.
The proposed API changes are:
java.nio.channels.ServerSocketChannel
public static ServerSocketChannel openRDMAChannel() throws IOException
java.nio.channels.SocketChannel
public static SocketChannel openRDMAChannel() throws IOException
public static SocketChannel openRDMAChannel(SocketAddress remote) throws IOException
java.nio.channels.spi.SelectorProvider
public abstract SocketChannel openRDMAChannel() throws IOException;
public abstract ServerSocketChannel openRDMAChannel() throws IOException;
We will be submitting a patch for review soon. At the meantime, please let us know your feedback and comments.
[1] https://en.wikipedia.org/wiki/Remote_direct_memory_access
[2] https://linux.die.net/man/7/rsocket
Thank you very much for your help!
Lucy Lu
Rsockets (RDMA-sockets) is a protocol over RDMA that supports a socket-level API for applications [2]. In addition, rsockets has been enabled for both TCP sockets and UDP sockets. All the necessary support from Linux kernel has been upstreamed years ago.
We are proposing introducing rsockets support into JDK so that all Java based applications can take advantage of RDMA. Performance-wise, from our preliminary data, we observe up to 35% better write throughput with HDFS (Hadoop Distributed File System, the file system underneath Apache Hadoop, Apache Spark and Apache HBase) when rsockets are used comparing to regular TCP sockets.
The proposed API changes are:
java.nio.channels.ServerSocketChannel
public static ServerSocketChannel openRDMAChannel() throws IOException
java.nio.channels.SocketChannel
public static SocketChannel openRDMAChannel() throws IOException
public static SocketChannel openRDMAChannel(SocketAddress remote) throws IOException
java.nio.channels.spi.SelectorProvider
public abstract SocketChannel openRDMAChannel() throws IOException;
public abstract ServerSocketChannel openRDMAChannel() throws IOException;
We will be submitting a patch for review soon. At the meantime, please let us know your feedback and comments.
[1] https://en.wikipedia.org/wiki/Remote_direct_memory_access
[2] https://linux.die.net/man/7/rsocket
Thank you very much for your help!
Lucy Lu
- csr for
-
JDK-8205186 RDMA Network Sockets
- Closed
- duplicates
-
JDK-8195161 Adding support for rsockets
- Closed
- is blocked by
-
JDK-8213210 Change ServerSocket(SocketImpl impl) constructor to protected access
- Resolved
- relates to
-
JDK-8203314 Adding support for rsockets
- Closed
-
JDK-8203434 JEP 337: RDMA Network Sockets
- Closed