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