基于RDMA的RPC框架(一) 环境搭建

一、简介

二、Ubuntu 14安装SoftRoce

2.1、编译内核

  1. 我使用的是 Ubuntu 14.04,内核版本为:
    在这里插入图片描述

  2. 安装 新版本的内核
    在这里插入图片描述

    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.

  3. 下载完成后,多出一个linux 文件夹来,进入
    在这里插入图片描述

  4. 在linux目录下,执行 cp /boot/config-4.4.0-142-generic .config,注意这里要拷贝的config- 后面的内容要和自己机器的linux内核版本一致

  5. 执行以下命令:

    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
    在这里插入图片描述

  6. 执行 make menuconfig

  7. 在打开的界面执行下面的操作
    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”,直到退出向导。

  8. make –j $(nproc),$(nproc)表示当前机器的线程数目,make -j为并行编译,即用当前机器的内核线程数目的线程来并行make。可能会提示少一些库或者文件,然后去按照错误提示安装对应的库即可。例如我安装了以下几个:

    • apt-get install libelf-dev,解决缺少 gelf.h 头文件
    • apt-get install opensslapt-get install libssl-dev 解决缺少opensslv.h
    • 我这里由于 Makefile 文件的配置,make 的时候会将warning当作error,导致编译退出,所以通过vim编辑 Makefile,找到 KBUILD_CFLAGS 这个选项,添加 KBUILD_CFLAGS += -w 禁用将warning 当作 error
  9. make modules_install

  10. make install

  11. 前两步我没遇到什么坑,所以如果出错,请自己百度。成功之后,重启机器

  12. 重启之后,查看内核信息以及RDMA信息
    在这里插入图片描述

2.2、安装用户库

  1. 克隆用户库:git clone https://github.com/linux-rdma/rdma-core.git,如果连接不上,则执行git clone git://github.com/linux-rdma/rdma-core.git
  2. 安装 cmake,apt-get install cmake
  3. 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
  4. 进入 rdma_core目录,执行 bash build.sh
  5. 进入build目录,执行 make install

三、Ubuntu 18安装Soft Roce

由于Ubantu 18默认开启了Soft Roce支持,所以不需要重新编译内核,直接安装用户库即可。

  1. 安装 Ubuntu 18,sudo passwd root 设置root用户
  2. apt install git
  3. 安装用户库:apt-get install libibverbs-dev librdmacm-dev rdma-core
  4. apt install vim maven make g++
  5. 安装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}
  1. source /etc/profile,执行 java -version 和 javac,看是否有相应输出
  2. 如果此时显示的是 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
  1. 安装 java disni库:git clone https://github.com/zrlio/disni,如果连接不上,则用git clone git://github.com/zrlio/disni

  2. mvn -DskipTests install

  3. cd libdisni

  4. apt-get install autoconf automake libtool

  5. apt-get install libffi-dev

  6. ./autoprepare.sh

  7. ./configure --with-jdk=$JAVA_HOME
    在这里插入图片描述

  8. make install,如果提示缺少 jni.h 和 jni_mod.h 头文件,则执行以下命令:

    1. cp /usr/jdk1.8.0_301/include/jni.h /usr/include/
    2. cp /usr/jdk1.8.0_301/include/linux/jni_md.h /usr/include/
      在这里插入图片描述
  9. export LD_LIBRARY_PATH=/usr/local/lib

  10. cd ../target,从libdisni目录 进入disni目录下的target

  11. 启动 soft-roce ,首先 rxe_cfg start,再执行 rxe_cfg add ens33,注意最后的网卡名要和自己本机的网卡一致

  12. 执行 rxe_cfg status,显示如下:
    在这里插入图片描述

  13. 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地址

  14. 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

  15. 显示如下,则表示成功。
    在这里插入图片描述

引用

error: Can’t find expat.h. 缺libexpat1-dev库

sudo apt-get install libexpat1-dev
1
No package ‘pciaccess’ found


sudo apt-get install libpciaccess-dev
1
2
3
No package ‘libxml-2.0’ found

  apt-get install libxml2-dev
1
error: bison not found

sudo apt-get install bison
1
flex not found

sudo apt-get install flex
1
No module named mako

sudo apt-get install python-mako
1
No package ‘xcb-composite’ found
No package ‘xcursor’ found
No package ‘cairo-xcb’ found

sudo apt-get install libxcb-shm0-dev
sudo apt-get install xcb
sudo apt-get install libxcursor-dev
sudo apt-get install  libcairo2-dev
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值