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

2023-12-02

我对 JSOR 和 jVerbs 有基本的了解。

两者都处理 JNI 的限制并使用快速路径来减少延迟。它们都使用用户 Verbs 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 库。

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

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

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

(1) 读取基准

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

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

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RDMA 上的 Java 套接字 (JSOR) 与 Infiniband 中的 jVerbs 性能对比 的相关文章

  • java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

    我正在实现轻松的网络服务 并且正在使用 jboss 4 0 但我遇到以下异常 java lang NoClassDefFoundError javax ws rs core Configuration 我的 web xml 是
  • H2 - 多个应用程序访问同一个 H2 数据库

    我正在使用嵌入式数据库H2在 2 个网络应用程序中说WebApp1 and WebApp2 我运行 WebApp1 并执行一些查询来访问 H2 数据库 同时我运行 WebApp2 但它抛出异常H2 当前已被另一个进程使用 我的需求是 我应该
  • 将json URL导入到java并使用jackson库解析它

    我正在尝试读取 java 中的 json 链接并解析它 以便我可以将它用于其他事务 但问题是我收到错误 我真的不知道该如何处理它们 这是代码 package weather data import weather data import c
  • 使 TreeMap 比较器容忍 null

    这个定制的 Valuecomarator 按其值对 TreeMap 进行排序 但在搜索 TreeMap 是否具有某个键时 它不能容忍 nullpointException 如何修改比较器来处理零点 import java io IOExce
  • Eclipse 说“更新 Android Developer Toolkit”

    我不知何故弄乱了我的 Eclipse 和 Android 设置 我不知道如何修复它 问题症状如下 在 首选项 gt Android 中 我尝试选择 android sdk linux 的位置 选择时出现错误 此 Android SDK 需要
  • Spring 可以理解 @Inject 替换 Weld 作为 JSR-299 实现吗?

    我从几个网页中注意到 Spring 3 0 显然支持来自 JSR 330 的 Inject 由于我们确实希望在 Web 应用程序和独立应用程序的库中使用 JSR 299 语法进行依赖项注入 并且有 Weld 的替代方案 因此如果 Sprin
  • 使用Optional作为类中的属性是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 我读过一些关于目的的内容Optional 不幸的是我不记得在哪里 在Java 8中 我很惊讶作者没有提到使用Optional作为类中的属性 由于我在课堂上经常使用选项 我想知道这是否是一个好的做法 或者我可以更好
  • 在 Eclipse 中导航 Java 调用堆栈

    在调试器中像GDB http sources redhat com gdb 当您在断点处停止时 您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据 在 Eclipse 中如何做到这一点 In the 调试视角 http www ibm
  • 指定自定义应用程序上下文

    我们正在将一些数据服务从使用 jersey spring 的 Jersey 1 x 迁移到使用 jersey spring3 的 Jersey 2 x 我们有一些继承自 JerseyTest 的测试类 其中一些类使用 web xml 文件中
  • 找不到模块:javafx.controls

    我已经下载了JavaFX SDK 解压它并设置PATH TO FX系统变量 如下本说明 https openjfx io openjfx docs install javafx 我使用了以下代码示例 import javafx applic
  • Spring @Transactional 并发

    class MyService 公共无效a 同步 某个键 b Transactional 传播 传播 REQUIRES NEW 公共无效b 数据库工作吗 除非您使用代码编织 否则这是行不通的 Spring处理事务的默认方式是通过AOP代理
  • Maven:如何获取捆绑在包中的 .so 库

    我有一个带有 jar 和 so 文件的第三方库 我配置了 pom xml 如下
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 如何更改tomcat jmx密码的文件权限

    我正在尝试保护 Windows 平台上托管的本地 tomcat 实例上的 JMX 访问 我已经创建了访问权限和密码文件 并使用以下 VM 参数插入这些文件 Dcom sun management jmxremote password fil
  • 在 jFrame 中启用右键单击

    嘿 我正在寻找如何使用 NetBeans 在 jFrame 中启用 仅且仅 右键单击并显示弹出菜单 使用我的代码 private void formMouseClicked java awt event MouseEvent evt pop
  • 获取运行时生成的类的字节

    我正在使用一个 Java 框架 该框架使用自定义类加载器在运行时生成一些 代理 类 我想为任何这样的类获取自定义 ClassLoader 从 loadClass 返回的与该类对应的原始字节数组 这可能吗 我知道 如果一个类作为资源存在 那么
  • 使用JPanel绘制直线并获取点坐标

    我现在完全不知所措 我没有太多用 Java 构建 GUI 我一直在阅读有关 swing 和 JPanel 的所有内容 我认为我想做的事情是可能的 我只是还没有弄清楚how 我正在尝试构建一个 GUI 您可以在其中在某个绘图区域内绘制直线 我
  • Java 通用问题

    下面的代码可以编译 但如果我取消注释行 它不会编译 我很困惑为什么 HashMap 确实扩展了 AbstractMap 并且声明映射的第一行可以正常编译 import java util AbstractMap import java ut
  • Selenium Webdriver 中的 IF 语句

    我想知道是否有人可以帮助我解决我正在尝试解决的问题以及 Java 中 Webdriver 的 If 语句 当登录到我正在测试的应用程序时 可以在主页之前进入安全问题页面 如果是新用户等 我希望测试中的代码做的是 如果出现安全问题页面 请填写
  • 确保对象实现 Comparable

    我有一个小问题 想知道如何解决它 我有一个通用类Tuple

随机推荐

  • 如何创建极坐标等值线图

    Update 我已经在我的博客上完整地写了我发现的方法http blog rtwilson com having polar contour plots with matplotlib 你可能想先检查一下 我正在尝试在 matplotlib
  • 将对象数组转换为长数组时出现 ClassCastException

    当我尝试将对象数组转换为长数组时 出现此异常 线程 main 中的异常 java lang ClassCastException Ljava lang Object 无法投射到 Ljava lang Long 我的酒店房间地图中的钥匙很长
  • 如何使用 ViewPager 滑动 xml 布局

    我正在构建一个应用程序 我想在其中启用滑动功能 我想在单个活动中滑动 xml 布局 早些时候我尝试放置图像 它成功了 我创建了一个扩展 PagerAdapter 的 ImageAdapter 类 在 instantiateItem 中 我创
  • 用于相对导入的 python 包装

    首先 我很抱歉 我知道有很多关于相对导入的问题 但我只是没有找到解决方案 如果可能的话我想使用以下目录布局 myClass init py test demo py benchmark py specs py src init py myC
  • 写入文件需要针对大流量进行优化第 3 部分

    这个问题是前2部分的延续 任何有兴趣了解我来自哪里的人都可以参考第1部分和第2部分 但这不是必要的 写入文件需要针对大流量进行优化 写入文件需要针对大流量进行优化第 2 部分 现在我有一个工作片段 相关部分如下 public static
  • 限制登录尝试失败的次数

    我想限制失败的登录尝试 例如 如果特定用户尝试使用错误的用户名或密码登录 4 次 我应该第四次显示验证码 而不是阻止一段特定时间 并继续显示验证码 除非他提供有效的用户名和密码 用户成功登录后 登录尝试将重置为零 从安全角度来看 检查用户名
  • 如何让TextureView播放视频有圆角和气泡效果

    我成功地在Android上使用TextureView和MediaPlayer播放视频 我是这样做的 我用 SurfaceTexture 创建了一个 Surface public void onSurfaceTextureAvailable
  • 在 json 响应中排除具有默认值的枚举属性

    我有一个 api 响应模型 它具有枚举类型的属性 枚举属性仅在某些情况下才会填充 其余情况下它会获得默认值 0 输出 道具1 ABCD prop2 0 这是默认为零的枚举属性 我尝试使用自定义 jsonconverter 但这并不能真正解决
  • 如何将 XML 文档的树结构分解为所需的结构..?

    对我来说 编写 XSLT 代码以带来我想要的输出是一个巨大的挑战 这是我的XML输入 我正在测试
  • 静态编译Python解释器?

    我正在构建一个专用的嵌入式 Python 解释器 并且希望避免对动态库的依赖 因此我想使用静态库来编译解释器 例如libc a not libc so 我还想静态链接属于 Python 标准库的所有动态库 我知道这可以使用Freeze py
  • 设置 Git 用户名

    我按照以下说明设置 Git https git scm com book en v2 Getting Started First Time Git Setup 该文档指出从命令行运行以下命令 git config global user n
  • 使用 Java 读取受密码保护的 Excel 文件(.xlsx)

    我试过下面的代码 import org apache poi poifs crypt Decryptor import org apache poi poifs crypt EncryptionInfo import org apache
  • 四条带纹理失真

    我有一个GL QUAD STRIP 我正在纹理映射 四边形带自身向后折叠以形成 UV 球体 本质上 四边形带通常不是由矩形制成的 而是由梯形制成的 我遇到纹理失真问题 纹理坐标是正确的 例如 它们在应该的位置很好地排列 问题在于梯形面本身
  • 如何使用 fmod 并避免精度问题

    我将把这个问题归结为最简单的形式 让我们从 0 5 0 开始迭代 步长为 0 05 并打印出 X 每乘以 0 25 for double d 0 0 d lt 5 0 d 0 05 if fmod d 0 25 is equal 0 pri
  • tvOS 文本字段透明背景

    我正在开发一个 tvOS 项目 我使用 swift 和 siwftUI 我想创建一个具有透明背景的 TextField 问题是 当我将背景颜色设置为透明时 仍然有一层突出显示 当您导航并将焦点放在文本字段上时 它会展开 我尝试了很多方法但无
  • 如何让 firestore 在写入时创建嵌套对象作为子集合?

    考虑我下面的代码 我希望这段代码在集合测试下创建一个名为 items 的子集合 但正确的 items 在测试集合中添加了一个数组字段 请注意 这是针对 firestore 的 而不是针对 firebase 实时数据库的 data first
  • 在 NodeJS 中使用和更新全局变量安全吗?

    我有一个节点服务器 用于加载任何人都可以编写的某些脚本 据我了解 当我启动节点服务器时 模块将首次在全局范围内加载 当请求一个页面时 它会被 启动服务器 回调加载 我可以根据请求使用所有已加载的模块 但我还没有遇到过全局变量在请求期间发生更
  • 为什么 Javascript 上传块大小会因浏览器而变化?

    我正在通过 javascript 代码将文件上传到服务器 我注意到不同的浏览器发送不同大小的字节 如下图所示 Internet Explorer 发送小字节 但 Chrome 和 Firefox 发送较大字节 我正在使用 XMLHttpRe
  • Android,无限重复动画与instrumentation.waitForIdleSync()

    我有一个项目custom view这是动画的 动画是一个简单的 Alpha 淡入淡出 无限重复 该视图是一个cursor 这使得cursor看起来它在眨眼 当我开始为项目编写功能单元测试时 我遇到了一个问题 getActivity 方法会挂
  • RDMA 上的 Java 套接字 (JSOR) 与 Infiniband 中的 jVerbs 性能对比

    我对 JSOR 和 jVerbs 有基本的了解 两者都处理 JNI 的限制并使用快速路径来减少延迟 它们都使用用户 Verbs RDMA 接口来避免上下文切换并提供快速路径访问 两者还具有零拷贝传输选项 不同的是 JSOR 仍然使用 Jav