aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryexin <yexin13@huawei.com>2018-07-28 11:55:13 +0800
committeryexin <yexin13@huawei.com>2018-08-01 11:36:48 +0800
commitbf279a4aa50a94c64087936bde5bd3e6f1618c21 (patch)
treee0a1b451ec293019156f3ce195046cbc5539c025
parent97bf4e9ca99f1343288cbe0e2fafdaee1cb6fc8b (diff)
Fix: disable dpdk1802 KNI mode by default
Change-Id: Ie36d2c50514f6c66b12f2b3920d60f9315e2320e Signed-off-by: yexin <yexin13@huawei.com>
-rw-r--r--doc/Build_DMM.md102
-rwxr-xr-xscripts/build_dpdk1802.sh10
2 files changed, 61 insertions, 51 deletions
diff --git a/doc/Build_DMM.md b/doc/Build_DMM.md
index 58bd6b8..b74d5fb 100644
--- a/doc/Build_DMM.md
+++ b/doc/Build_DMM.md
@@ -1,105 +1,109 @@
-# 1. Introduction:
+# 1. Introduction
+
The purpose of this document is to illustrate how to build DMM and run applications on it.
Note:
Users can easily build DMM by running DMM/scripts/build.sh, which contains following steps.
-# 2. Build DPDK:
+# 2. Build DPDK
+
DPDK needs to be built first for DMM RTE memory dependency.
-- Steps :
+- Steps:
Download dpdk-18.02.tar.xz from DPDK release, you can get it from [http://static.dpdk.org/rel](http://static.dpdk.org/rel)
-```
- #wget http://static.dpdk.org/rel/dpdk-18.02.tar.xz
- #tar xvf dpdk-18.02.tar.xz
- #vi dpdk-18.02/config/common_base
+
+```sh
+ wget http://static.dpdk.org/rel/dpdk-18.02.tar.xz
+ tar xvf dpdk-18.02.tar.xz
+ vi dpdk-18.02/config/common_base
//make CONFIG_RTE_BUILD_SHARED_LIB=y, CONFIG_RTE_EXEC_ENV=y, CONFIG_RTE_LIBRTE_EAL=y, CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"
- #cd dpdk-18.02
- #make install T=x86_64-native-linuxapp-gcc DESTDIR=/usr -j 4
- #cd x86_64-native-linuxapp-gcc
- #make //install the dpdk which will generate .so inside lib folder in the path.
- #mkdir -p /tmp/dpdk/drivers/
- #cp -f /usr/lib/librte_mempool_ring.so /tmp/dpdk/drivers/
+ cd dpdk-18.02
+ make install T=x86_64-native-linuxapp-gcc DESTDIR=/usr -j 4
+ cd x86_64-native-linuxapp-gcc
+ make # install the dpdk which will generate .so inside lib folder in the path.
+ mkdir -p /tmp/dpdk/drivers/
+ cp -f /usr/lib/librte_mempool_ring.so /tmp/dpdk/drivers/
```
Note:
+ Under certain kernel versions (e.g. v3.10.0 adopted by CentOS 7.5), compiling DPDK with default
+ configuration will encounter errors like below.
+ `error: unknown field 'ndo_change_mtu' specified in initializer .no_change_mtu = kni_net_change_mtu`
+ This is caused by `kni` compiling, disable `kni` in dpdk config file will figure it out.
+ Actually, we have tested ubuntu 14.04 ~ 16.04, CentOS 7.2, and they worked well.
- Environment:
- Linux ubuntu 16.04 or some distro which support dpdk-18.02
-
-# 3. Build DMM:
+# 3. Build DMM
-```
- #cd $(DMM_DIR)/thirdparty/glog/glog-0.3.4/ && autoreconf -ivf
- #cd $(DMM_DIR)/build
- #cmake ..
+```sh
+ cd $(DMM_DIR)/thirdparty/glog/glog-0.3.4/ && autoreconf -ivf
+ cd $(DMM_DIR)/build
+ cmake ..
```
Note:
$(DMM_DIR) is the directory where dmm has been cloned.
After cmake all the makefiles and dependent .sh files will be copied under build directory.
+```sh
+ make -j 8
```
- #make -j 8
-```
+
Then we can get libnStackAPI.so
For centos we can use the command 'make pkg-rpm' to generate the rpm package in release/rpm.
-# 4. Build rsocket:
+# 4. Build rsocket
+```sh
+ cd $(DMM_DIR)/build
+ make dmm_rsocket
```
- #cd $(DMM_DIR)/build
- #make dmm_rsocket
-```
+
Note:
Make sure Mellanox OFED has been installed in your computer, or run the following command before compiling
+```sh
+ cd $DMM_DIR/stacks/rsocket
+ #Take ubuntu16.04 as an example, the tgz file has the format MLNX_OFED_LINUX-<ver>-<OS label><CPU arch>.tgz
+ wget http://www.mellanox.com/downloads/ofed/MLNX_OFED-4.4-1.0.0.0/MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ tar -zxvf MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ cd MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64
+ ./mlnxofedinstall --force
```
- #cd $DMM_DIR/stacks/rsocket
- //Take ubuntu16.04 as an example, the tgz file has the format MLNX_OFED_LINUX-<ver>-<OS label><CPU arch>.tgz
- #wget http://www.mellanox.com/downloads/ofed/MLNX_OFED-4.4-1.0.0.0/MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
- #tar -zxvf MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
- #cd MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64
- #./mlnxofedinstall --force
-```
-
-# 5. Env Setting:
+# 5. Env Setting
- Hugepage setting:
-```
- #sudo sysctl -w vm.nr_hugepages=1024
+```sh
+ sudo sysctl -w vm.nr_hugepages=1024
```
Check hugepage info
-
-```
- #cat /proc/meminfo
+```sh
+ cat /proc/meminfo
```
- Mount hugepages:
-```
- #sudo mkdir -p /mnt/nstackhuge/
- #sudo mount -t hugetlbfs -o pagesize=2M none /mnt/nstackhuge/
- #sudo mkdir -p /var/run/ip_module
+```sh
+ sudo mkdir -p /mnt/nstackhuge/
+ sudo mount -t hugetlbfs -o pagesize=2M none /mnt/nstackhuge/
+ sudo mkdir -p /var/run/ip_module
```
-
# 6. Biuld and Run the APP
- Link the app with the lib **libnStackAPI.so** first, you can refer to app_example/perf-test
- Enable detail log of nstack by setting env var
-```
- #export LD_LIBRARY_PATH=/dmm/release/lib64
- #export NSTACK_LOG_ON=DBG
+```sh
+ export LD_LIBRARY_PATH=/dmm/release/lib64
+ export NSTACK_LOG_ON=DBG
```
- Copy and update the module_config.json, rd_config.json into the same folder of app
diff --git a/scripts/build_dpdk1802.sh b/scripts/build_dpdk1802.sh
index 6430aed..6f2008c 100755
--- a/scripts/build_dpdk1802.sh
+++ b/scripts/build_dpdk1802.sh
@@ -1,3 +1,4 @@
+#!/bin/bash -x
#########################################################################
#
# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
@@ -13,11 +14,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#########################################################################
-#!/bin/bash -x
echo "check whether dpdk installed"
cur_directory=${PWD}
-check_dpdk=$(rpm -qa | grep dpdk)
+check_dpdk=$(rpm -qa | grep dpdk-devel)
if [ -z "$check_dpdk" ]; then
echo "system will install the dpdk"
else
@@ -56,6 +56,12 @@ sed -i '83a sed -i '\''s!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_
sed -i '84a sed -i '\''s!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1'\'' config/common_base' dpdk.spec
sed -i '85a sed -i '\''s!CONFIG_RTE_EAL_PMD_PATH=.*!CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"!1'\'' config/common_base' dpdk.spec
+#disable KNI mode by default
+sed -i '93a sed -ri '\''s!CONFIG_RTE_LIBRARY_KNI=.*!CONFIG_RTE_LIBRARY_KNI=n!1'\'' %{target}/.config' dpdk.spec
+sed -i '94a sed -ri '\''s!CONFIG_RTE_LIBRARY_PMD_KNI=.*!CONFIG_RTE_LIBRARY_PMD_KNI=n!1'\'' %{target}/.config' dpdk.spec
+sed -i '95a sed -ri '\''s!CONFIG_RTE_KNI_KMOD=.*!CONFIG_RTE_KNI_KMOD=n!1'\'' %{target}/.config' dpdk.spec
+sed -i '96a sed -ri '\''s!CONFIG_RTE_KNI_PREEMPT_DEFAULT=.*!CONFIG_RTE_KNI_PREEMPT_DEFAULT=n!1'\'' %{target}/.config' dpdk.spec
+
echo "build the dependence"
#sudo yum-builddep -y dpdk.spec
sudo yum install -y libpcap-devel python-sphinx inkscape