Uploaded image for project: 'VinePerf'
  1. VinePerf
  2. VINEPERF-382

Multiarch support

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Minor Minor
    • Future Release
    • None
    • None

      vswitchperf has a few hardcodes for "x86_64", which prevent easy porting vswitchperf on other archictectures, like "i686" or "aarch64".

      I pushed two very small changes [1, 2], which will most probably be abandoned and merged into a bigger change later.

      Martin did a very nice overview analysis of the problems we expect to encounter while working on multiarch support:

      "Thanks for looking at platform dependency issues. However to make vsperf independent on x86_64 platform will require changes at other places too. It would be good to solve them within one patch.

      I can see x86_64 hardcoded in following files:
      solved - ./ci/build-vsperf.sh: sudo killall -9 qemu-system-x86_64 &> /dev/null
      solved - ./ci/build-vsperf.sh: if pgrep qemu-system-x86_64 &> /dev/null ; then
      solved - ./ci/build-vsperf.sh: sudo killall -9 qemu-system-x86_64 &> /dev/null
      ./conf/00_common.conf: 'qemu-system' : 'qemu-system-x86_64'},
      ./conf/02_vswitch.conf:RTE_TARGET = 'x86_64-native-linuxapp-gcc'
      ./conf/04_vnf.conf:QEMU_BIN = os.path.join(QEMU_DIR, 'x86_64-softmmu/qemu-system-x86_64')
      ./conf/05_collector.conf:PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64']
      ./conf/06_pktfwd.conf:PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64', 'testpmd']
      ./src/dpdk/Makefile:# v1.2.3r0-v1.6.0r2 - configuration inside config/defconfig_x86_64-default-linuxapp-gcc
      ./src/dpdk/Makefile: DPDK_TARGET = x86_64-native-linuxapp-gcc
      ./src/dpdk/Makefile: DPDK_TARGET = x86_64-default-linuxapp-gcc
      ./src/dpdk/Makefile: CONFIG_FILE_LINUXAPP = $(WORK_DIR)/config/defconfig_x86_64-default-linuxapp-gcc
      ./src/dpdk/Makefile: DPDK_TARGET = x86_64-native-linuxapp-gcc
      ./src/dpdk/Makefile: DPDK_TARGET = x86_64-native-linuxapp-gcc
      ./src/ovs/Makefile:DPDK_TARGET = x86_64-native-linuxapp-gcc
      ./src/qemu/Makefile:CONFIG_CMD += --target-list="x86_64-softmmu" --python="/usr/bin/python"
      ./systems/centos/build_base_machine.sh:wget https://www.softwarecollections.org/en/scls/rhscl/python33/epel-7-x86_64/download/rhscl-python33-epel-7-x86_64.noarch.rpm
      ./systems/centos/build_base_machine.sh:rpm -i rhscl-python33-epel-7-x86_64.noarch.rpm
      solved - ./systems/ubuntu/build_base_machine.sh:cd /lib/x86_64-linux-gnu
      solved - ./systems/ubuntu/build_base_machine.sh:cd /usr/lib/x86_64-linux-gnu

      However in case of qemu binary name it won't be that simple. I'm currently working on patch, which will allow to execute any qemu binary, which might be complied for different platform (i386?). So for example function for getting pids for monitored processes has to be rewritten. It currently uses 'pidof', which doesn't accept regex, so we would probably need to change it to 'pgrep', etc.
      Best Regards,
      "

      [1] https://gerrit.opnfv.org/gerrit/#/c/19593/
      [2] https://gerrit.opnfv.org/gerrit/#/c/19595/

            Unassigned Unassigned
            AlexandruAvadanii Alexandru Avadanii
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: