summaryrefslogtreecommitdiffstats
path: root/ci/envs/setup_ovsdpdk.sh
blob: bd26dfbf6f92889e71df7f396f247b7daede98ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash

#############################################################################
#Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

source host-config
OVSLOGFILE="/usr/local/var/run/openvswitch/ovs-vswitchd.log"
HOME='/home/jenkins'
VSPERF="${HOME}/vswitchperf"

function install_ovsdpdk() {
 #Installing ovs dpdk using vsperf environment
 echo "Installing ovs dpdk using vsperf environment"
 install_vsperf
 setup_ovsdpdk
}
function install_vsperf() {
 echo "Installing vsperf....."
 ( cd $VSPERF/systems ; ./build_base_machine.sh )
 if [ ${?} -ne 0 ]; then
    echo "Execution of build_base_machine.sh failed"
    exit 1
 fi
}
function setup_ovsdpdk() {
 sudo mkdir -p /usr/local/var/run/openvswitch
 sudo mkdir -p /usr/local/etc/openvswitch
 sudo modprobe openvswitch

 #Kill the ovsswitch and ovsdbserver
 cd $VSPERF/src/ovs/ovs
 ps aux | grep 'ovsdb-server.pid' | awk '{print $2}' | head -1 | xargs kill -SIGTERM
 ps aux | grep 'ovs-vswitchd.pid' | awk '{print $2}' | head -1 | xargs kill -SIGTERM
 kill -SIGTERM 39424

 rm -f /usr/local/var/run/openvswitch/vhost-user*
 rm -f /usr/local/etc/openvswitch/conf.db

 #Start database server
 echo "Start ovs database server"
 export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
 cd $VSPERF/src/ovs/ovs/ovsdb
 sudo ./ovsdb-tool create /usr/local/etc/openvswitch/conf.db $VSPERF/src/ovs/ovs/vswitchd/vswitch.ovsschema
 if [ ${?} -ne 0 ] ; then
    echo "Creation of db and schema files failed"
    exit 1
 fi
 sudo ./ovsdb-server --remote=punix:$DB_SOCK --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
 if [ ${?} -ne 0 ] ; then
    echo "Starting of DB server failed"
    exit 1
 fi
 #Start OVS
 echo "Start OVS"
 cd $VSPERF/src/ovs/ovs/utilities
 sudo ./ovs-vsctl --no-wait init
 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=0xf
 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem=1024
 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
 
 echo "Setting Huge pages on Node0"
 node0_pages=10
 node0_dir="/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages"
 node0_pages+=`cat $node0_dir`
 echo ${node0_pages} > ${node0_dir}

 echo "Setting Huge pages on Node1"
 node1_pages=10
 node1_dir="/sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages"
 node1_pages+=`cat $node1_dir`
 echo ${node1_pages} > ${node1_dir}

 free_hp0=`cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages`
 free_hp1=`cat /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/free_hugepages`
 echo "Free Hugepages:${free_hp0}"
 echo "Free_Hugepages:${free_hp1}"

 cd $VSPERF/src/ovs/ovs/vswitchd
 sudo ./ovs-vswitchd unix:$DB_SOCK --pidfile --detach --log-file=$OVSLOGFILE
 if [ ${?} -ne 0 ] ; then
    echo "ovs-vswitchd not started"
    exit 1
 fi
 sleep 180
 #Configure the bridge
 echo "configure OVS Bridge"
 cd $VSPERF/src/ovs/ovs/utilities
 sudo ./ovs-vsctl add-br ovsbr0 -- set bridge ovsbr0 datapath_type=netdev
 sudo ./ovs-vsctl add-port ovsbr0 vhost-user1 -- set Interface vhost-user1 type=dpdkvhostuser
 sudo ./ovs-vsctl add-port ovsbr0 vhost-user2 -- set Interface vhost-user2 type=dpdkvhostuser
 sudo ./ovs-vsctl add-port ovsbr0 vhost-user3 -- set Interface vhost-user3 type=dpdkvhostuser
 sudo ./ovs-vsctl add-port ovsbr0 vhost-user4 -- set Interface vhost-user4 type=dpdkvhostuser
}
install_ovsdpdk