基于RDMA的RPC框架(一) 环境搭建
文章目录
- 一、简介
- 二、Ubuntu 14安装SoftRoce
- 2.1、编译内核
- 2.2、安装用户库
- 三、Ubuntu 18安装Soft Roce
- 引用
一、简介
二、Ubuntu 14安装SoftRoce
2.1、编译内核
我使用的是 Ubuntu 14.04,内核版本为:
安装 新版本的内核
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux
下载成功:
Cloning into ‘linux’…
remote: Counting objects: 5548596, done.
remote: Compressing objects: 100% (498423/498423), done.
remote: Total 5548596 (delta 403806), reused 0 (delta 0)
Receiving objects: 100% (5548596/5548596), 1.03 GiB | 292.00 KiB/s, done.
Resolving deltas: 100% (4638969/4638969), done.
Checking out files: 100% (56233/56233), done.下载完成后,多出一个linux 文件夹来,进入
在linux目录下,执行
cp /boot/config-4.4.0-142-generic .config
,注意这里要拷贝的config- 后面的内容要和自己机器的linux内核版本一致执行以下命令:
apt-get install ncurses-dev
apt-get install bison
apt-get install flex
add-apt-repository ppa:ubuntu-toolchain-r/test #添加gcc源
apt-get update
apt-get install gcc-5 g++5
ls /usr/bin/gcc*
#将5的优先级设为100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100
#原来的4.8也设为100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
#切换gcc,切换为5
update-alternatives --config gcc
执行
make menuconfig
在打开的界面执行下面的操作
1、 按“ /”:这将为您打开一个文本字段(搜索)
2、 输入“ rxe”和“确定”
3、 按“ 1”转到“以太网RDMA软件(ROCE)驱动程序”
4、 按“空格”启用“以太网RDMA软件(ROCE)驱动程序”。 您应该在其前面看到“ ”
5、 使用键盘上的向右箭头转到“保存”,然后按“ Enter”
6、 按“ Enter”将文件另存为“ .config”文件
7、 按“ Enter”退出
8、 回到主界面,选择最下面的kernel hacking
9、 选择第二行的 Compile-time checks and compiler options
10、点击 Enter 进入后,修改 Warn for stack frames larger than 的值为4096 (点击enter,在输入框中输入4096),点击ok
11、向右箭头 选择 save
12、内核编译时的gdb信息我也关闭了, 即Kernel hacking > Compile-time checks and compiler options
,将“Compile the kernel with debug info”
选项去掉
13、使用右箭头转到“退出”,然后反复按“exit”,直到退出向导。make –j $(nproc)
,$(nproc)表示当前机器的线程数目,make -j为并行编译,即用当前机器的内核线程数目的线程来并行make。可能会提示少一些库或者文件,然后去按照错误提示安装对应的库即可。例如我安装了以下几个:apt-get install libelf-dev
,解决缺少 gelf.h 头文件apt-get install openssl
和apt-get install libssl-dev
解决缺少opensslv.h- 我这里由于 Makefile 文件的配置,make 的时候会将warning当作error,导致编译退出,所以通过vim编辑 Makefile,找到
KBUILD_CFLAGS
这个选项,添加KBUILD_CFLAGS += -w
禁用将warning 当作 error
make modules_install
make install
前两步我没遇到什么坑,所以如果出错,请自己百度。成功之后,重启机器
重启之后,查看内核信息以及RDMA信息
2.2、安装用户库
- 克隆用户库:
git clone https://github.com/linux-rdma/rdma-core.git
,如果连接不上,则执行git clone git://github.com/linux-rdma/rdma-core.git
- 安装 cmake,
apt-get install cmake
apt-get install valgrind pandoc python-docutils libnl-3-dev libnl-route-3-dev libibverbs-dev libswitch-perl rdmacm-utils ibverbs-utils systemd libudev-dev librdmacm-dev libsystemd-journal0 cython
- 进入 rdma_core目录,执行
bash build.sh
- 进入build目录,执行 make install
三、Ubuntu 18安装Soft Roce
由于Ubantu 18默认开启了Soft Roce支持,所以不需要重新编译内核,直接安装用户库即可。
- 安装 Ubuntu 18,sudo passwd root 设置root用户
apt install git
- 安装用户库:
apt-get install libibverbs-dev librdmacm-dev rdma-core
apt install vim maven make g++
- 安装jdk,下载 jdk (我使用的 jdk1.8),解压
tar -xzvf jdk-8u301-linux-x64.tar.gz -C /usr
,编辑 /etc/profile,添加以下环境变量:
export JAVA_HOME=/usr/jdk1.8.0_301 #这里是你自己的jdk所在路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
,执行 java -version 和 javac,看是否有相应输出- 如果此时显示的是 ubuntu自带的open jdk,则使用如下命令:
sudo update-alternatives --install /usr/bin/java java /usr/jdk1.8.0_301/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/jdk1.8.0_301/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/jdk1.8.0_301/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/jdk1.8.0_301/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/jdk1.8.0_301/bin/javap 300
#切换为自己安装的jdk版本
sudo update-alternatives --config java
sudo update-alternatives --config javac
安装 java disni库:
git clone https://github.com/zrlio/disni
,如果连接不上,则用git clone git://github.com/zrlio/disni
mvn -DskipTests install
cd libdisni
apt-get install autoconf automake libtool
apt-get install libffi-dev
./autoprepare.sh
./configure --with-jdk=$JAVA_HOME
make install
,如果提示缺少 jni.h 和 jni_mod.h 头文件,则执行以下命令:cp /usr/jdk1.8.0_301/include/jni.h /usr/include/
cp /usr/jdk1.8.0_301/include/linux/jni_md.h /usr/include/
export LD_LIBRARY_PATH=/usr/local/lib
cd ../target
,从libdisni目录 进入disni目录下的target启动 soft-roce ,首先
rxe_cfg start
,再执行rxe_cfg add ens33
,注意最后的网卡名要和自己本机的网卡一致执行
rxe_cfg status
,显示如下:
java -cp disni-2.1-jar-with-dependencies.jar:disni-2.1-tests.jar com.ibm.disni.examples.SendRecvServer -a 192.168.220.139
,这里的ip填写自己的ip地址java -cp disni-2.1-jar-with-dependencies.jar:disni-2.1-tests.jar com.ibm.disni.examples.SendRecvClient -a 192.168.220.139
,注意 ip地址是服务器的ip显示如下,则表示成功。
引用
- gcc升级
- ubantu14 下载 更高版本 gcc
- https://blog.csdn.net/x356982611/article/details/70856470/
error: Can’t find expat.h. 缺libexpat1-dev库sudo apt-get install libexpat1-dev
1
No package ‘pciaccess’ foundsudo apt-get install libpciaccess-dev
1
2
3
No package ‘libxml-2.0’ foundapt-get install libxml2-dev
1
error: bison not foundsudo apt-get install bison
1
flex not foundsudo apt-get install flex
1
No module named makosudo apt-get install python-mako
1
No package ‘xcb-composite’ found
No package ‘xcursor’ found
No package ‘cairo-xcb’ foundsudo apt-get install libxcb-shm0-dev
sudo apt-get install xcb
sudo apt-get install libxcursor-dev
sudo apt-get install libcairo2-dev
基于RDMA的RPC框架(一) 环境搭建相关推荐
- Mybatis入门:1(Mybatis框架的环境搭建)
Mybatis框架的环境搭建 一.创建maven工程并导入坐标 导入坐标: <dependencies><dependency><groupId>org.mybat ...
- 基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建
基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建 文章目录 基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建 一.环境搭建 1.虚拟机Ubuntu系统安装 2.dock ...
- ESP8266基于WIN10+UBUNTU18.04的开发环境搭建(RTOS 3.2)(比较水)
ESP8266基于WIN10+UBUNTU18.04的开发环境搭建(RTOS v3.2) 软件基础环境参考 硬件环境参考 软件环境安装的详细内容 软件基础环境参考 WIN10家庭版1803的64位版本 ...
- 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程
一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...
- Selenium基于Python的web自动化测试框架(1)-环境搭建
环境搭建 前言 一.selenium简介 二.环境搭建 1. 笔者环境 2. Python安装 三. 验证安装是否成功 1. 打开win 命令行界面 2. 输入 python 回车,如果出现一下界面, ...
- SSH框架总结(框架分析+环境搭建+实例源代码下载)
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是眼下较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- .NET Exceptionless 日志收集框架本地环境搭建
一.简介 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等 ...
- Muse-UI +Vue2.0框架开发环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 一.安装Vue,创建Vue项目 VSCode 搭建Vue开发环境之Vue CLI 二.安装Muse-UI 库 npm inst ...
- SSH框架总结(框架分析+环境搭建+实例源码下载)
版权声明:本文为博主原创文章,未经博主允许不得转载. 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用 ...
最新文章
- java产生全局唯一的int类型_全局唯一ID设计
- docke跨主机通信之gre隧道
- MFC listctrl显示缩略图时索引问题和滚动条问题
- PoE交换机为什么值得你选择?
- linux增量安装tomcat_Linux服务器上的tomcat中部署web项目
- php 添加透明水印,php加水印的代码(支持半透明透明打水印,支持png透明背景)
- 程序员构建总是出问题,怎么办?
- 实验1-6 输出带框文字 (5 分)
- 2019.7.26随堂笔记
- python变量存为matlab,将matlab变量导出为python用法的文本
- 动态版简易通讯录制作
- VS自带反编译DLL工具
- JavaStudyNotes
- linux 查找内容对应行数,Linux查看文件指定行数内容与查找文件内容
- LDR6023E-解决苹果PD 20W快充市场供不应求
- 毕设看的硕博士论文速记
- Pic3D裸眼3D贴膜诞生
- 3D游戏建模新手入门到就业,高效学习的十二个步骤
- Paul Graham:撼动硅谷的人(译文)
- 0726 C. Cryptographer's Conundrum