How to use DMA or RDMA in java?

β€œDMA” here means: Direct memory access, and β€œRDMA”: Remote direct memory access.

I used Java to create an application for transferring stock data, but found that the wait time was longer than I expected. I heard that someone has developed an application like "DMA / RDMA" that has good performance, so I am wondering if I can use "DMA / RDMA" in Java?

If not, what language should I use, and if there are any good libraries to use?

+6
source share
6 answers

RDMA, because I know that this is a property of the network infrastructure (along with the corresponding kernel modules, etc.), and not in the programming language at the application level.

In other words, you will need to get a specialized kit to use RDMA to reduce network latency. The following is an example of a 10GbE network card that supports RDMA:.

+1
source

Java applications are able to process files through nio packages. These mmaped files can be accessed by several programs - I'm afraid this closes the thing for DMA, available in java

+1
source

You have two options (what I know):

  • Java SDP - Deprecated
  • JXIO [1], a high-performance messaging library built on RDMA and supported by Mellanox

[1] https://github.com/accelio/JXIO

+1
source

There is DiSNI , a new library for RDMA programming in Java. DiSNI is an open source version of IBM jVerbs. Here are some performance metrics that illustrate how RDMA with Java compares with sockets in C and Java, as well as with RDMA in C.

+1
source

Java 7 supports SDP on Solaris and Linux (with OpenFabrics.org drivers). Unfortunately, SDP is deprecated in OFEX 2.x. People resort to the JNI wrapper, for example, jVerbs.

0
source

Source: https://habr.com/ru/post/899600/


All Articles