Naos: Serialization-free RDMA networking in Java

Konstantin Taranov, Rodrigo Bruno, Gustavo Alonso, Torsten Hoefler
2021 USENIX Annual Technical Conference  
Managed languages such as Java and Scala do not allow developers to directly access heap objects. As a result, to send on-heap data over the network, it has to be explicitly converted to byte streams before sending and converted back to objects after receiving. The technique, also known as object serialization/deserialization, is an expensive procedure limiting the performance of JVM-based distributed systems as it induces additional memory copies and requires data transformation resulting in
more » ... gh CPU and memory bandwidth consumption. This paper presents Naos, a JVM-based technique bypassing heap serialization boundaries that allows objects to be directly sent from a local heap to a remote one with minimal CPU involvement and over RDMA networks. As Naos eliminates the need to copy and transform objects, and enables asynchronous communication, it offers significant speedups compared to state-of-the-art serialization libraries. Naos exposes a simple high level API hiding the complexity of the RDMA protocol that transparently allows JVM-based systems to take advantage of offloaded RDMA networking. Receiver with Kryo 1: buffer = ByteBuffer.allocate(512); 2: connection.read(buffer); 3: kryo = new Kryo(); 4: kryo.register(Person.class); 5: in = new Input(buffer); 6: obj = kryo.readObject(in,Person.class); 7: person = (Person)obj; Receiver with Naos 1: object = connection.readObject(); 2: person = (Person)object; * Modern RNICs support implicit on-demand paging (ODP) [17] that removes the need to register buffers. In our preliminary experiments, however, ODP performed worse than conventional explicit memory registration.
dblp:conf/usenix/TaranovBAH21 fatcat:secfvpwmizgife4vmhi7iaieme