Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RDMA(JSOR)上的Java套接字与Infiniband中的J谓词性能_Java_Sockets_Infiniband_Rdma_Ofed - Fatal编程技术网

RDMA(JSOR)上的Java套接字与Infiniband中的J谓词性能

RDMA(JSOR)上的Java套接字与Infiniband中的J谓词性能,java,sockets,infiniband,rdma,ofed,Java,Sockets,Infiniband,Rdma,Ofed,我对JSOR和JOR动词都有基本的理解 两者都处理JNI的限制,并使用快速路径来减少延迟。它们都使用用户谓词RDMA接口来避免上下文切换并提供快速路径访问。两者都有零拷贝传输选项 不同之处在于JSOR仍然使用Java套接字接口。jVerbs提供了一个新的接口。jVerbs还有一种称为有状态谓词调用的功能,以避免重复序列化RDMA请求,他们说这样可以减少延迟。jVerbs提供了一个更原生的接口,应用程序可以直接使用这些接口。我阅读了jVerbs SoCC 2013的论文,他们在jVerbs的基础上

我对JSOR和JOR动词都有基本的理解

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

不同之处在于JSOR仍然使用Java套接字接口。jVerbs提供了一个新的接口。jVerbs还有一种称为有状态谓词调用的功能,以避免重复序列化RDMA请求,他们说这样可以减少延迟。jVerbs提供了一个更原生的接口,应用程序可以直接使用这些接口。我阅读了jVerbs SoCC 2013的论文,他们在jVerbs的基础上构建了jverbsRPC,并表明它显著降低了zookeeper和memcache操作的延迟

这两款产品的文档都表明,它们的性能优于基于TCP/IP、SDP和IPoIB的常规Java套接字

我没有对JSOR和jVerbs进行任何性能比较。
我认为jVerbs可能比JSOR表现更好。但是,使用JSOR,我不必更改现有代码,因为它仍然使用相同的java套接字接口。我的问题是,相对于JSOR,使用jVerbs会带来什么样的性能提升。有人知道或有处理这两个问题的经验吗?如果你有任何比较数据,这将是伟大的。我找不到任何东西。

要比较jVerbs和JSOR的性能有点困难。第一种是面向消息的API,而第二种是将RDMA隐藏在Java套接字的基于流的API后面

以下是一些统计数据。我的测试使用一对旧的ConnectX-2卡和Dell PowerEdge 2970服务器。CentOS 7.1和Mellanox OFED版本3.1

我只对延迟测试感兴趣

jVerbs

测试是RPing示例的一个变体(如果有人感兴趣,可以在github上发布)。通过可靠连接测试以下调用序列的5000000个周期的延迟。消息大小为256字节

PostSendMethod.execute()
PollCQMethod.execute()
CompletionChannel.ackCQEvents()
结果(微秒):

  • 中位数:10.885
  • 99.0%百分位数:11.663
  • 99.9%百分位数:17.471
  • 99.99%百分位数:27.791
JSOR

JSOR套接字上的类似测试。测试是一个教科书客户端/服务器套接字示例。消息大小也是256字节

结果(微秒):

  • 中位数:43
  • 99.0%百分位数:55
  • 99.9%百分位数:61
  • 99.99%百分位数:217

这些结果与OFED延迟测试相差甚远。在相同的硬件/操作系统上,标准ib_send_lat基准测试的平均延迟为2.77秒,最大延迟为23.25微秒。

以下是使用IBM jVerbs新开源的继承者的一些数字,以及使用DiSNI的低延迟RPC库

  • 64字节的DiSNI RDMA读取延迟低于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 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 disni-1.0-jar-with-dependencies.jar:disni-1.0-tests.jar com.ibm.disni.examples.benchmarks.AppLauncher-t java rdma服务器-a

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