RDMA(JSOR)上的Java套接字与Infiniband中的jVerbs性能

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

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

不同之处在于JSOR仍然使用Java Socket接口. jVerbs提供了一个新的界面. jVerbs还有一个名为Stateful Verbs Call的东西,以避免重复序列化RDMA请求,他们说这可以减少延迟. jVerbs提供了更原生的界面,应用程序可以直接使用这些.我阅读了jVerbs SoCC 2013论文,他们在jVerbs上构建了jverbsRPC,并证明它可以显着减少zookeeper和memcache操作的延迟.

两者的文档都表明它们的性能优于基于TCP / IP,SDP和IPoIB的常规Java套接字.

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

解决方法:

以下是使用DiSNI(IBM的jVerbs的新开源继承者)和DaRPC(使用DiSNI的低延迟RPC库)的一些数字.

> DiSNI RDMA 64字节读取延迟低于2微秒
> 64字节(请求和响应)的DaRPC RDMA发送/接收延迟大约为5微秒
> Java / DiSNI和C原生RDMA之间的差异对于单侧操作来说可以忽略不计

这些基准测试已在使用Mellanox ConnectX-3网络接口连接的两台主机上执行.

以下是执行基准测试的命令:

(1)阅读基准

服务器:

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

客户:

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)发送/ recv基准

服务器:

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 

客户:

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性能

上一篇:RDMA 相关 简要摘录


下一篇:linux – infiniband rdma差转转bw