8

这里的“DMA”是指:直接内存访问,“RDMA”是:远程直接内存访问。

我使用 Java 创建了一个应用程序来传输股票数据,但我发现延迟比我预期的要大。听说有人开发同类型的应用程序使用“DMA/RDMA”,性能不错,不知道能不能在Java中使用“DMA/RDMA”?

如果没有,我应该使用什么语言,是否有任何好的库可以使用?

4

6 回答 6

6

IBM 开发人员的这篇文章很好地概述了如何使用 java 实现 DMA 访问

于 2011-10-19T11:19:57.373 回答
3

你有两个选择(我知道):

  1. Java SDP——已被弃用
  2. JXIO [1],一个基于 RDMA 并由 Mellanox 支持的高性能消息传递库

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

于 2016-02-24T05:29:08.297 回答
2

DiSNI,一个用 Java 编写 RDMA 的新库。DiSNI 是 IBM 的 jVerbs 的开源变体。这里有一些性能数据说明了使用 Java 的 RDMA 如何与 C 和 Java 中的套接字以及 C 中的 RDMA 进行比较。

于 2016-08-09T08:27:24.887 回答
1

据我所知,RDMA 是网络基础设施(以及相关内核模块等)的属性,而不是应用程序级编程语言的属性。

换句话说,您必须获得专门的工具包来利用 RDMA 来减少网络延迟。以下是支持 RDMA 的 10GbE 网卡示例:link

于 2011-10-19T10:52:52.350 回答
0

Java 7 支持 Solaris 和 Linux 上的 SDP 协议(​​使用 OpenFabrics.org 驱动程序)。不幸的是,SDP 协议在 OFED 的 2.x 版本中已被弃用。人们求助于像 jVerbs 这样的 JNI 包装器。

于 2015-03-05T02:00:05.197 回答
0

Java 应用程序能够通过 nio 包映射文件。那些映射文件可以被多个程序访问——我担心这是关闭 java 中可用的 DMA 的东西

于 2011-10-19T10:54:14.167 回答