数据库管理-第194期 网络加速RDMA初探(20240526)
数据库管理194期 2024-05-26
- 数据库管理-第194期 网络加速RDMA初探(20240526)
- 1 概念
- 2 发展
- 3 使用
- 总结
数据库管理-第194期 网络加速RDMA初探(20240526)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
PostgreSQL ACE Partner
青学会(青年数据库学习互助会)外部顾问
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,OceanBase观察团成员
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
之前在几场现场演讲和直播过程中提到过RDMA,也有很多人在问这么一个技术。这是一个很早就用在Oracle Exadata一体机上的网络技术,可以说一体机强大的性能一部分原因源自于此。从本期开始,将通过若干期内容分享,深入RDMA网络,探究其在数据库层面的应用。
1 概念
RDMA,Remote Direct Memory Access,可译作远程直接内存访问,是一种不经由操作系统从一台计算机到另一台计算机直接访问内存的技术。由于无需经过操作系统内核对网络包进行封装,可以节省大量CPU资源占用,同时也提供了高吞吐、低延迟网络,尤其适用于大规模并行计算机集群。
RDMA支持网络适配器直接通过网线将数据传输至应用内存或从应用内存直接传输至网线的零拷贝(Zero-copy)网络传输。这种传不再需要应用程序内存和操作系统数据缓存的数据复制拷贝操作。这种传输不需要CPU、缓存或上下文交换参与,并且传输可以与其他系统操作并行执行。使用RMDA可以有效减少消息传输的延迟。
但是,这种策略也会出现目标节点不会受到请求完成的通知(单向通信)等相关的一些问题。
2 发展
截止2018年,由于RDMA功能的不断完善与增强,在网络基础设施上的优异性能表现,获得了广泛的认可。例如:
- RDMA over Converged Ethernet (RoCE)可以在有损或无损的设施上运行
- iWRAP能够在物理层使用TCP/IP作为传输实现以太网RDMA
这使得RDMA将性能和延迟优势与低成本、标准化解决方案相结合。RDMA联盟和DAT Collaborative在RDMA协议和API的开发指定中发挥了关键通。
目前基于RDMA的高带宽网络设备,速度已达到100Gbit/s以上。IBM、红帽、Oracle等软件供应商已在最新产品中支持这些API。
硬件供应商已经开始开发基于RDMA的更高容量网络适配器,据报道其速率为100 Gbit/s。IBM、Red Hat和Oracle Corporation等软件供应商在其最新产品中支持这些API,截至2013年,工程师已开始开发通过以太网实现RDMA的网络适配器。Red Hat Enterprise Linux和Red Hat Enterprise MRGhave都支持RDMA。Microsoft通过SMB Direct在Windows Server 2012中支持RDMA。VMware的ESXi产品自2015年起也支持RDMA。
常见RDMA包含虚拟网络架构(Virtual Interface Architecture)、RDMA over Converged Ethernet (RoCE)、InfiniBand、Omni-Path和iWARP.
3 使用
应用程序访问控制可以通过最初设计用于InfiniBand的协议来使用RDMA的API,这些API可以用于任何底层RDMA实现。使用发送和完成队列,应用程序通过将工作队列条目(work queue entries,WEQs)提交到提交队列(submission queue,SQ)并从完成队列(completion queue,CQ)获取响应通知来执行RDMA操作。
RDMA可以通过可靠连接(Reliably Connected,RC)和不可靠数据包(Unreliable Datagram,UD)传输协议来进行数据的可靠或不可靠传输。前者有点事不丢失请求,而后者处理多个连接时则需要更少的队列对。这是因为UD是无连接的,允许单个主机使用单个队列与任何其他主机通信。
RDMA可以分别通过可靠连接(RC)和不可靠数据报(UD)传输协议可靠或不可靠地传输数据。前者的优点是保留请求(不会丢失请求),而后者在处理多个连接时需要更少的队列对。这是因为UD是无连接的,允许单个主机使用单个队列与任何其他主机通信。
总结
从前面的介绍可见,RDMA作为一款优秀的低延迟高吞吐量网络技术,是可以极大提升网络性能。后面将深入Exadata对RDMA的使用、基于RDMA技术的配置实操以及RDMA在数据库层面的使用愿景深入了解RDMA。
老规矩,知道写了些啥。
相关文章:

数据库管理-第194期 网络加速RDMA初探(20240526)
数据库管理194期 2024-05-26 数据库管理-第194期 网络加速RDMA初探(20240526)1 概念2 发展3 使用总结 数据库管理-第194期 网络加速RDMA初探(20240526) 作者:胖头鱼的鱼缸(尹海文) Oracle ACE A…...
C++小游戏 合集
生化危机 #include<conio.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<direct.h> int n,round,gold0; bool f1,f2,f3,deadfalse,PC_64Bit; char str[4]; struct n…...
【Python爬虫篇】Selenium在获取网页数据方面的使用及采集中国大学课程评论数据
1 selenium概述 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driver&#…...

【JavaScript】文件下载
文件下载的消息格式 服务器只要在响应头中加入 Content-Disposition: attachment; filename"kxx" 即可触发浏览器的下载功能其中: attachment 表示附件,浏览器看到此字段,触发下载行为(不同的浏览器下载行为有所区别&…...

利用Python去除PDF水印
摘要 本文介绍了如何使用 Python 中的 PyMuPDF 和 OpenCV 库来从 PDF 文件中移除水印,并将每个页面保存为图像文件的方法。我们将深入探讨代码背后的工作原理,并提供一个简单的使用示例。 导言 简介:水印在许多 PDF 文件中都很常见&#x…...

Unity Assembly Definition Dotween 引用
原理: 具体Unity程序集原理用法,暂时留坑,不介绍了,相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 :Dotween引用…...

重开之数据结构(二刷)
引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…...

JVM(三)
在上一篇中,介绍了JVM组件中的类加载器,以及相关的双亲委派机制。这一篇主要介绍运行时的数据区域 JVM架构图: JDK1.8后的内存结构: (图片来源:https://github.com/Seazean/JavaNote) 而在运行时数据区域中&#…...

【二叉树】:LeetCode:100.相同的数(分治)
🎁个人主页:我们的五年 🔍系列专栏:初阶初阶结构刷题 🎉欢迎大家点赞👍评论📝收藏⭐文章 1.问题描述: 2.问题分析: 二叉树是区分结构的,即左右子树是不一…...

[AI Google] 介绍 VideoFX,以及 ImageFX 和 MusicFX 的新功能
VideoFX 是来自 labs.google 的最新实验,您可以查看音乐效果和图像效果的新更新,现在在 110 多个国家可用。 生成式媒体正在改变人们构思创意并增强我们的创造力能力的方式。我们致力于与创作者和艺术家合作构建人工智能,以更好地理解这些生成…...

[7] CUDA之常量内存与纹理内存
CUDA之常量内存与纹理内存 1. 常量内存 NVIDIA GPU卡从逻辑上对用户提供了 64KB 的常量内存空间,可以用来存储内核执行期间所需要的恒定数据常量内存对一些特定情况下的小数据量的访问具有相比全局内存的额外优势,使用常量内存也一定程序上减少了对全局…...

python使用base加密解密
原理 base编码是一种加密解密措施,目前常用的有base16、base32和base64。其大致原理比较简单。 以base64为例,base64加密后共有64中字符。其加密过程是编码后将每3个字节作为一组,这样每组就有3*824位。将每6位作为一个单位进行编码…...
简述vue.mixin的使用场景和原理
Vue.mixin的使用场景 Vue.mixin是Vue的全局混入功能,它提供了一种非常灵活的方式来分发Vue组件中的可复用功能。使用Vue.mixin可以为Vue实例和组件添加全局的方法、属性、钩子函数等。具体的使用场景包括: 全局设置默认属性或方法:例如&…...

C# WPF入门学习(四)—— 按钮控件
上期介绍了WPF的实现架构和原理,之后我们开始来使用WPF来学习各种控件。 一、尝试插入一个按钮(方法一) 1. VS2019 在界面中,点击工具栏中的视图,在下拉菜单中选择工具箱。 至于编译器中的视图怎么舒服怎么来布置&am…...

大模型效能工具之智能CommitMessage
01 背景 随着大型语言模型的迅猛增长,各种模型在各个领域的应用如雨后春笋般迅速涌现。在研发全流程的效能方面,也出现了一系列贯穿全流程的提效和质量工具,比如针对成本较高的Oncall,首先出现了高质量的RAG助手;在开…...

PyQt6--Python桌面开发(33.QToolBar工具栏控件)
QToolBar工具栏控件...

node环境问题(无法加载文件D:\Software\Node.js\node_global\vue.ps1,因为在此系统上禁止运行脚本。)
问题:npm安装lerna显示安装成功,但是lerna -v的时候报错 解决步骤: 1、输入:Get-ExecutionPolicy 2、输入:Set-ExecutionPolicy -Scope CurrentUser(有选项的选Y) 3、输入:RemoteSi…...

位运算算法
位运算是计算机中常用的一种运算方法,它直接对二进制数的位进行操作。位运算主要包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<&a…...

重学java 45.多线程 下 总结 定时器_Timer
人开始反向思考 —— 24.5.26 定时器_Timer 1.概述:定时器 2.构造: Timer() 3.方法: void schedule(TimerTask task, Date firstTime, long period) task:抽象类,是Runnable的实现类 firstTime:从什么时间开始执行 period:每隔多长时间执行一次…...

MongoDB(介绍,安装,操作,Springboot整合MonggoDB)
目录 MongoDB 1 MongoDB介绍 MongoDB简介 MongoDB的特点 MongoDB使用场景 小结 2 MongoDB安装 安装MongoDB 连接MongoDB MongoDB逻辑结构 MongoDB数据类型 小结 3 MongoDB操作 操作库和集合 操作文档-增删改 操作文档-查询 MongoDB索引 小结 4 SpringBoot整合…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...