RDMA(JSOR)上的Java套接字与Infiniband中的jVerbs性能 [英] Java Sockets on RDMA (JSOR) vs jVerbs performance in Infiniband

查看:72
本文介绍了RDMA(JSOR)上的Java套接字与Infiniband中的jVerbs性能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对JSOR和jVerbs都有基本的了解.

两个都处理JNI的限制,并使用快速路径来减少延迟.两者都使用用户Verbs RDMA接口来避免上下文切换并提供快速的路径访问.两者都有用于零拷贝传输的选项.

区别在于JSOR仍使用Java Socket接口.jVerbs提供了一个新的界面.jVerbs还具有一种称为状态动词调用"的功能,可以避免RDMA请求的重复序列化,他们称这样可以减少延迟.jVerbs提供了更多本机界面,应用程序可以直接使用它们.我阅读了jVerbs SoCC 2013论文,他们在jVerbs之上构建了jverbsRPC,并表明它显着减少了zookeeper和memcache操作的延迟.

这两个文档的文档显示,它们的性能都优于基于TCP/IP,SDP和IPoIB的常规Java套接字.

我在JSOR和jVerbs之间没有任何性能比较.我认为jVerbs的性能可能比JSOR好.但是,使用JSOR,我不必更改现有代码,因为它仍使用相同的Java套接字接口.我的问题是,相对于JSOR,使用jVerbs可能会提高性能.有谁知道或有处理这两者的经验?如果您有任何比较数据,那就更好了.我找不到任何东西.

解决方案

以下是一些使用

I have basic understanding of both JSOR and jVerbs.

Both handle limitations of JNI and use fast path to reduce latency. Both of them use user Verbs RDMA interface for avoiding context switch and providing fast path access. Both also have options for zero-copy transfer.

The difference is that JSOR still uses the Java Socket interface. jVerbs provides a new interface. jVerbs also has something called Stateful Verbs Call to avoid repeat serialization of RDMA requests which they say reduces latency. jVerbs provides a more native interface and applications can directly use these. I read the jVerbs SoCC 2013 paper where they build jverbsRPC on top of jVerbs and show that it reduces latency of zookeeper and memcache operations significantly.

Documentations for both show that they perform better than regular Java sockets based on TCP/IP, SDP and IPoIB.

I don't have any performance comparison between JSOR and jVerbs. I think jVerbs may perform better than JSOR. But, with JSOR, I don't have to change my existing code because it still uses the same java socket interface. My question is what may be the performance gain of using jVerbs relative to JSOR. Does anyone know or have experience in dealing with the two? If you have any comparison data that will be great. I could not find any.

解决方案

Here are some numbers using DiSNI -- the newly open sourced successor of IBM's jVerbs -- and DaRPC, the low-latency RPC library using DiSNI.

  • DiSNI RDMA read latencies for 64 bytes are below 2 microseconds
  • DaRPC RDMA send/recv latencies for 64 bytes (request and response) are around 5 microseconds
  • The differences betwenn Java/DiSNI and C native RDMA are negligible for one-sided operations

These benchmarks have been executed on two hosts connected using a Mellanox ConnectX-3 network interface.

Here are the commands to execute the benchmarks:

(1) Read benchmark

Server:

java -cp disni-1.0-jar-with-dependencies.jar:disni-1.0-tests.jar com.ibm.disni.examples.benchmarks.AppLauncher -t java-rdma-server -a <address> -o read -s 64 -k 100000 -p

Client:

java -cp disni-1.0-jar-with-dependencies.jar:disni-1.0-tests.jar com.ibm.disni.examples.benchmarks.AppLauncher -t java-rdma-client -a <address> -o read -s 64 -k 100000 -p

(2) Send/recv benchmark

Server:

java -cp darpc-1.0-jar-with-dependencies.jar:darpc-1.0-tests.jar com.ibm.darpc.examples.server.DaRPCServer -a <address> -d -l 64 -r 64 

Client:

java -cp darpc-1.0-jar-with-dependencies.jar:darpc-1.0-tests.jar com.ibm.darpc.examples.client.DaRPCClient -a <address> -k 1000000 -l 64 -r 64 -b 1

这篇关于RDMA(JSOR)上的Java套接字与Infiniband中的jVerbs性能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆