xref: /dpdk/doc/guides/howto/lm_virtio_vhost_user.rst (revision c6dab2a873f65c5a4ea9735aa24d9539426adba4)
16993fe13SBernard Iremonger..  BSD LICENSE
26993fe13SBernard Iremonger    Copyright(c) 2016 Intel Corporation. All rights reserved.
36993fe13SBernard Iremonger    All rights reserved.
46993fe13SBernard Iremonger
56993fe13SBernard Iremonger    Redistribution and use in source and binary forms, with or without
66993fe13SBernard Iremonger    modification, are permitted provided that the following conditions
76993fe13SBernard Iremonger    are met:
86993fe13SBernard Iremonger
96993fe13SBernard Iremonger    * Redistributions of source code must retain the above copyright
106993fe13SBernard Iremonger    notice, this list of conditions and the following disclaimer.
116993fe13SBernard Iremonger    * Redistributions in binary form must reproduce the above copyright
126993fe13SBernard Iremonger    notice, this list of conditions and the following disclaimer in
136993fe13SBernard Iremonger    the documentation and/or other materials provided with the
146993fe13SBernard Iremonger    distribution.
156993fe13SBernard Iremonger    * Neither the name of Intel Corporation nor the names of its
166993fe13SBernard Iremonger    contributors may be used to endorse or promote products derived
176993fe13SBernard Iremonger    from this software without specific prior written permission.
186993fe13SBernard Iremonger
196993fe13SBernard Iremonger    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
206993fe13SBernard Iremonger    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
216993fe13SBernard Iremonger    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
226993fe13SBernard Iremonger    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
236993fe13SBernard Iremonger    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
246993fe13SBernard Iremonger    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
256993fe13SBernard Iremonger    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
266993fe13SBernard Iremonger    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
276993fe13SBernard Iremonger    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
286993fe13SBernard Iremonger    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
296993fe13SBernard Iremonger    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
306993fe13SBernard Iremonger
316993fe13SBernard Iremonger
326993fe13SBernard IremongerLive Migration of VM with Virtio on host running vhost_user
336993fe13SBernard Iremonger===========================================================
346993fe13SBernard Iremonger
356993fe13SBernard IremongerOverview
366993fe13SBernard Iremonger--------
376993fe13SBernard Iremonger
386993fe13SBernard IremongerLive Migration of a VM with DPDK Virtio PMD on a host which is
396993fe13SBernard Iremongerrunning the Vhost sample application (vhost-switch) and using the DPDK PMD (ixgbe or i40e).
406993fe13SBernard Iremonger
416993fe13SBernard IremongerThe Vhost sample application uses VMDQ so SRIOV must be disabled on the NIC's.
426993fe13SBernard Iremonger
436993fe13SBernard IremongerThe following sections show an example of how to do this migration.
446993fe13SBernard Iremonger
456993fe13SBernard IremongerTest Setup
466993fe13SBernard Iremonger----------
476993fe13SBernard Iremonger
486993fe13SBernard IremongerTo test the Live Migration two servers with identical operating systems installed are used.
496993fe13SBernard IremongerKVM and QEMU is also required on the servers.
506993fe13SBernard Iremonger
516993fe13SBernard IremongerQEMU 2.5 is required for Live Migration of a VM with vhost_user running on the hosts.
526993fe13SBernard Iremonger
536993fe13SBernard IremongerIn this example, the servers have Niantic and or Fortville NIC's installed.
546993fe13SBernard IremongerThe NIC's on both servers are connected to a switch
556993fe13SBernard Iremongerwhich is also connected to the traffic generator.
566993fe13SBernard Iremonger
576993fe13SBernard IremongerThe switch is configured to broadcast traffic on all the NIC ports.
586993fe13SBernard Iremonger
596993fe13SBernard IremongerThe ip address of host_server_1 is 10.237.212.46
606993fe13SBernard Iremonger
616993fe13SBernard IremongerThe ip address of host_server_2 is 10.237.212.131
626993fe13SBernard Iremonger
63931f3ca3SBernard Iremonger.. _figure_lm_vhost_user:
64931f3ca3SBernard Iremonger
65931f3ca3SBernard Iremonger.. figure:: img/lm_vhost_user.*
66931f3ca3SBernard Iremonger
676993fe13SBernard IremongerLive Migration steps
686993fe13SBernard Iremonger--------------------
696993fe13SBernard Iremonger
706993fe13SBernard IremongerThe sample scripts mentioned in the steps below can be found in the
716993fe13SBernard Iremonger:ref:`Sample host scripts <lm_virtio_vhost_user_host_scripts>` and
726993fe13SBernard Iremonger:ref:`Sample VM scripts <lm_virtio_vhost_user_vm_scripts>` sections.
736993fe13SBernard Iremonger
746993fe13SBernard IremongerOn host_server_1: Terminal 1
756993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
766993fe13SBernard Iremonger
776993fe13SBernard IremongerSetup DPDK on host_server_1
786993fe13SBernard Iremonger
796993fe13SBernard Iremonger.. code-block:: console
806993fe13SBernard Iremonger
816993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
826993fe13SBernard Iremonger   ./setup_dpdk_on_host.sh
836993fe13SBernard Iremonger
846993fe13SBernard IremongerOn host_server_1: Terminal 2
856993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
866993fe13SBernard Iremonger
876993fe13SBernard IremongerBind the Niantic or Fortville NIC to igb_uio on host_server_1.
886993fe13SBernard Iremonger
896993fe13SBernard IremongerFor Fortville NIC.
906993fe13SBernard Iremonger
916993fe13SBernard Iremonger.. code-block:: console
926993fe13SBernard Iremonger
93*c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
945d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:02:00.0
956993fe13SBernard Iremonger
966993fe13SBernard IremongerFor Niantic NIC.
976993fe13SBernard Iremonger
986993fe13SBernard Iremonger.. code-block:: console
996993fe13SBernard Iremonger
100*c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
1015d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:09:00.0
1026993fe13SBernard Iremonger
1036993fe13SBernard IremongerOn host_server_1: Terminal 3
1046993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1056993fe13SBernard Iremonger
1066993fe13SBernard IremongerFor Fortville and Niantic NIC's reset SRIOV and run the
1076993fe13SBernard Iremongervhost_user sample application (vhost-switch) on host_server_1.
1086993fe13SBernard Iremonger
1096993fe13SBernard Iremonger.. code-block:: console
1106993fe13SBernard Iremonger
1116993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1126993fe13SBernard Iremonger   ./reset_vf_on_212_46.sh
1136993fe13SBernard Iremonger   ./run_vhost_switch_on_host.sh
1146993fe13SBernard Iremonger
1156993fe13SBernard IremongerOn host_server_1: Terminal 1
1166993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1176993fe13SBernard Iremonger
1186993fe13SBernard IremongerStart the VM on host_server_1
1196993fe13SBernard Iremonger
1206993fe13SBernard Iremonger.. code-block:: console
1216993fe13SBernard Iremonger
1226993fe13SBernard Iremonger   ./vm_virtio_vhost_user.sh
1236993fe13SBernard Iremonger
1246993fe13SBernard IremongerOn host_server_1: Terminal 4
1256993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1266993fe13SBernard Iremonger
1276993fe13SBernard IremongerConnect to the QEMU monitor on host_server_1.
1286993fe13SBernard Iremonger
1296993fe13SBernard Iremonger.. code-block:: console
1306993fe13SBernard Iremonger
1316993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1326993fe13SBernard Iremonger   ./connect_to_qemu_mon_on_host.sh
1336993fe13SBernard Iremonger   (qemu)
1346993fe13SBernard Iremonger
1356993fe13SBernard IremongerOn host_server_1: Terminal 1
1366993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1376993fe13SBernard Iremonger
1386993fe13SBernard Iremonger**In VM on host_server_1:**
1396993fe13SBernard Iremonger
1406993fe13SBernard IremongerSetup DPDK in the VM and run testpmd in the VM.
1416993fe13SBernard Iremonger
1426993fe13SBernard Iremonger.. code-block:: console
1436993fe13SBernard Iremonger
1446993fe13SBernard Iremonger   cd /root/dpdk/vm_scripts
1456993fe13SBernard Iremonger   ./setup_dpdk_in_vm.sh
1466993fe13SBernard Iremonger   ./run_testpmd_in_vm.sh
1476993fe13SBernard Iremonger
1486993fe13SBernard Iremonger   testpmd> show port info all
1496993fe13SBernard Iremonger   testpmd> set fwd mac retry
1506993fe13SBernard Iremonger   testpmd> start tx_first
1516993fe13SBernard Iremonger   testpmd> show port stats all
1526993fe13SBernard Iremonger
1536993fe13SBernard IremongerVirtio traffic is seen at P1 and P2.
1546993fe13SBernard Iremonger
1556993fe13SBernard IremongerOn host_server_2: Terminal 1
1566993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1576993fe13SBernard Iremonger
1586993fe13SBernard IremongerSet up DPDK on the host_server_2.
1596993fe13SBernard Iremonger
1606993fe13SBernard Iremonger.. code-block:: console
1616993fe13SBernard Iremonger
1626993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1636993fe13SBernard Iremonger   ./setup_dpdk_on_host.sh
1646993fe13SBernard Iremonger
1656993fe13SBernard IremongerOn host_server_2: Terminal 2
1666993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1676993fe13SBernard Iremonger
1686993fe13SBernard IremongerBind the Niantic or Fortville NIC to igb_uio on host_server_2.
1696993fe13SBernard Iremonger
1706993fe13SBernard IremongerFor Fortville NIC.
1716993fe13SBernard Iremonger
1726993fe13SBernard Iremonger.. code-block:: console
1736993fe13SBernard Iremonger
174*c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
1755d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:03:00.0
1766993fe13SBernard Iremonger
1776993fe13SBernard IremongerFor Niantic NIC.
1786993fe13SBernard Iremonger
1796993fe13SBernard Iremonger.. code-block:: console
1806993fe13SBernard Iremonger
181*c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
1825d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:06:00.0
1836993fe13SBernard Iremonger
1846993fe13SBernard IremongerOn host_server_2: Terminal 3
1856993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1866993fe13SBernard Iremonger
1876993fe13SBernard IremongerFor Fortville and Niantic NIC's reset SRIOV, and run
1886993fe13SBernard Iremongerthe vhost_user sample application on host_server_2.
1896993fe13SBernard Iremonger
1906993fe13SBernard Iremonger.. code-block:: console
1916993fe13SBernard Iremonger
1926993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1936993fe13SBernard Iremonger   ./reset_vf_on_212_131.sh
1946993fe13SBernard Iremonger   ./run_vhost_switch_on_host.sh
1956993fe13SBernard Iremonger
1966993fe13SBernard IremongerOn host_server_2: Terminal 1
1976993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1986993fe13SBernard Iremonger
1996993fe13SBernard IremongerStart the VM on host_server_2.
2006993fe13SBernard Iremonger
2016993fe13SBernard Iremonger.. code-block:: console
2026993fe13SBernard Iremonger
2036993fe13SBernard Iremonger   ./vm_virtio_vhost_user_migrate.sh
2046993fe13SBernard Iremonger
2056993fe13SBernard IremongerOn host_server_2: Terminal 4
2066993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2076993fe13SBernard Iremonger
2086993fe13SBernard IremongerConnect to the QEMU monitor on host_server_2.
2096993fe13SBernard Iremonger
2106993fe13SBernard Iremonger.. code-block:: console
2116993fe13SBernard Iremonger
2126993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
2136993fe13SBernard Iremonger   ./connect_to_qemu_mon_on_host.sh
2146993fe13SBernard Iremonger   (qemu) info status
2156993fe13SBernard Iremonger   VM status: paused (inmigrate)
2166993fe13SBernard Iremonger   (qemu)
2176993fe13SBernard Iremonger
2186993fe13SBernard IremongerOn host_server_1: Terminal 4
2196993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2206993fe13SBernard Iremonger
2216993fe13SBernard IremongerCheck that switch is up before migrating the VM.
2226993fe13SBernard Iremonger
2236993fe13SBernard Iremonger.. code-block:: console
2246993fe13SBernard Iremonger
2256993fe13SBernard Iremonger   (qemu) migrate tcp:10.237.212.131:5555
2266993fe13SBernard Iremonger   (qemu) info status
2276993fe13SBernard Iremonger   VM status: paused (postmigrate)
2286993fe13SBernard Iremonger
2296993fe13SBernard Iremonger   (qemu) info migrate
2306993fe13SBernard Iremonger   capabilities: xbzrle: off rdma-pin-all: off auto-converge: off zero-blocks: off
2316993fe13SBernard Iremonger   Migration status: completed
2326993fe13SBernard Iremonger   total time: 11619 milliseconds
2336993fe13SBernard Iremonger   downtime: 5 milliseconds
2346993fe13SBernard Iremonger   setup: 7 milliseconds
2356993fe13SBernard Iremonger   transferred ram: 379699 kbytes
2366993fe13SBernard Iremonger   throughput: 267.82 mbps
2376993fe13SBernard Iremonger   remaining ram: 0 kbytes
2386993fe13SBernard Iremonger   total ram: 1590088 kbytes
2396993fe13SBernard Iremonger   duplicate: 303985 pages
2406993fe13SBernard Iremonger   skipped: 0 pages
2416993fe13SBernard Iremonger   normal: 94073 pages
2426993fe13SBernard Iremonger   normal bytes: 376292 kbytes
2436993fe13SBernard Iremonger   dirty sync count: 2
2446993fe13SBernard Iremonger   (qemu) quit
2456993fe13SBernard Iremonger
2466993fe13SBernard IremongerOn host_server_2: Terminal 1
2476993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2486993fe13SBernard Iremonger
2496993fe13SBernard Iremonger**In VM on host_server_2:**
2506993fe13SBernard Iremonger
2516993fe13SBernard Iremonger   Hit Enter key. This brings the user to the testpmd prompt.
2526993fe13SBernard Iremonger
2536993fe13SBernard Iremonger.. code-block:: console
2546993fe13SBernard Iremonger
2556993fe13SBernard Iremonger   testpmd>
2566993fe13SBernard Iremonger
2576993fe13SBernard IremongerOn host_server_2: Terminal 4
2586993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2596993fe13SBernard Iremonger
2606993fe13SBernard Iremonger**In QEMU monitor on host_server_2**
2616993fe13SBernard Iremonger
2626993fe13SBernard Iremonger.. code-block:: console
2636993fe13SBernard Iremonger
2646993fe13SBernard Iremonger   (qemu) info status
2656993fe13SBernard Iremonger   VM status: running
2666993fe13SBernard Iremonger
2676993fe13SBernard IremongerOn host_server_2: Terminal 1
2686993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2696993fe13SBernard Iremonger
2706993fe13SBernard Iremonger**In VM on host_server_2:**
2716993fe13SBernard Iremonger
2726993fe13SBernard Iremonger.. code-block:: console
2736993fe13SBernard Iremonger
2746993fe13SBernard Iremonger   testomd> show port info all
2756993fe13SBernard Iremonger   testpmd> show port stats all
2766993fe13SBernard Iremonger
2776993fe13SBernard IremongerVirtio traffic is seen at P0 and P1.
2786993fe13SBernard Iremonger
2796993fe13SBernard Iremonger
2806993fe13SBernard Iremonger.. _lm_virtio_vhost_user_host_scripts:
2816993fe13SBernard Iremonger
2826993fe13SBernard IremongerSample host scripts
2836993fe13SBernard Iremonger-------------------
2846993fe13SBernard Iremonger
2856993fe13SBernard Iremongerreset_vf_on_212_46.sh
2866993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~
2876993fe13SBernard Iremonger
2886993fe13SBernard Iremonger.. code-block:: sh
2896993fe13SBernard Iremonger
2906993fe13SBernard Iremonger   #!/bin/sh
2916993fe13SBernard Iremonger   # This script is run on the host 10.237.212.46 to reset SRIOV
2926993fe13SBernard Iremonger
2936993fe13SBernard Iremonger   # BDF for Fortville NIC is 0000:02:00.0
2946993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2956993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2966993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2976993fe13SBernard Iremonger
2986993fe13SBernard Iremonger   # BDF for Niantic NIC is 0000:09:00.0
2996993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
3006993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
3016993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
3026993fe13SBernard Iremonger
3036993fe13SBernard Iremongervm_virtio_vhost_user.sh
3046993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~
3056993fe13SBernard Iremonger
3066993fe13SBernard Iremonger.. code-block:: sh
3076993fe13SBernard Iremonger
3086993fe13SBernard Iremonger   #/bin/sh
3096993fe13SBernard Iremonger   # Script for use with vhost_user sample application
3106993fe13SBernard Iremonger   # The host system has 8 cpu's (0-7)
3116993fe13SBernard Iremonger
3126993fe13SBernard Iremonger   # Path to KVM tool
3136993fe13SBernard Iremonger   KVM_PATH="/usr/bin/qemu-system-x86_64"
3146993fe13SBernard Iremonger
3156993fe13SBernard Iremonger   # Guest Disk image
3166993fe13SBernard Iremonger   DISK_IMG="/home/user/disk_image/virt1_sml.disk"
3176993fe13SBernard Iremonger
3186993fe13SBernard Iremonger   # Number of guest cpus
3196993fe13SBernard Iremonger   VCPUS_NR="6"
3206993fe13SBernard Iremonger
3216993fe13SBernard Iremonger   # Memory
3226993fe13SBernard Iremonger   MEM=1024
3236993fe13SBernard Iremonger
3246993fe13SBernard Iremonger   VIRTIO_OPTIONS="csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off"
3256993fe13SBernard Iremonger
3266993fe13SBernard Iremonger   # Socket Path
3276993fe13SBernard Iremonger   SOCKET_PATH="/root/dpdk/host_scripts/usvhost"
3286993fe13SBernard Iremonger
3296993fe13SBernard Iremonger   taskset -c 2-7 $KVM_PATH \
3306993fe13SBernard Iremonger    -enable-kvm \
3316993fe13SBernard Iremonger    -m $MEM \
3326993fe13SBernard Iremonger    -smp $VCPUS_NR \
3336993fe13SBernard Iremonger    -object memory-backend-file,id=mem,size=1024M,mem-path=/mnt/huge,share=on \
3346993fe13SBernard Iremonger    -numa node,memdev=mem,nodeid=0 \
3356993fe13SBernard Iremonger    -cpu host \
3366993fe13SBernard Iremonger    -name VM1 \
3376993fe13SBernard Iremonger    -no-reboot \
3386993fe13SBernard Iremonger    -net none \
3396993fe13SBernard Iremonger    -vnc none \
3406993fe13SBernard Iremonger    -nographic \
3416993fe13SBernard Iremonger    -hda $DISK_IMG \
3426993fe13SBernard Iremonger    -chardev socket,id=chr0,path=$SOCKET_PATH \
3436993fe13SBernard Iremonger    -netdev type=vhost-user,id=net1,chardev=chr0,vhostforce \
3446993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3456993fe13SBernard Iremonger    -chardev socket,id=chr1,path=$SOCKET_PATH \
3466993fe13SBernard Iremonger    -netdev type=vhost-user,id=net2,chardev=chr1,vhostforce \
3476993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net2,mac=DD:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3486993fe13SBernard Iremonger    -monitor telnet::3333,server,nowait
3496993fe13SBernard Iremonger
3506993fe13SBernard Iremongerconnect_to_qemu_mon_on_host.sh
3516993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3526993fe13SBernard Iremonger
3536993fe13SBernard Iremonger.. code-block:: sh
3546993fe13SBernard Iremonger
3556993fe13SBernard Iremonger   #!/bin/sh
3566993fe13SBernard Iremonger   # This script is run on both hosts when the VM is up,
3576993fe13SBernard Iremonger   # to connect to the Qemu Monitor.
3586993fe13SBernard Iremonger
3596993fe13SBernard Iremonger   telnet 0 3333
3606993fe13SBernard Iremonger
3616993fe13SBernard Iremongerreset_vf_on_212_131.sh
3626993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~
3636993fe13SBernard Iremonger
3646993fe13SBernard Iremonger.. code-block:: sh
3656993fe13SBernard Iremonger
3666993fe13SBernard Iremonger   #!/bin/sh
3676993fe13SBernard Iremonger   # This script is run on the host 10.237.212.131 to reset SRIOV
3686993fe13SBernard Iremonger
3696993fe13SBernard Iremonger   # BDF for Ninatic NIC is 0000:06:00.0
3706993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3716993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3726993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3736993fe13SBernard Iremonger
3746993fe13SBernard Iremonger   # BDF for Fortville NIC is 0000:03:00.0
3756993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3766993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3776993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3786993fe13SBernard Iremonger
3796993fe13SBernard Iremongervm_virtio_vhost_user_migrate.sh
3806993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3816993fe13SBernard Iremonger
3826993fe13SBernard Iremonger.. code-block:: sh
3836993fe13SBernard Iremonger
3846993fe13SBernard Iremonger   #/bin/sh
3856993fe13SBernard Iremonger   # Script for use with vhost user sample application
3866993fe13SBernard Iremonger   # The host system has 8 cpu's (0-7)
3876993fe13SBernard Iremonger
3886993fe13SBernard Iremonger   # Path to KVM tool
3896993fe13SBernard Iremonger   KVM_PATH="/usr/bin/qemu-system-x86_64"
3906993fe13SBernard Iremonger
3916993fe13SBernard Iremonger   # Guest Disk image
3926993fe13SBernard Iremonger   DISK_IMG="/home/user/disk_image/virt1_sml.disk"
3936993fe13SBernard Iremonger
3946993fe13SBernard Iremonger   # Number of guest cpus
3956993fe13SBernard Iremonger   VCPUS_NR="6"
3966993fe13SBernard Iremonger
3976993fe13SBernard Iremonger   # Memory
3986993fe13SBernard Iremonger   MEM=1024
3996993fe13SBernard Iremonger
4006993fe13SBernard Iremonger   VIRTIO_OPTIONS="csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off"
4016993fe13SBernard Iremonger
4026993fe13SBernard Iremonger   # Socket Path
4036993fe13SBernard Iremonger   SOCKET_PATH="/root/dpdk/host_scripts/usvhost"
4046993fe13SBernard Iremonger
4056993fe13SBernard Iremonger   taskset -c 2-7 $KVM_PATH \
4066993fe13SBernard Iremonger    -enable-kvm \
4076993fe13SBernard Iremonger    -m $MEM \
4086993fe13SBernard Iremonger    -smp $VCPUS_NR \
4096993fe13SBernard Iremonger    -object memory-backend-file,id=mem,size=1024M,mem-path=/mnt/huge,share=on \
4106993fe13SBernard Iremonger    -numa node,memdev=mem,nodeid=0 \
4116993fe13SBernard Iremonger    -cpu host \
4126993fe13SBernard Iremonger    -name VM1 \
4136993fe13SBernard Iremonger    -no-reboot \
4146993fe13SBernard Iremonger    -net none \
4156993fe13SBernard Iremonger    -vnc none \
4166993fe13SBernard Iremonger    -nographic \
4176993fe13SBernard Iremonger    -hda $DISK_IMG \
4186993fe13SBernard Iremonger    -chardev socket,id=chr0,path=$SOCKET_PATH \
4196993fe13SBernard Iremonger    -netdev type=vhost-user,id=net1,chardev=chr0,vhostforce \
4206993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
4216993fe13SBernard Iremonger    -chardev socket,id=chr1,path=$SOCKET_PATH \
4226993fe13SBernard Iremonger    -netdev type=vhost-user,id=net2,chardev=chr1,vhostforce \
4236993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net2,mac=DD:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
4246993fe13SBernard Iremonger    -incoming tcp:0:5555 \
4256993fe13SBernard Iremonger    -monitor telnet::3333,server,nowait
4266993fe13SBernard Iremonger
4276993fe13SBernard Iremonger.. _lm_virtio_vhost_user_vm_scripts:
4286993fe13SBernard Iremonger
4296993fe13SBernard IremongerSample VM scripts
4306993fe13SBernard Iremonger-----------------
4316993fe13SBernard Iremonger
4326993fe13SBernard Iremongersetup_dpdk_virtio_in_vm.sh
4336993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~
4346993fe13SBernard Iremonger
4356993fe13SBernard Iremonger.. code-block:: sh
4366993fe13SBernard Iremonger
4376993fe13SBernard Iremonger   #!/bin/sh
4386993fe13SBernard Iremonger   # this script matches the vm_virtio_vhost_user script
4396993fe13SBernard Iremonger   # virtio port is 03
4406993fe13SBernard Iremonger   # virtio port is 04
4416993fe13SBernard Iremonger
4426993fe13SBernard Iremonger   cat  /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
4436993fe13SBernard Iremonger   echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
4446993fe13SBernard Iremonger   cat  /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
4456993fe13SBernard Iremonger
4466993fe13SBernard Iremonger   ifconfig -a
447*c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py --status
4486993fe13SBernard Iremonger
4496993fe13SBernard Iremonger   rmmod virtio-pci
4506993fe13SBernard Iremonger
4516993fe13SBernard Iremonger   modprobe uio
4526993fe13SBernard Iremonger   insmod /root/dpdk/x86_64-default-linuxapp-gcc/kmod/igb_uio.ko
4536993fe13SBernard Iremonger
454*c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0
455*c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:04.0
4566993fe13SBernard Iremonger
457*c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py --status
4586993fe13SBernard Iremonger
4596993fe13SBernard Iremongerrun_testpmd_in_vm.sh
4606993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~
4616993fe13SBernard Iremonger
4626993fe13SBernard Iremonger.. code-block:: sh
4636993fe13SBernard Iremonger
4646993fe13SBernard Iremonger   #!/bin/sh
4656993fe13SBernard Iremonger   # Run testpmd for use with vhost_user sample app.
4666993fe13SBernard Iremonger   # test system has 8 cpus (0-7), use cpus 2-7 for VM
4676993fe13SBernard Iremonger
4686993fe13SBernard Iremonger   /root/dpdk/x86_64-default-linuxapp-gcc/app/testpmd \
4696993fe13SBernard Iremonger   -c 3f -n 4 --socket-mem 350 -- --burst=64 --i --disable-hw-vlan-filter
470