  Many big-data frameworks are written in Java, e.g. Apache Spark, Flink and
Cassandra. These systems use the networking framework netty which is based on
Java NIO. While this allows for fast networking on traditional Ethernet
networks, it cannot fully exploit the whole performance of modern
interconnects, like InfiniBand, providing bandwidths of 100 Gbit/s and more. In
this paper we propose netty support for hadroNIO, a Java library, providing
transparent InfiniBand support for Java applications based on NIO. hadroNIO is
based on UCX, which supports several interconnects, including InfiniBand. We
present hadroNIO extensions and optimizations for supporting netty. The
evaluations with microbenchmarks, covering single- and multi-threaded
scenarios, show that it is possible for netty applications to reach round-trip
times as low as 5 us and fully utilize the 100 Gbit/s bandwidth of high-speed
NICs, without changing the application's source code. We also compare hadroNIO
with traditional sockets, as well as libvma and the results show, that hadroNIO
offers a substantial improvement over plain sockets and can outperform libvma
in several scenarios.
