“DMA”在这里表示:直接内存访问,“RDMA”是:远程直接内存访问。
我使用Java创建了一个传输股票数据的应用程序,但我发现延迟比我预期的要大。我听说有人开发了使用“DMA / RDMA”的相同类型的应用程序,它具有良好的性能,所以我想知道我是否可以在Java中使用“DMA / RDMA”?
如果没有,我应该使用哪种语言,以及是否有好的库可供使用?
答案 0 :(得分:6)
This文章概述了如何使用java实现DMA访问
答案 1 :(得分:3)
您有两种选择(我知道):
答案 2 :(得分:2)
有DiSNI,一个用Java编写RDMA的新库。 DiSNI是IBM的jVerbs的开源变种。有一些性能数字here说明了RDMA with Java与C和Java中的套接字以及C中的RDMA的比较。
答案 3 :(得分:1)
RDMA,因为我知道它是网络基础设施的属性(以及相关的内核模块等),而不是应用程序级编程语言。
换句话说,您必须获得专门的工具包才能使用RDMA来减少网络延迟。以下是支持RDMA的10GbE网卡示例:link。
答案 4 :(得分:1)
Java应用程序能够通过nio包mmaping文件。那些mmaped文件可以被多个程序访问 - 我担心这对于java中可用的DMA来说是关闭的东西
答案 5 :(得分:0)
Java 7支持Solaris和Linux上的SDP协议(使用OpenFabrics.org驱动程序)。不幸的是,在2.00版本的OFED中已经弃用了SDP协议。人们诉诸于jVerbs这样的JNI包装器。