cuse: Remove vHost Cuse support 59/18959/2
authorMartin Klozik <martinx.klozik@intel.com>
Thu, 18 Aug 2016 11:00:44 +0000 (12:00 +0100)
committerMartin Klozik <martinx.klozik@intel.com>
Thu, 18 Aug 2016 13:19:17 +0000 (14:19 +0100)
Support of vHost Cuse interface is not supported
by OVS anymore, so it was removed also from VSPERF.
Cuse can be used with older VSPERF release if needed.

JIRA: VSPERF-376

Change-Id: Id786bddf5fa9dce5706a93de7b089707a60317cd
Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Christian Trautman <ctrautma@redhat.com>
Reviewed-by: Bill Michalowski <bmichalo@redhat.com>
13 files changed:
ci/build-vsperf.sh
conf/00_common.conf
docs/release/NEWS.rst
docs/userguide/testusage.rst
src/Makefile
src/dpdk/Makefile
src/ovs/Makefile
tools/functions.py
tools/opnfvdashboard/opnfvdashboard.py
vnfs/qemu/qemu.py
vnfs/qemu/qemu_dpdk_vhost_cuse.py [deleted file]
vsperf
vswitches/ovs_dpdk_vhost.py

index 8fb6907..a02de00 100755 (executable)
@@ -129,7 +129,7 @@ function print_results() {
 
 # execute tests and display results
 # parameters:
-#   $1 - vswitch and vnf combination, one of OVS_vanilla, OVS_with_DPDK_and_vHost_Cuse, OVS_with_DPDK_and_vHost_User
+#   $1 - vswitch and vnf combination, one of OVS_vanilla, OVS_with_DPDK_and_vHost_User
 #   $2 - CI job type, one of verify, merge, daily
 function execute_vsperf() {
     # figure out list of TCs and execution parameters
@@ -163,14 +163,6 @@ function execute_vsperf() {
             echo "$VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE"
             $VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE
             ;;
-        "OVS_with_DPDK_and_vHost_Cuse")
-            # figure out log file name
-            LOG_SUBDIR="OvsDpdkVhostCuse"
-            LOG_FILE="${LOG_FILE_PREFIX}_${LOG_SUBDIR}_${DATE_SUFFIX}.log"
-
-            echo "$VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE"
-            $VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE
-            ;;
         *)
             # figure out log file name
             LOG_SUBDIR="OvsDpdkVhost"
index 944619c..fe4e1f5 100644 (file)
@@ -39,13 +39,10 @@ SYSMETRICS_DIR = os.path.join(ROOT_DIR, 'tools/collectors')
 # deployment specific paths to OVS and DPDK
 OVS_DIR_VANILLA = os.path.join(ROOT_DIR, 'src_vanilla/ovs/ovs/')
 
-RTE_SDK_CUSE = os.path.join(ROOT_DIR, 'src_cuse/dpdk/dpdk/')
-OVS_DIR_CUSE = os.path.join(ROOT_DIR, 'src_cuse/ovs/ovs/')
-
 RTE_SDK_USER = os.path.join(ROOT_DIR, 'src/dpdk/dpdk/')
 OVS_DIR_USER = os.path.join(ROOT_DIR, 'src/ovs/ovs/')
 
-# the same qemu version is used for vanilla, vHost User and Cuse
+# the same qemu version is used for vanilla and vHost User
 QEMU_DIR = os.path.join(ROOT_DIR, 'src/qemu/qemu/')
 
 # ############################
index 47ede0a..a259870 100644 (file)
@@ -2,6 +2,10 @@
 .. http://creativecommons.org/licenses/by/4.0
 .. (c) OPNFV, Intel Corporation, AT&T and others.
 
+OPNFV D Release
+===============
+* Remove support for vhost cuse
+
 OPNFV Colorado Release
 ======================
 * Support for DPDK v16.07
@@ -99,7 +103,7 @@ September 2015
 ==============
 
 - Implementation of system statistics based upon pidstat command line tool.
-- Support of PVVP deployment scenario using bhost-cuse and vhost user access
+- Support of PVVP deployment scenario using vhost-cuse and vhost user access
   methods
 
 August 2015
index 0c6e189..9eeddc2 100755 (executable)
@@ -61,10 +61,8 @@ The 'make' builds all options in src:
 
 * Vanilla OVS
 * OVS with vhost_user as the guest access method (with DPDK support)
-* OVS with vhost_cuse s the guest access method (with DPDK support)
 
 The vhost_user build will reside in src/ovs/
-The vhost_cuse build will reside in vswitchperf/src_cuse
 The Vanilla OVS build will reside in vswitchperf/src_vanilla
 
 To delete a src subdirectory and its contents to allow you to re-clone simply
@@ -237,7 +235,7 @@ To run tests using vhost-user as guest access method:
 
 .. code-block:: console
 
-   VHOST_METHOD='user'
+   VSWITCH = 'OvsDpdkVhost'
    VNF = 'QemuDpdkVhost'
 
 2. If needed, recompile src for all OVS variants
@@ -250,29 +248,6 @@ To run tests using vhost-user as guest access method:
 
 3. Run test:
 
-.. code-block:: console
-
-     $ ./vsperf --conf-file=<path_to_custom_conf>/10_custom.conf
-
-To run tests using vhost-cuse as guest access method:
-
-1. Set VHOST_METHOD and VNF of your settings file to:
-
-.. code-block:: console
-
-     VHOST_METHOD='cuse'
-     VNF = 'QemuDpdkVhostCuse'
-
-2. If needed, recompile src for all OVS variants
-
-.. code-block:: console
-
-     $ cd src
-     $ make distclean
-     $ make
-
-3. Run test:
-
 .. code-block:: console
 
      $ ./vsperf --conf-file=<path_to_custom_conf>/10_custom.conf
index 4297028..fbc2e71 100644 (file)
@@ -19,7 +19,7 @@
 # Contributors:
 #   Aihua Li, Huawei Technologies.
 
-SUBBUILDS = src_cuse src_vanilla
+SUBBUILDS = src_vanilla
 .PHONY: vhost subbuilds $(SUBBUILDS)
 
 all clean distclean: vhost subbuilds
index 69255f7..1cd85e3 100755 (executable)
@@ -30,7 +30,6 @@ ifndef VHOST_USER
 endif
 WORK_DIR = dpdk
 TAG_DONE_FLAG = $(WORK_DIR)/.$(DPDK_TAG).tag.done
-DPDK_CUSE = ../../src_cuse/dpdk
 
 # VHOST configuration options are stored in different files based on DPDK version
 # v1.2.3r0-v1.6.0r2 - configuration inside config/defconfig_x86_64-default-linuxapp-gcc
@@ -99,7 +98,6 @@ clean:
        $(AT)cd $(WORK_DIR) && git clean -xfd *.o
 clobber:
        $(AT)rm -rf $(WORK_DIR)
-       $(AT)rm -rf $(DPDK_CUSE)
 
 # distclean is for developer who would like to keep the
 # clone git repo, saving time to fetch again from url
@@ -114,8 +112,6 @@ sanity:
 
 $(WORK_DIR):
        $(AT)git clone $(DPDK_URL)
-       $(AT)mkdir -p $(DPDK_CUSE)
-       $(AT)cp -rf ./* $(DPDK_CUSE)
 
 $(TAG_DONE_FLAG): $(WORK_DIR)
        $(AT)cd $(WORK_DIR); git checkout $(DPDK_TAG)
index 384d699..ee15c52 100644 (file)
@@ -27,7 +27,6 @@ TAG_DONE_FLAG = $(WORK_DIR)/.$(OVS_TAG).done
 CONFIG_CMD =
 CONFIG_CMD += ./configure
 OVS_VANILLA = ../../src_vanilla/ovs
-OVS_CUSE = ../../src_cuse/ovs
 
 # If WITH_LINUX is defined, OVS is built without DPDK but with kernel
 # module
@@ -90,7 +89,6 @@ clean:
 clobber:
        $(AT)rm -rf $(WORK_DIR)
        $(AT)rm -rf $(OVS_VANILLA)
-       $(AT)rm -rf $(OVS_CUSE)
 
 # distclean is for developer who would like to keep the
 # clone git repo, saving time to fetch again from url
@@ -116,8 +114,6 @@ $(WORK_DIR):
        $(AT)git clone $(OVS_URL)
        $(AT)mkdir -p $(OVS_VANILLA)
        $(AT)cp -rf ./* $(OVS_VANILLA)
-       $(AT)mkdir -p $(OVS_CUSE)
-       $(AT)cp -rf ./* $(OVS_CUSE)
 
 $(TAG_DONE_FLAG): $(WORK_DIR)
        $(AT)cd ovs; git checkout $(OVS_TAG)
index 5079a9f..60ed080 100644 (file)
@@ -28,15 +28,6 @@ def settings_update_paths():
     if settings.getValue('VSWITCH').endswith('Vanilla'):
         # settings paths for Vanilla
         settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_VANILLA')))
-    elif settings.getValue('VSWITCH').endswith('Vhost'):
-        if settings.getValue('VNF').endswith('Cuse'):
-            # settings paths for Cuse
-            settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_CUSE')))
-            settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_CUSE')))
-        else:
-            # settings paths for VhostUser
-            settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
-            settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
     else:
         # default - set to VHOST USER but can be changed during enhancement
         settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
index e7a47e5..6f53526 100644 (file)
@@ -91,34 +91,30 @@ def _generate_test_name(testcase, int_data):
     """
     the method generates testcase name for releng
     """
-    cuse = int_data['cuse']
     vanilla = int_data['vanilla']
     res_name = ""
 
-    names = {'phy2phy_tput': ["tput_ovsdpdk", "tput_ovsdpdk", "tput_ovs"],
-             'back2back': ["b2b_ovsdpdk", "b2b_ovsdpdk", "b2b_ovs"],
-             'phy2phy_tput_mod_vlan': ["tput_mod_vlan_ovsdpdk", "tput_mod_vlan_ovsdpdk", "tput_mod_vlan_ovs"],
-             'phy2phy_cont': ["cont_ovsdpdk", "cont_ovsdpdk", "cont_ovs"],
-             'pvp_cont': ["pvp_cont_ovsdpdkuser", "pvp_cont_ovsdpdkcuse", "pvp_cont_ovsvirtio"],
-             'pvvp_cont': ["pvvp_cont_ovsdpdkuser", "pvvp_cont_ovsdpdkcuse", "pvvp_cont_ovsvirtio"],
-             'phy2phy_scalability': ["scalability_ovsdpdk", "scalability_ovsdpdk", "scalability_ovs"],
-             'pvp_tput': ["pvp_tput_ovsdpdkuser", "pvp_tput_ovsdpdkcuse", "pvp_tput_ovsvirtio"],
-             'pvp_back2back': ["pvp_b2b_ovsdpdkuser", "pvp_b2b_ovsdpdkcuse", "pvp_b2b_ovsvirtio"],
-             'pvvp_tput': ["pvvp_tput_ovsdpdkuser", "pvvp_tput_ovsdpdkcuse", "pvvp_tput_ovsvirtio"],
-             'pvvp_back2back': ["pvvp_b2b_ovsdpdkuser", "pvvp_b2b_ovsdpdkcuse", "pvvp_b2b_ovsvirtio"],
-             'phy2phy_cpu_load': ["cpu_load_ovsdpdk", "cpu_load_ovsdpdk", "cpu_load_ovs"],
-             'phy2phy_mem_load': ["mem_load_ovsdpdk", "mem_load_ovsdpdk", "mem_load_ovs"]}
+    names = {'phy2phy_tput': ["tput_ovsdpdk", "tput_ovs"],
+             'back2back': ["b2b_ovsdpdk", "b2b_ovs"],
+             'phy2phy_tput_mod_vlan': ["tput_mod_vlan_ovsdpdk", "tput_mod_vlan_ovs"],
+             'phy2phy_cont': ["cont_ovsdpdk", "cont_ovs"],
+             'pvp_cont': ["pvp_cont_ovsdpdkuser", "pvp_cont_ovsvirtio"],
+             'pvvp_cont': ["pvvp_cont_ovsdpdkuser", "pvvp_cont_ovsvirtio"],
+             'phy2phy_scalability': ["scalability_ovsdpdk", "scalability_ovs"],
+             'pvp_tput': ["pvp_tput_ovsdpdkuser", "pvp_tput_ovsvirtio"],
+             'pvp_back2back': ["pvp_b2b_ovsdpdkuser", "pvp_b2b_ovsvirtio"],
+             'pvvp_tput': ["pvvp_tput_ovsdpdkuser", "pvvp_tput_ovsvirtio"],
+             'pvvp_back2back': ["pvvp_b2b_ovsdpdkuser", "pvvp_b2b_ovsvirtio"],
+             'phy2phy_cpu_load': ["cpu_load_ovsdpdk", "cpu_load_ovs"],
+             'phy2phy_mem_load': ["mem_load_ovsdpdk", "mem_load_ovs"]}
 
     for name, name_list in names.items():
         if name != testcase:
             continue
         if vanilla == True:
-            res_name = name_list[2]
+            res_name = name_list[1]
         else:
-            if cuse == True:
-                res_name = name_list[1]
-            else:
-                res_name = name_list[0]
+            res_name = name_list[0]
         break
 
     return res_name
index 02ada4b..b5eaddc 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Automation of QEMU hypervisor for launching vhost-cuse enabled guests.
+"""Automation of QEMU hypervisor for launching guests.
 """
 
 import os
diff --git a/vnfs/qemu/qemu_dpdk_vhost_cuse.py b/vnfs/qemu/qemu_dpdk_vhost_cuse.py
deleted file mode 100644 (file)
index ab4fec8..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2015 Intel Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Automation of QEMU hypervisor for launching vhost-cuse enabled guests.
-"""
-
-import logging
-
-from conf import settings as S
-from vnfs.qemu.qemu import IVnfQemu
-
-class QemuDpdkVhostCuse(IVnfQemu):
-    """
-    Control an instance of QEMU with vHost cuse guest communication.
-    """
-    def __init__(self):
-        """
-        Initialisation function.
-        """
-        super(QemuDpdkVhostCuse, self).__init__()
-        self._logger = logging.getLogger(__name__)
-
-        # calculate indexes of guest devices (e.g. charx, dpdkvhostuserx)
-        i = self._number * 2
-        if1 = str(i)
-        if2 = str(i + 1)
-        net1 = 'net' + str(i + 1)
-        net2 = 'net' + str(i + 2)
-
-        self._cmd += ['-netdev',
-                      'type=tap,id=' + net1 + ',script=no,downscript=no,' +
-                      'ifname=dpdkvhostcuse' + if1 + ',vhost=on',
-                      '-device',
-                      'virtio-net-pci,mac=' +
-                      S.getValue('GUEST_NET1_MAC')[self._number] +
-                      ',netdev=' + net1 + ',csum=off,gso=off,' +
-                      'guest_tso4=off,guest_tso6=off,guest_ecn=off',
-                      '-netdev',
-                      'type=tap,id=' + net2 +
-                      ',script=no,downscript=no,' +
-                      'ifname=dpdkvhostcuse' + if2 + ',vhost=on',
-                      '-device',
-                      'virtio-net-pci,mac=' +
-                      S.getValue('GUEST_NET2_MAC')[self._number] +
-                      ',netdev=' + net2 + ',csum=off,gso=off,' +
-                      'guest_tso4=off,guest_tso6=off,guest_ecn=off',
-                     ]
diff --git a/vsperf b/vsperf
index 1f693a5..e942b84 100755 (executable)
--- a/vsperf
+++ b/vsperf
@@ -680,16 +680,13 @@ def main():
             opnfv_url = settings.getValue('OPNFV_URL')
             pkg_list = settings.getValue('PACKAGE_LIST')
 
-            int_data = {'cuse': False,
-                        'vanilla': False,
+            int_data = {'vanilla': False,
                         'pod': pod_name,
                         'installer': installer_name,
                         'pkg_list': pkg_list,
                         'db_url': opnfv_url}
             if settings.getValue('VSWITCH').endswith('Vanilla'):
                 int_data['vanilla'] = True
-            if settings.getValue('VNF').endswith('Cuse'):
-                int_data['cuse'] = True
             opnfvdashboard.results2opnfv_dashboard(results_path, int_data)
 
     # cleanup before exit
index 39c8b63..cebc14b 100644 (file)
@@ -50,10 +50,6 @@ class OvsDpdkVhost(IVSwitchOvs):
             else:
                 self._vswitchd_args = vswitchd_args
 
-        if settings.getValue('VNF').endswith('Cuse'):
-            self._logger.info("Inserting VHOST Cuse modules into kernel...")
-            dpdk.insert_vhost_modules()
-
     def configure(self):
         """ Configure vswitchd DPDK options through ovsdb if needed
         """
@@ -131,20 +127,14 @@ class OvsDpdkVhost(IVSwitchOvs):
         from 0
         """
         bridge = self._bridges[switch_name]
-        # Changed dpdkvhost to dpdkvhostuser to be able to run in Qemu 2.2
-        if settings.getValue('VNF').endswith('Cuse'):
-            vhost_count = self._get_port_count('type=dpdkvhostcuse')
-            port_name = 'dpdkvhostcuse' + str(vhost_count)
-            params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostcuse']
-        else:
-            vhost_count = self._get_port_count('type=dpdkvhostuser')
-            port_name = 'dpdkvhostuser' + str(vhost_count)
-            params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostuser']
-            # multi queue enable
-            if int(settings.getValue('VSWITCH_MULTI_QUEUES')) and \
-                    not settings.getValue('OVS_OLD_STYLE_MQ'):
-                params += ['options:n_rxq={}'.format(
-                    settings.getValue('VSWITCH_MULTI_QUEUES'))]
+        vhost_count = self._get_port_count('type=dpdkvhostuser')
+        port_name = 'dpdkvhostuser' + str(vhost_count)
+        params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostuser']
+        # multi queue enable
+        if int(settings.getValue('VSWITCH_MULTI_QUEUES')) and \
+                not settings.getValue('OVS_OLD_STYLE_MQ'):
+            params += ['options:n_rxq={}'.format(
+                settings.getValue('VSWITCH_MULTI_QUEUES'))]
         of_port = bridge.add_port(port_name, params)
 
         return (port_name, of_port)