From 1ea5c5239f9003f9cb8492f1d5b00a75724a7180 Mon Sep 17 00:00:00 2001 From: Martin Klozik Date: Thu, 18 Aug 2016 12:00:44 +0100 Subject: cuse: Remove vHost Cuse support 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 Reviewed-by: Maryam Tahhan Reviewed-by: Al Morton Reviewed-by: Christian Trautman Reviewed-by: Bill Michalowski --- ci/build-vsperf.sh | 10 +----- conf/00_common.conf | 5 +-- docs/release/NEWS.rst | 6 +++- docs/userguide/testusage.rst | 27 +--------------- src/Makefile | 2 +- src/dpdk/Makefile | 4 --- src/ovs/Makefile | 4 --- tools/functions.py | 9 ------ tools/opnfvdashboard/opnfvdashboard.py | 34 +++++++++----------- vnfs/qemu/qemu.py | 2 +- vnfs/qemu/qemu_dpdk_vhost_cuse.py | 58 ---------------------------------- vsperf | 5 +-- vswitches/ovs_dpdk_vhost.py | 26 +++++---------- 13 files changed, 34 insertions(+), 158 deletions(-) delete mode 100644 vnfs/qemu/qemu_dpdk_vhost_cuse.py diff --git a/ci/build-vsperf.sh b/ci/build-vsperf.sh index 8fb69072..a02de009 100755 --- a/ci/build-vsperf.sh +++ b/ci/build-vsperf.sh @@ -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" diff --git a/conf/00_common.conf b/conf/00_common.conf index 944619c5..fe4e1f5d 100644 --- a/conf/00_common.conf +++ b/conf/00_common.conf @@ -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/') # ############################ diff --git a/docs/release/NEWS.rst b/docs/release/NEWS.rst index 47ede0a3..a259870b 100644 --- a/docs/release/NEWS.rst +++ b/docs/release/NEWS.rst @@ -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 diff --git a/docs/userguide/testusage.rst b/docs/userguide/testusage.rst index 0c6e189d..9eeddc27 100755 --- a/docs/userguide/testusage.rst +++ b/docs/userguide/testusage.rst @@ -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=/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=/10_custom.conf diff --git a/src/Makefile b/src/Makefile index 42970288..fbc2e711 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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 diff --git a/src/dpdk/Makefile b/src/dpdk/Makefile index 69255f75..1cd85e3e 100755 --- a/src/dpdk/Makefile +++ b/src/dpdk/Makefile @@ -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) diff --git a/src/ovs/Makefile b/src/ovs/Makefile index 384d6993..ee15c521 100644 --- a/src/ovs/Makefile +++ b/src/ovs/Makefile @@ -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) diff --git a/tools/functions.py b/tools/functions.py index 5079a9f0..60ed0802 100644 --- a/tools/functions.py +++ b/tools/functions.py @@ -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'))) diff --git a/tools/opnfvdashboard/opnfvdashboard.py b/tools/opnfvdashboard/opnfvdashboard.py index e7a47e50..6f53526d 100644 --- a/tools/opnfvdashboard/opnfvdashboard.py +++ b/tools/opnfvdashboard/opnfvdashboard.py @@ -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 diff --git a/vnfs/qemu/qemu.py b/vnfs/qemu/qemu.py index 02ada4b5..b5eaddc3 100644 --- a/vnfs/qemu/qemu.py +++ b/vnfs/qemu/qemu.py @@ -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 index ab4fec84..00000000 --- a/vnfs/qemu/qemu_dpdk_vhost_cuse.py +++ /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 1f693a55..e942b84d 100755 --- 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 diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py index 39c8b633..cebc14b2 100644 --- a/vswitches/ovs_dpdk_vhost.py +++ b/vswitches/ovs_dpdk_vhost.py @@ -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) -- cgit 1.2.3-korg