linux rdma 怎么开启

linux rdma 怎么开启,第1张

一般来说是放在/usr/include目录下的;

但是这个并不局限也是可控的,如果我们进行开发过程中, 就会在内核的库函数文件目录:

例如在:/XXX/XXX/linux-X.X/include

所以根据不同的情况,头文件存放的目录也是不同的,具体需要可以根据locate和grep命令进行查询。

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

部分素材取自 https://zhuanlan.zhihu.com/p/138874738

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

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

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

【嵌牛正文】

InfiniBand specification R1.3, Chapter3, 3.6.1, Page 126【描述零拷贝的优势】

DMA(直接内存访问)是一种能力,允许在计算机主板上的外部设备(PCIe设备)直接把数据发送到内存中去,数据搬运不需要CPU的参与

传统内存访问需要通过CPU进行数据Copy来移动数据,通过CPU将内存中的Buffer1移动到Buffer2中

DMA模式:可以同DMA Engine之间通过硬件将数据从Buffer1移动到Buffer2,而不需要 *** 作系统CPU的参与,大大降低了CPU Copy的开销

在“节点A给节点B发消息”这一传输过程中:

A节点在用户空间中的内存数据,需要经过CPU拷贝到内核空间的缓冲区中,才可以被网卡访问,这期间数据会经过软件实现的TCP/IP协议栈,加上各层头部和校验码。网卡通过DMA拷贝内核中的数据到网卡内部的缓冲区中,进行处理后通过物理链路发送给对端

节点B收到数据后,会进行相反的过程:从网卡内部缓冲区中,将数据通过DMA拷贝到内存内核空间的缓冲区中,然后CPU会通过TCP/IP协议栈对其进行解析,将数据取出来拷贝到用户空间中

RDMA( Remote Direct Memory Access )意为远程直接地址访问,通过RDMA,本端节点可以“直接”访问远端节点的内存。所谓直接,指的是可以像访问本地内存一样,绕过传统以太网复杂的TCP/IP网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的

在使用了RDMA技术时,两端的CPU几乎不用参与数据传输过程(只参与控制面):

节点A的网卡直接从内存的用户空间通过DMA拷贝数据到内部存储空间,然后硬件进行各层报文的组装后,通过物理链路发送到对端网卡

节点B的RDMA网卡收到数据后,剥离各层报文头和校验码,通过DMA将数据直接拷贝到用户空间内存中

浅谈 Linux下的零拷贝机制

由于Linux等 *** 作系统将内存划分为用户空间和内核空间,在传统的Socket通信流程中CPU需要多次把数据在内存中来回拷贝。而通过RDMA技术,我们可以直接访问远端已经注册的内存区域

无需处理器处理数据的复制传输,使得不涉及内核介入,因而能够提供高带宽、低延迟通信。用户可以直接通过QP传输内存缓冲区中的数据。此外,R_Keys&L_Keys提供的保护消除了 *** 作系统验证数据传输的需要。因此, *** 作系统可以允许从用户模式发布WQE、绕过 *** 作系统,从而消耗更少的指令周期

从Linux系统上看,除了引导系统的BIN区,整个内存空间主要被分成两个部分:内核空间(Kernel space)、用户空间(User space)。用户空间和内核空间的空间、 *** 作权限以及作用都是不一样的

内核空间是Linux自身使用的内存空间,主要提供给程序调度、内存分配、连接硬件资源等程序逻辑使用

用户空间则是提供给各个进程的主要空间,用户空间不具有访问内核空间资源的权限,因此如果应用程序需要使用到内核空间的资源,则需要通过系统调用来完成:从用户空间切换到内核空间,然后在完成相关 *** 作后再从内核空间切换回用户空间

案例为将系统中磁盘上的文件发送到远端

传统的I/O *** 作进行了4次用户空间与内核空间的上下文切换,以及4次数据拷贝,其中4次数据拷贝中包括了2次DMA拷贝和2次CPU拷贝

指的是IO(数据)流程可以绕过内核,即在用户层就可以把数据准备好并通知硬件准备发送和接收。避免了系统调用和上下文切换的开销

Cardona_Towards_Hyperscale_High_v1.pdf

因此传统的TCP/IP存在的问题主要是:I/O Bottleneck瓶颈问题

RDMA的分层模型分成两部分"控制通路"和“数据通路”

控制通路需要进入内核态准备通信所需的内存资源,而数据通路指的是实际数据交互过程中的流程

RDMA中SEND-RECV流程:

数据收发绕过了内核并且数据交换过程并不需要CPU参与,报文的组装和解析是由硬件完成的

指的是可以在远端节点CPU不参与通信的情况下(当然要持有访问远端某段内存的“钥匙”才行)对内存进行读写,这实际上是把报文封装和解析放到硬件中做了。而传统的以太网通信,双方CPU都必须参与各层报文的解析,如果数据量大且交互频繁,对CPU来讲将是一笔不小的开销,而这些被占用的CPU计算资源本可以做一些更有价值的工作

异步接口

异步事件:RDMA在I/O *** 作过程中并不阻塞相关线程,TCP/IP却是阻塞方式

此处所说的阻塞,是指TCP将数据发送到内核缓冲区是阻塞的

消息基于事务(Message based transactions) ,数据被处理为离散消息而不是流,消除了TCP/IP中应用程序将流切割为不同消息/事务的需求

分散/聚合条目:读取多个内存缓冲区的数据,作为一个流发送(聚合),或接受一个流数据写入到多个内存缓冲区(分散)

RDMA协议

1、cd /usr/lib/systemd/system

2、查实例grep Stop *.service

auditd.service:RefuseManualStop=yes

blk-availability.service:ExecStop=/usr/sbin/blkdeactivate -u -l wholevg

console-shell.service:ExecStopPost=-/usr/bin/systemctl poweroff

cpupower.service:ExecStop=/usr/bin/cpupower $CPUPOWER_STOP_OPTS

ebtables.service:ExecStop=/usr/libexec/ebtables stop

iptables.service:ExecStop=/usr/libexec/iptables/iptables.init stop

kdump.service:ExecStop=/usr/bin/kdumpctl stop

nginx.service:ExecStop=/bin/kill -s QUIT $MAINPID

postfix.service:ExecStop=/usr/sbin/postfix stop

rdma.service:RefuseManualStop=true

rhel-configure.service:ExecStopPost=/bin/rm -f /.unconfigured

3、可见并不是所有的stop都是kill命令


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

原文地址:https://54852.com/yw/7167130.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存