计算机网络之RDMA技术(十)内存机制

计算机网络之RDMA技术(十)内存机制,第1张

姓名:周肇星;学号:22011110028;学院:通信工程学院

嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对 *** 作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!

嵌牛鼻子计算机网络,高性能网络,RDMA

嵌牛提问读完本文,对RDMA技术的SRQ有所认识了吗?

嵌牛正文

InfiniBand specification R13, Chapter3, 342, Page 104通道适配器提供MTP机制及其功能

InfiniBand specification R13, Chapter3, 353, Page 112概述L_Key & R_Key

InfiniBand specification R13, Chapter3, 354, Page 113概述虚拟内存地址 & L_Key & R_Key

InfiniBand specification R13, Chapter3, 361, Page 127实现远程访问内存的两种机制

用户可使用两种机制来实现远程访问内存(RDMA):

任何一种方法均会产生R_Key,用户可将R_Key和数据缓冲区的虚拟地址提供给远程节点,只有远端节点发来的RDMA请求中具有正确的R_Key才能访问特定的内存区域

注:QP、内存区域、内存窗口必须位于相同的保护域中

MR全称为Memory Region,可译为内存区域,指的是由RDMA软件层在内存中规划出的一片区域,用于存放收发的数据。IB协议中,用户在申请完用于存放数据的内存区域之后,都需要通过调用IB框架提供的API注册MR,才能让RDMA网卡访问这片内存区域

Memory Region,它是一片由用户注册的特殊的内存区域:一方面其中的内容不会被换页到硬盘中,另一方面RDMA网卡中记录了它的地址转换关系,使得硬件拿到用户指定在WR中的虚拟地址之后找到对应的物理地址

通道适配器提供了一种内存转换和保护(Memory Translation & Protection,MTP)机制,它将虚拟地址转换为物理地址,并验证访问权限。因此IBA应用程序无需对任何 *** 作使用物理寻址

注册MR的过程中,硬件会在内存中创建并填写一个VA to PA的映射表,这样需要的时候就能通过查表把VA转换成PA了

现在假设左边的节点向右边的节点发起了RDMA WRITE *** 作,即直接向右节点的内存区域中写入数据。假设图中两端都已经完成了注册MR的动作,MR即对应图中的“数据Buffer”,同时也创建好了VA->PA的映射表。

对于右侧节点来说,无论是地址转换还是写入内存,完全不用其CPU的参与

因为HCA访问的内存地址来自于用户,如果用户传入了一个非法的地址(比如系统内存或者其他进程使用的内存),HCA对其进行读写可能造成信息泄露或者内存覆盖。所以我们需要一种机制来确保HCA只能访问已被授权的、安全的内存地址。IB协议中,APP在为数据交互做准备的阶段,需要执行注册MR的动作

而用户注册MR的动作会产生两把钥匙:L_KEY(Local Key)和R_KEY(Remote Key),钥匙的实体其实就是一串序列而已。它们将分别用于保障对于本端和远端内存区域的访问权限

因为物理内存是有限的,所以 *** 作系统通过换页机制来暂时把某个进程不用的内存内容保存到硬盘中。当该进程需要使用时,再通过缺页中断把硬盘中的内容搬移回内存,这一过程几乎必然导致VA-PA的映射关系发生改变

由于HCA经常会绕过CPU对用户提供的VA所指向的物理内存区域进行读写,如果前后的VA-PA映射关系发生改变,那么我们在前文提到的VA->PA映射表将失去意义,HCA将无法找到正确的物理地址

为了防止换页所导致的VA-PA映射关系发生改变,注册MR时会"Pin"住这块内存(亦称“锁页”),即锁定VA-PA的映射关系。也就是说,MR这块内存区域会长期存在于物理内存中不被换页,直到完成通信之后,用户主动注销这片MR

Memory Window简称MW,中文为内存窗口。是一种由用户申请的,用于让远端节点访问本端内存区域的RDMA资源。每个MW都会绑定(称为bind)在一个已经注册的MR上,但是它相比于MR可以提供更灵活的权限控制。MW可以粗略理解为是MR的子集,一个MR上可以划分出很多MW,每个MW都可以设置自己的权限

用户注册MR的过程,需要从用户态陷入内核态,调用内核提供的函数pin住内存(防止换页),然后制作虚拟-物理地址映射表并下发给硬件

因为MR是由内核管理的,如果用户想修改一个已经存在的MR的信息,比如我想收回某个MR的远端写权限,只保留远端读权限;或者想要使一个之前已经授权给远端节点的R_Key失效,那么用户需要通过重注册MR(Reregister MR)接口来进行修改,该接口等价于先取消注册MR(Deregister MR),然后注册MR(Register MR)。上述流程需要陷入内核态来完成,而这个过程是耗时较长的

不同于需要通过控制路径修改权限的MR,MW在创建好之后,可以通过数据路径(即通过用户态直接下发WR到硬件的方式)动态的绑定到一个已经注册的MR上,并同时设置或者更改其访问权限,这个过程的速度远远超过重新注册MR的过程

IB规范通过下述两种机制,来确保MR可以按照用户的期望被正确且安全的访问

A给自己的房间(MR)配了两把钥匙(Memory Key),一把留作自用(L_Key),另一把钥匙(R_Key)邮寄(可以是任何通信方式)给了B。B可以在A不在家的时候(本端CPU不感知远端节点对本地内存的RDMA *** 作),通过钥匙(R_Key)打开门。打开门之后,可能B只能隔着玻璃查看房间的摆设(A只给了这个MR远程读权限),或者进入房间内发现漆黑一片什么也看不到,但是可以向房间里放物品(A只给了这个MR远程写权限),当然也有可能没有玻璃也开了灯(同时给了远程读写权限)

这里的权限,指的是本端/对端节点,对于本端内存的读/写权限,它们两两组合形成了四种权限(除了这四种权限之外,还有Atomic权限等)

上表中这四种权限中最低的是本地读(Local Read),是用户必须赋予MR/MW的权限,因为如果一块内存本地的用户都无法访问的话,那就失去意义了;另外还有个限制,如果某个MR需要配置远端写(Remote Write)或者远端原子 *** 作权限(Remote Atomic),那么也一定要配置本地写(Local Write)权限。在此约束之下,每个MR或者MW都可以按需配置权限,比如注册的一个MR需要允许远端节点写入数据,而不允许读,那么我们就打开Remote Write权限,关闭Remote Read权限。这样HCA(网卡)收到对端发起的对这个MR范围内的某个地址的WRITE请求之后,就可以予以放行;而HCA收到对端对这个MR的READ *** 作时,就会拒绝这个请求,并返回错误信息给对端

Key是一串数字,由两部分组成:24bit的Index以及8bit的Key

其中,Index用于HCA快速索引到本地的虚拟-物理地址转换表等MR相关的信息,而Key用于校验整个字段的合法性,以防止未授权的用户任意传递Index

即Local Key,关联到一个MR上,用于HCA访问本端内存。当本端的某个进程试图使用一个已经注册的MR的内存时,HCA会校验其传递的L_Key。并且利用L_Key中的索引查找地址转换表,把虚拟地址翻译成物理地址然后访问内存

sge由起始地址、长度和秘钥组成。用户在填写WR时,如果需要HCA访问本端内存,那么就需要通过一个sge的链表(sgl)来描述内存块,这里sge的秘钥填的就是L_Key,也就是下图中的key1和key3,他们分别是MR1的L_Key和MR2的L_Key

即Remote Key,关联到一个MR或者MW上,用于远端节点访问本端内存。当远端节点试图访问本端的内存时,一方面本端的HCA会校验R_Key是否合法,另一方面会利用R_Key中的索引查地址转换表,把虚拟地址翻译成物理地址然后访问内存

凡是RDMA *** 作(即Write/Read/Atomic),用户都要在WR中携带远端内存区域的R_Key

指的是将一个MW“关联”到一个已经注册的MR的指定范围上,并配置一定的读写权限。绑定的结果会产生一个R_key,用户可以把这个R_Key传递给远端节点用于远程访问。注意一个MW可以被多次绑定,一个MR上也可以绑定多个MW。如果一个MR还有被绑定的MW,那么这个MR是不能被取消注册的

Bind有两种方式,一种是调用Post Send接口下发Bind MW WR,一种是调用Bind MW接口:

指的是用户通过下发一个带有Invalidate *** 作码的WR到硬件而使一个R_Key无效的 *** 作

Invalidate *** 作的对象是R_Key而不是MW本身,即Invalidate之后的效果是:远端用户无法再使用这个R_Key访问对应的MW,而MW资源仍然存在,以后仍然可以生成新的R_Key给远端使用

按照Invalidate *** 作的发起方不同,又可以进一步分成两种:

今天计算世界里已经不是Windows的天下了,随着Linux的异军突起, *** 作系统市场真是令人眼花缭乱今天来了兴致突然想看看倒底都有些什么 *** 作系统在网上查了一下还真是不少

大概分一下类主要有Windows,UNIX,LINUX,嵌入式 *** 作系统本来用表格形式写了一篇,但是表格太大了,发布出来后显示不正常下面用列举的方式重新写一下

Windows 开发商 Microsoft

Windows98/me

Windows2000/XP

Windows Server2003

Windows Vista
Windows98/me是基于MS-DOS的混合的16/32位 *** 作系统正慢慢的退出PC舞台了,2000/XP以及Server2003都是基于WindowsNT的32位 *** 作系统,XP/Server2003已经有64位版本了。Vista是微软最新开发的版本预计在2006年推出。主要支持Intel,AMD,后来增加了对PowerPC,MIPS的支持。微软的 *** 作系统基本上统治了个人PC市场,大概占了90%的市场份额。
UNIX-like

AIX 开发商 IBM

AIX是Advanced Interactive eXecutive的简称,它是IBM 公司的UNIX *** 作系统,整个系统的设计从网络、主机硬件系统,到 *** 作系统完全遵守开放系统的原则

RS/6000 采用IBM 的UNIX *** 作系统-AIX作为其 *** 作系统这是一个目前 *** 作系统界最成功,应用领域最广,最开放的第二代的UNIX系统。它特别适合于做关键数据处理(CRITICAL)

支持PowerPC POWER处理器

目前的版本是AIX 5L 53,

支持64棵处理器,2TB内存,16TB JFS2文件系统,16TB JFS2文件
HP-UX 开发商 HP

惠普公司在1996年随着推出64位PA-8000处理器,开始了64位技术的实施计划,它形成了工业界运算最快的商业和工程技术应用服务器的基础。为了与先进的硬件配套,惠普公司已经逐步地把64位功能放入惠普公司在工业界领先的UNIX *** 作系统HP-UX。HP-UX 1010和1020分别具有非常大的文件系统和文件。

HP-UX 1100也有32位版本,使得基于32位PA-7X00系统也可以得到HP-UX 1100的新功能和特色;基于PA-8X00的K系列和T系列系统的客户要在HP-UX的32位或64位版本之间做出选择。惠普公司单机系统性能在工业界领先(39,469TPMS)的V系列系统,只可以运行64位的HP-UX 1100。

主要运行于HP公司的PA-系列处理器以及Intel的安腾系列处理器上

最新的版本HP-UX 11i v2

可以管理128棵处理器,1TB内存,32TB文件系统,最大2TB的文件。

IRIX 开发商 SGI

SGI公司最早是专门生产图形显示终端的, OpenGL标准便是由SGI提出来的公司开发的这个 *** 作系统是主要运行在基于MIPS处理器的图形工作站上,1992年SGI收购了MIPS, 1998年MIPS又脱离了SGI成立MIPS技术公司2003年SGI推出了基于Linux的Altix系列 *** 作系统

Mac OS X 开发商 Apple

Apple公司的Macintosh机上的 *** 作系统, 苹果机主要用于图形领域,在图形处理领域占有很大市场份额。Mac OS是首个在商用领域成功的图形用户界 *** 作系统。Mac OS9及以前的版本都在搭在苹果机上销售的。它不支持其它设备,每当有新的设备时都要通过添加扩展来支持设备。新的Mac OS X结合BSDUnix、NeXTStep和Mac OS 9的元素。采用Unix风格的内存管理和抢占式多任务处理,它的最底层建基于BSDUnix的内核,实行的是部分开放源代码。

现行的最新的系统版本是Mac OS X v1042。

只能运行在PowerPC G3以上处理器的苹果机上,苹果公司正在跟Intel合作,表示以后苹果机会采用x86处理器。

Solaris 开发商 SUN

最早也是基于BSD Unix开发的,那时就直接叫Sun OS,从Sun OS5以后就以Solaris的名字面市,从Solaris10开始它也是免费开源的软件了,开始主要是为SPARC和x86写的,后来经过一些改动也可以支持一大批的处理器Solaris10开始支持64位处理器

FreeBSD 开发者 Nate Williams,Rod Grimes,Jordan Hubbard

Bill Jolitz的 386BSD发展形成3个分支FreeBSD,NetBSD,OpenBSD了,这些都是免费的开源 *** 作系统。第一张FreeBSD光盘是在1993年12月发布的。

FreeBSD 是一个在个人电脑上执行的作业系统,主要支持x86处理器,其他跟 Intel 相容的 CPU 如 AMD 跟 Cyrix也被支持。

FreeBSD 能提供你许多昂贵工作站才有的先进功能,这些特色包括:

抢占式多任务处理

完整的 TCP/IP 网路功能 包含 SLIP, PPP, NFS 跟 NIS。

内存保护(Memory protection) 能确保一个使用者不能打扰其他人。而一个应用程式也不能影响其他的程式。

标准的 X 视窗系统 (X Window, X11R6) 提供良好的图形用户接口(GUI)以便在一般的 VGA 显示卡以及萤幕上使用, 并且提供完整的原始程式码。

能直接执行在其他作业系统 (如 SCO, BSDI, NetBSD, Linux 跟 386BSD)上编译的 (Binary) 程式。

数以千计 可以直接执行(ready-to-run) 的应用程式, 可以在 FreeBSD ports 及 packages 中找到。 免去你上网路到处找软体的苦境。

需要时才置换的虚拟记忆体(Demand paged virtual memory 以及合理的虚拟记忆体及档案缓冲区之缓冲功能(merged VM/buffer cache)
NetBSD 开发者 NetBSD小组

NetBSD是一种完全免费的类UNIX *** 作系统,它是一个重于夸平台应用的 BSD分支,它支持50多种硬件平台,具有高度可移植性和硬件平台兼容性它可以运行在从64位alpha服务器到手持设备的多种硬件平台上 NetBSD的清晰设计以及它的众多高级特性使得它不论作为产品还是研究环境都表现得非常出色。而且它对用户在资源上进行全方位的支持。其上的应用程序很多都可以非常容易地获得。
OpenBSD 开发者 由NetBSD的前核心成员Theo de Raddt领导的一个开发小组。

OpenBSD由NetBSD分支出的计划,

它是一个免费、多平台、基于44BSD的类Unix *** 作系统。目标在于强调正确性、安全性、标准化以及可移植性。着重于安全性,致力于成为最安全的 *** 作系统。OpenBSD支持包括SVR4(Solaris),FreeBSD,Linux,BSDI,SunOS和HPUX等大部分二进制的模拟。
Linux

RedHat/Fedora 开发商 RedHatInc

Redhat linux是最早的Linux发行版本之一,也是最早使用软件管理包RPM的Linux版本, Redhat 自90以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。最新版本是FC40

Slackware 开发商Slackware Linux, Inc

Slackware Linux是由Patrick Volkerding开发的GNU/Linux发行版。与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则,就是说没有任何配置系统的图形界面工具。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。

Slackware Linux的另一个突出的特性也符合KISS原则:Slackware没有如RPM之类的成熟的软件包管理器。Slackware的软件包都是通常的 tgz(tar/gzip)格式文件再加上安装脚本。Tgz对于有经验的用户来说,比RPM更为强大,并避免了RPM之类管理器的依赖性问题。 Slackware还有一个众所周知的特性就是BSD风格的初始化脚本。Slackware对所有的运行级(runlevel)/任务都用同一个脚本,而不是在不同的运行级中建立一堆脚本的链接。这样让你不必自己写新的脚本就能很容易地调整系统。
Debian 开发商Debian project

Debian 以其忠于Unix和自由软件以及丰富的选择出名,它的最新版本包含有5万个软件包,支持十一种体系结构,从ARM到IBM S390,以及个人电脑上的x86到PowerPC它的软包管理工具APT一样有名最新发布版本是Debian31也叫sarge
Mandriva 开发商 Conectiva

Mandriva Linux的前身是欧洲最大的Linux厂商之一Mandrakesoft,长期以来Mandrake Linux以最为方便、易用、华丽的Linux发行版著称。Mandrake Linux早期方便的字体安装工具和默认的中文支持,为Linux普及做出了很大的贡献。但是2004年前后Mandrakesoft陷入财务危机,濒临破产。公司于2005年2月24日与拉丁美洲最大的Linux厂商Conectiva达成了收购协议,金额为170万欧元,新公司旗下品牌 Mandrake Linux更名为Mandriva Linux。Mandriva以rpm作为软件管理工具,部分兼容Red Hat Linux/Fedora Core的预编译包
SuSE 开发商 Novell

SUSE LINUX是德国的一个发行版,原是以Slackware Linux为基础,并提供完整德文使用界面的产品,2004年Novell收购了SUSE

Gentoo

Gentoo Linux为用户提供了大量的应用程序源代码。Gentoo Linux的每一部分都可以在最终用户的系统上重新编译建造,甚至包括最基本的系统库和编译器自身。通过依赖关系描述和源代码镜像的形式提供软件,Gentoo Linux提供了大量软件供用户选择。 标准的源代码镜像包括30G的数据。选择不仅在软件整体方面,也存在于软件的内部。由于可以在本地编译软件,参数和变量的选择可以由用户自己指定。

事实上,在软件的安装和升级方面,Gentoo拥有自己独特的优势。由于Portage技术的产生,Gentoo Linux可以担当一个理想的安全服务器、开发平台、专业级桌面应用、游戏服务器、嵌入式应用等等各种角色。由于其无限制的可配置性,我们甚至可以称 Gentoo Linux为一个准发行版。

嵌入式式 *** 作系统

uClinux

uClinux是一种优秀的嵌入式Linux版本。uclinux是一个源码开放的 *** 作系统,面向没有MMU(Memory Management Unit)的硬件平台。同标准Linux相比,它集成了标准Linux *** 作系统的稳定性、强大网络功能和出色的文件系,它是完全免费的

uC/OS II 开发商 Micrium

抢占式实时多任务实时 *** 作系统,可以管理63个任务,开源的嵌式 *** 作系统,商业应用需要得到Micrium公司的授权,
VxWorks 开发商 WindRiver

VxWorks *** 作系统是美国风河(WindRiver)公司于1983 年设计开发的一种嵌入式实时 *** 作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时 *** 作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、d道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导d上,甚至连1997年7月在火星表面登陆的火星探测器上也使用到了VxWorks

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。

PalmOS 开发商 PalmSource,Inc

早期由US Robotics(其后被3Com收购,再独立改名为Palm公司)研制的专门用于其产品"Palm"的 *** 作系统。主要用于PDA产器

WindowsCE 开发商 Microsoft

它是微软针对个人电脑以外的电脑产品所研发的嵌入式 *** 作系统,而CE则为Customer Embedded的缩写。

外观和结构上没有什么明显实质性的区别,主要是在服务器内存上引入了一些新的特有的技术,如ECC、ChipKill、Register、热插拔技术等,具有极高的稳定性和纠错性能。

ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑/服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。

Chipkill

Chipkill技术是IBM公司为了解决目前服务器内存中ECC技术的不足而开发的,是一种新的ECC内存保护标准。我们知道ECC内存只能同时检测和纠正单一比特错误,但如果同时检测出两个以上比特的数据有错误,则一般无能为力。目前ECC技术之所以在服务器内存中广泛采用,一则是因为在这以前其它新的内存技术还不成熟,再则在目前的服务器中系统速度还是很高,在这种频率上一般来说同时出现多比特错误的现象很少发生,正因为这样才使得ECC技术得到了充分地认可和应用,使得ECC内存技术成为几乎所有服务器上的内存标准。

Register即寄存器或目录寄存器,在内存上的作用我们可以把它理解成书的目录,有了它,当内存接到读写指令时,会先检索此目录,然后再进行读写 *** 作,这将大大提高服务器内存工作效率。带有Register的内存一定带Buffer(缓冲),并且目前能见到的Register内存也都具有ECC功能,其主要应用在中高端服务器及图形工作站上,如IBM Netfinity 5000。

首先,HP ML 350G6是一个双路服务器,在只有一块CPU的时候只能使用该CPU一侧的内存插槽
第二,目测你的内存型号是没有问题的,只要是HP原装的内存不会存在兼容性的问题
第三,推荐使用HP内存配置工具:>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10489123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存