xref: /dpdk/doc/guides/howto/lm_virtio_vhost_user.rst (revision de34aaa96be969bb919b98891af18ed0c435625d)
15630257fSFerruh Yigit..  SPDX-License-Identifier: BSD-3-Clause
25630257fSFerruh Yigit    Copyright(c) 2016 Intel Corporation.
36993fe13SBernard Iremonger
46993fe13SBernard IremongerLive Migration of VM with Virtio on host running vhost_user
56993fe13SBernard Iremonger===========================================================
66993fe13SBernard Iremonger
76993fe13SBernard IremongerOverview
86993fe13SBernard Iremonger--------
96993fe13SBernard Iremonger
106993fe13SBernard IremongerLive Migration of a VM with DPDK Virtio PMD on a host which is
116993fe13SBernard Iremongerrunning the Vhost sample application (vhost-switch) and using the DPDK PMD (ixgbe or i40e).
126993fe13SBernard Iremonger
136993fe13SBernard IremongerThe Vhost sample application uses VMDQ so SRIOV must be disabled on the NIC's.
146993fe13SBernard Iremonger
156993fe13SBernard IremongerThe following sections show an example of how to do this migration.
166993fe13SBernard Iremonger
176993fe13SBernard IremongerTest Setup
186993fe13SBernard Iremonger----------
196993fe13SBernard Iremonger
206993fe13SBernard IremongerTo test the Live Migration two servers with identical operating systems installed are used.
216993fe13SBernard IremongerKVM and QEMU is also required on the servers.
226993fe13SBernard Iremonger
236993fe13SBernard IremongerQEMU 2.5 is required for Live Migration of a VM with vhost_user running on the hosts.
246993fe13SBernard Iremonger
256993fe13SBernard IremongerIn this example, the servers have Niantic and or Fortville NIC's installed.
266993fe13SBernard IremongerThe NIC's on both servers are connected to a switch
276993fe13SBernard Iremongerwhich is also connected to the traffic generator.
286993fe13SBernard Iremonger
296993fe13SBernard IremongerThe switch is configured to broadcast traffic on all the NIC ports.
306993fe13SBernard Iremonger
316993fe13SBernard IremongerThe ip address of host_server_1 is 10.237.212.46
326993fe13SBernard Iremonger
336993fe13SBernard IremongerThe ip address of host_server_2 is 10.237.212.131
346993fe13SBernard Iremonger
35931f3ca3SBernard Iremonger.. _figure_lm_vhost_user:
36931f3ca3SBernard Iremonger
37931f3ca3SBernard Iremonger.. figure:: img/lm_vhost_user.*
38931f3ca3SBernard Iremonger
396993fe13SBernard IremongerLive Migration steps
406993fe13SBernard Iremonger--------------------
416993fe13SBernard Iremonger
426993fe13SBernard IremongerThe sample scripts mentioned in the steps below can be found in the
436993fe13SBernard Iremonger:ref:`Sample host scripts <lm_virtio_vhost_user_host_scripts>` and
446993fe13SBernard Iremonger:ref:`Sample VM scripts <lm_virtio_vhost_user_vm_scripts>` sections.
456993fe13SBernard Iremonger
466993fe13SBernard IremongerOn host_server_1: Terminal 1
476993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
486993fe13SBernard Iremonger
496993fe13SBernard IremongerSetup DPDK on host_server_1
506993fe13SBernard Iremonger
516993fe13SBernard Iremonger.. code-block:: console
526993fe13SBernard Iremonger
536993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
546993fe13SBernard Iremonger   ./setup_dpdk_on_host.sh
556993fe13SBernard Iremonger
566993fe13SBernard IremongerOn host_server_1: Terminal 2
576993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
586993fe13SBernard Iremonger
596993fe13SBernard IremongerBind the Niantic or Fortville NIC to igb_uio on host_server_1.
606993fe13SBernard Iremonger
616993fe13SBernard IremongerFor Fortville NIC.
626993fe13SBernard Iremonger
636993fe13SBernard Iremonger.. code-block:: console
646993fe13SBernard Iremonger
65c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
665d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:02:00.0
676993fe13SBernard Iremonger
686993fe13SBernard IremongerFor Niantic NIC.
696993fe13SBernard Iremonger
706993fe13SBernard Iremonger.. code-block:: console
716993fe13SBernard Iremonger
72c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
735d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:09:00.0
746993fe13SBernard Iremonger
756993fe13SBernard IremongerOn host_server_1: Terminal 3
766993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
776993fe13SBernard Iremonger
786993fe13SBernard IremongerFor Fortville and Niantic NIC's reset SRIOV and run the
796993fe13SBernard Iremongervhost_user sample application (vhost-switch) on host_server_1.
806993fe13SBernard Iremonger
816993fe13SBernard Iremonger.. code-block:: console
826993fe13SBernard Iremonger
836993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
846993fe13SBernard Iremonger   ./reset_vf_on_212_46.sh
856993fe13SBernard Iremonger   ./run_vhost_switch_on_host.sh
866993fe13SBernard Iremonger
876993fe13SBernard IremongerOn host_server_1: Terminal 1
886993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
896993fe13SBernard Iremonger
906993fe13SBernard IremongerStart the VM on host_server_1
916993fe13SBernard Iremonger
926993fe13SBernard Iremonger.. code-block:: console
936993fe13SBernard Iremonger
946993fe13SBernard Iremonger   ./vm_virtio_vhost_user.sh
956993fe13SBernard Iremonger
966993fe13SBernard IremongerOn host_server_1: Terminal 4
976993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
986993fe13SBernard Iremonger
996993fe13SBernard IremongerConnect to the QEMU monitor on host_server_1.
1006993fe13SBernard Iremonger
1016993fe13SBernard Iremonger.. code-block:: console
1026993fe13SBernard Iremonger
1036993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1046993fe13SBernard Iremonger   ./connect_to_qemu_mon_on_host.sh
1056993fe13SBernard Iremonger   (qemu)
1066993fe13SBernard Iremonger
1076993fe13SBernard IremongerOn host_server_1: Terminal 1
1086993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1096993fe13SBernard Iremonger
1106993fe13SBernard Iremonger**In VM on host_server_1:**
1116993fe13SBernard Iremonger
1126993fe13SBernard IremongerSetup DPDK in the VM and run testpmd in the VM.
1136993fe13SBernard Iremonger
1146993fe13SBernard Iremonger.. code-block:: console
1156993fe13SBernard Iremonger
1166993fe13SBernard Iremonger   cd /root/dpdk/vm_scripts
1176993fe13SBernard Iremonger   ./setup_dpdk_in_vm.sh
1186993fe13SBernard Iremonger   ./run_testpmd_in_vm.sh
1196993fe13SBernard Iremonger
1206993fe13SBernard Iremonger   testpmd> show port info all
1216993fe13SBernard Iremonger   testpmd> set fwd mac retry
1226993fe13SBernard Iremonger   testpmd> start tx_first
1236993fe13SBernard Iremonger   testpmd> show port stats all
1246993fe13SBernard Iremonger
1256993fe13SBernard IremongerVirtio traffic is seen at P1 and P2.
1266993fe13SBernard Iremonger
1276993fe13SBernard IremongerOn host_server_2: Terminal 1
1286993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1296993fe13SBernard Iremonger
1306993fe13SBernard IremongerSet up DPDK on the host_server_2.
1316993fe13SBernard Iremonger
1326993fe13SBernard Iremonger.. code-block:: console
1336993fe13SBernard Iremonger
1346993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1356993fe13SBernard Iremonger   ./setup_dpdk_on_host.sh
1366993fe13SBernard Iremonger
1376993fe13SBernard IremongerOn host_server_2: Terminal 2
1386993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1396993fe13SBernard Iremonger
1406993fe13SBernard IremongerBind the Niantic or Fortville NIC to igb_uio on host_server_2.
1416993fe13SBernard Iremonger
1426993fe13SBernard IremongerFor Fortville NIC.
1436993fe13SBernard Iremonger
1446993fe13SBernard Iremonger.. code-block:: console
1456993fe13SBernard Iremonger
146c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
1475d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:03:00.0
1486993fe13SBernard Iremonger
1496993fe13SBernard IremongerFor Niantic NIC.
1506993fe13SBernard Iremonger
1516993fe13SBernard Iremonger.. code-block:: console
1526993fe13SBernard Iremonger
153c6dab2a8SThomas Monjalon   cd /root/dpdk/usertools
1545d75454cSPablo de Lara   ./dpdk-devbind.py -b igb_uio 0000:06:00.0
1556993fe13SBernard Iremonger
1566993fe13SBernard IremongerOn host_server_2: Terminal 3
1576993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1586993fe13SBernard Iremonger
1596993fe13SBernard IremongerFor Fortville and Niantic NIC's reset SRIOV, and run
1606993fe13SBernard Iremongerthe vhost_user sample application on host_server_2.
1616993fe13SBernard Iremonger
1626993fe13SBernard Iremonger.. code-block:: console
1636993fe13SBernard Iremonger
1646993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1656993fe13SBernard Iremonger   ./reset_vf_on_212_131.sh
1666993fe13SBernard Iremonger   ./run_vhost_switch_on_host.sh
1676993fe13SBernard Iremonger
1686993fe13SBernard IremongerOn host_server_2: Terminal 1
1696993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1706993fe13SBernard Iremonger
1716993fe13SBernard IremongerStart the VM on host_server_2.
1726993fe13SBernard Iremonger
1736993fe13SBernard Iremonger.. code-block:: console
1746993fe13SBernard Iremonger
1756993fe13SBernard Iremonger   ./vm_virtio_vhost_user_migrate.sh
1766993fe13SBernard Iremonger
1776993fe13SBernard IremongerOn host_server_2: Terminal 4
1786993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1796993fe13SBernard Iremonger
1806993fe13SBernard IremongerConnect to the QEMU monitor on host_server_2.
1816993fe13SBernard Iremonger
1826993fe13SBernard Iremonger.. code-block:: console
1836993fe13SBernard Iremonger
1846993fe13SBernard Iremonger   cd /root/dpdk/host_scripts
1856993fe13SBernard Iremonger   ./connect_to_qemu_mon_on_host.sh
1866993fe13SBernard Iremonger   (qemu) info status
1876993fe13SBernard Iremonger   VM status: paused (inmigrate)
1886993fe13SBernard Iremonger   (qemu)
1896993fe13SBernard Iremonger
1906993fe13SBernard IremongerOn host_server_1: Terminal 4
1916993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1926993fe13SBernard Iremonger
1936993fe13SBernard IremongerCheck that switch is up before migrating the VM.
1946993fe13SBernard Iremonger
1956993fe13SBernard Iremonger.. code-block:: console
1966993fe13SBernard Iremonger
1976993fe13SBernard Iremonger   (qemu) migrate tcp:10.237.212.131:5555
1986993fe13SBernard Iremonger   (qemu) info status
1996993fe13SBernard Iremonger   VM status: paused (postmigrate)
2006993fe13SBernard Iremonger
2016993fe13SBernard Iremonger   (qemu) info migrate
2026993fe13SBernard Iremonger   capabilities: xbzrle: off rdma-pin-all: off auto-converge: off zero-blocks: off
2036993fe13SBernard Iremonger   Migration status: completed
2046993fe13SBernard Iremonger   total time: 11619 milliseconds
2056993fe13SBernard Iremonger   downtime: 5 milliseconds
2066993fe13SBernard Iremonger   setup: 7 milliseconds
2076993fe13SBernard Iremonger   transferred ram: 379699 kbytes
2086993fe13SBernard Iremonger   throughput: 267.82 mbps
2096993fe13SBernard Iremonger   remaining ram: 0 kbytes
2106993fe13SBernard Iremonger   total ram: 1590088 kbytes
2116993fe13SBernard Iremonger   duplicate: 303985 pages
2126993fe13SBernard Iremonger   skipped: 0 pages
2136993fe13SBernard Iremonger   normal: 94073 pages
2146993fe13SBernard Iremonger   normal bytes: 376292 kbytes
2156993fe13SBernard Iremonger   dirty sync count: 2
2166993fe13SBernard Iremonger   (qemu) quit
2176993fe13SBernard Iremonger
2186993fe13SBernard IremongerOn host_server_2: Terminal 1
2196993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2206993fe13SBernard Iremonger
2216993fe13SBernard Iremonger**In VM on host_server_2:**
2226993fe13SBernard Iremonger
2236993fe13SBernard Iremonger   Hit Enter key. This brings the user to the testpmd prompt.
2246993fe13SBernard Iremonger
2256993fe13SBernard Iremonger.. code-block:: console
2266993fe13SBernard Iremonger
2276993fe13SBernard Iremonger   testpmd>
2286993fe13SBernard Iremonger
2296993fe13SBernard IremongerOn host_server_2: Terminal 4
2306993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2316993fe13SBernard Iremonger
2326993fe13SBernard Iremonger**In QEMU monitor on host_server_2**
2336993fe13SBernard Iremonger
2346993fe13SBernard Iremonger.. code-block:: console
2356993fe13SBernard Iremonger
2366993fe13SBernard Iremonger   (qemu) info status
2376993fe13SBernard Iremonger   VM status: running
2386993fe13SBernard Iremonger
2396993fe13SBernard IremongerOn host_server_2: Terminal 1
2406993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2416993fe13SBernard Iremonger
2426993fe13SBernard Iremonger**In VM on host_server_2:**
2436993fe13SBernard Iremonger
2446993fe13SBernard Iremonger.. code-block:: console
2456993fe13SBernard Iremonger
246d629b7b5SJohn McNamara   testpmd> show port info all
2476993fe13SBernard Iremonger   testpmd> show port stats all
2486993fe13SBernard Iremonger
2496993fe13SBernard IremongerVirtio traffic is seen at P0 and P1.
2506993fe13SBernard Iremonger
2516993fe13SBernard Iremonger
2526993fe13SBernard Iremonger.. _lm_virtio_vhost_user_host_scripts:
2536993fe13SBernard Iremonger
2546993fe13SBernard IremongerSample host scripts
2556993fe13SBernard Iremonger-------------------
2566993fe13SBernard Iremonger
2576993fe13SBernard Iremongerreset_vf_on_212_46.sh
2586993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~
2596993fe13SBernard Iremonger
2606993fe13SBernard Iremonger.. code-block:: sh
2616993fe13SBernard Iremonger
2626993fe13SBernard Iremonger   #!/bin/sh
2636993fe13SBernard Iremonger   # This script is run on the host 10.237.212.46 to reset SRIOV
2646993fe13SBernard Iremonger
2656993fe13SBernard Iremonger   # BDF for Fortville NIC is 0000:02:00.0
2666993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2676993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2686993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
2696993fe13SBernard Iremonger
2706993fe13SBernard Iremonger   # BDF for Niantic NIC is 0000:09:00.0
2716993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
2726993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
2736993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:09\:00.0/max_vfs
2746993fe13SBernard Iremonger
2756993fe13SBernard Iremongervm_virtio_vhost_user.sh
2766993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~
2776993fe13SBernard Iremonger
2786993fe13SBernard Iremonger.. code-block:: sh
2796993fe13SBernard Iremonger
2806993fe13SBernard Iremonger   #/bin/sh
2816993fe13SBernard Iremonger   # Script for use with vhost_user sample application
2826993fe13SBernard Iremonger   # The host system has 8 cpu's (0-7)
2836993fe13SBernard Iremonger
2846993fe13SBernard Iremonger   # Path to KVM tool
2856993fe13SBernard Iremonger   KVM_PATH="/usr/bin/qemu-system-x86_64"
2866993fe13SBernard Iremonger
2876993fe13SBernard Iremonger   # Guest Disk image
2886993fe13SBernard Iremonger   DISK_IMG="/home/user/disk_image/virt1_sml.disk"
2896993fe13SBernard Iremonger
2906993fe13SBernard Iremonger   # Number of guest cpus
2916993fe13SBernard Iremonger   VCPUS_NR="6"
2926993fe13SBernard Iremonger
2936993fe13SBernard Iremonger   # Memory
2946993fe13SBernard Iremonger   MEM=1024
2956993fe13SBernard Iremonger
2966993fe13SBernard Iremonger   VIRTIO_OPTIONS="csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off"
2976993fe13SBernard Iremonger
2986993fe13SBernard Iremonger   # Socket Path
2996993fe13SBernard Iremonger   SOCKET_PATH="/root/dpdk/host_scripts/usvhost"
3006993fe13SBernard Iremonger
3016993fe13SBernard Iremonger   taskset -c 2-7 $KVM_PATH \
3026993fe13SBernard Iremonger    -enable-kvm \
3036993fe13SBernard Iremonger    -m $MEM \
3046993fe13SBernard Iremonger    -smp $VCPUS_NR \
3056993fe13SBernard Iremonger    -object memory-backend-file,id=mem,size=1024M,mem-path=/mnt/huge,share=on \
3066993fe13SBernard Iremonger    -numa node,memdev=mem,nodeid=0 \
3076993fe13SBernard Iremonger    -cpu host \
3086993fe13SBernard Iremonger    -name VM1 \
3096993fe13SBernard Iremonger    -no-reboot \
3106993fe13SBernard Iremonger    -net none \
3116993fe13SBernard Iremonger    -vnc none \
3126993fe13SBernard Iremonger    -nographic \
3136993fe13SBernard Iremonger    -hda $DISK_IMG \
3146993fe13SBernard Iremonger    -chardev socket,id=chr0,path=$SOCKET_PATH \
3156993fe13SBernard Iremonger    -netdev type=vhost-user,id=net1,chardev=chr0,vhostforce \
3166993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3176993fe13SBernard Iremonger    -chardev socket,id=chr1,path=$SOCKET_PATH \
3186993fe13SBernard Iremonger    -netdev type=vhost-user,id=net2,chardev=chr1,vhostforce \
3196993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net2,mac=DD:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3206993fe13SBernard Iremonger    -monitor telnet::3333,server,nowait
3216993fe13SBernard Iremonger
3226993fe13SBernard Iremongerconnect_to_qemu_mon_on_host.sh
3236993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3246993fe13SBernard Iremonger
3256993fe13SBernard Iremonger.. code-block:: sh
3266993fe13SBernard Iremonger
3276993fe13SBernard Iremonger   #!/bin/sh
3286993fe13SBernard Iremonger   # This script is run on both hosts when the VM is up,
3296993fe13SBernard Iremonger   # to connect to the Qemu Monitor.
3306993fe13SBernard Iremonger
3316993fe13SBernard Iremonger   telnet 0 3333
3326993fe13SBernard Iremonger
3336993fe13SBernard Iremongerreset_vf_on_212_131.sh
3346993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~
3356993fe13SBernard Iremonger
3366993fe13SBernard Iremonger.. code-block:: sh
3376993fe13SBernard Iremonger
3386993fe13SBernard Iremonger   #!/bin/sh
3396993fe13SBernard Iremonger   # This script is run on the host 10.237.212.131 to reset SRIOV
3406993fe13SBernard Iremonger
341d629b7b5SJohn McNamara   # BDF for Niantic NIC is 0000:06:00.0
3426993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3436993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3446993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs
3456993fe13SBernard Iremonger
3466993fe13SBernard Iremonger   # BDF for Fortville NIC is 0000:03:00.0
3476993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3486993fe13SBernard Iremonger   echo 0 > /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3496993fe13SBernard Iremonger   cat /sys/bus/pci/devices/0000\:03\:00.0/max_vfs
3506993fe13SBernard Iremonger
3516993fe13SBernard Iremongervm_virtio_vhost_user_migrate.sh
3526993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3536993fe13SBernard Iremonger
3546993fe13SBernard Iremonger.. code-block:: sh
3556993fe13SBernard Iremonger
3566993fe13SBernard Iremonger   #/bin/sh
3576993fe13SBernard Iremonger   # Script for use with vhost user sample application
3586993fe13SBernard Iremonger   # The host system has 8 cpu's (0-7)
3596993fe13SBernard Iremonger
3606993fe13SBernard Iremonger   # Path to KVM tool
3616993fe13SBernard Iremonger   KVM_PATH="/usr/bin/qemu-system-x86_64"
3626993fe13SBernard Iremonger
3636993fe13SBernard Iremonger   # Guest Disk image
3646993fe13SBernard Iremonger   DISK_IMG="/home/user/disk_image/virt1_sml.disk"
3656993fe13SBernard Iremonger
3666993fe13SBernard Iremonger   # Number of guest cpus
3676993fe13SBernard Iremonger   VCPUS_NR="6"
3686993fe13SBernard Iremonger
3696993fe13SBernard Iremonger   # Memory
3706993fe13SBernard Iremonger   MEM=1024
3716993fe13SBernard Iremonger
3726993fe13SBernard Iremonger   VIRTIO_OPTIONS="csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off"
3736993fe13SBernard Iremonger
3746993fe13SBernard Iremonger   # Socket Path
3756993fe13SBernard Iremonger   SOCKET_PATH="/root/dpdk/host_scripts/usvhost"
3766993fe13SBernard Iremonger
3776993fe13SBernard Iremonger   taskset -c 2-7 $KVM_PATH \
3786993fe13SBernard Iremonger    -enable-kvm \
3796993fe13SBernard Iremonger    -m $MEM \
3806993fe13SBernard Iremonger    -smp $VCPUS_NR \
3816993fe13SBernard Iremonger    -object memory-backend-file,id=mem,size=1024M,mem-path=/mnt/huge,share=on \
3826993fe13SBernard Iremonger    -numa node,memdev=mem,nodeid=0 \
3836993fe13SBernard Iremonger    -cpu host \
3846993fe13SBernard Iremonger    -name VM1 \
3856993fe13SBernard Iremonger    -no-reboot \
3866993fe13SBernard Iremonger    -net none \
3876993fe13SBernard Iremonger    -vnc none \
3886993fe13SBernard Iremonger    -nographic \
3896993fe13SBernard Iremonger    -hda $DISK_IMG \
3906993fe13SBernard Iremonger    -chardev socket,id=chr0,path=$SOCKET_PATH \
3916993fe13SBernard Iremonger    -netdev type=vhost-user,id=net1,chardev=chr0,vhostforce \
3926993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3936993fe13SBernard Iremonger    -chardev socket,id=chr1,path=$SOCKET_PATH \
3946993fe13SBernard Iremonger    -netdev type=vhost-user,id=net2,chardev=chr1,vhostforce \
3956993fe13SBernard Iremonger    -device virtio-net-pci,netdev=net2,mac=DD:BB:BB:BB:BB:BB,$VIRTIO_OPTIONS \
3966993fe13SBernard Iremonger    -incoming tcp:0:5555 \
3976993fe13SBernard Iremonger    -monitor telnet::3333,server,nowait
3986993fe13SBernard Iremonger
3996993fe13SBernard Iremonger.. _lm_virtio_vhost_user_vm_scripts:
4006993fe13SBernard Iremonger
4016993fe13SBernard IremongerSample VM scripts
4026993fe13SBernard Iremonger-----------------
4036993fe13SBernard Iremonger
4046993fe13SBernard Iremongersetup_dpdk_virtio_in_vm.sh
4056993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~~~
4066993fe13SBernard Iremonger
4076993fe13SBernard Iremonger.. code-block:: sh
4086993fe13SBernard Iremonger
4096993fe13SBernard Iremonger   #!/bin/sh
4106993fe13SBernard Iremonger   # this script matches the vm_virtio_vhost_user script
4116993fe13SBernard Iremonger   # virtio port is 03
4126993fe13SBernard Iremonger   # virtio port is 04
4136993fe13SBernard Iremonger
414*de34aaa9SThomas Monjalon   /root/dpdk/usertools/dpdk-hugepages.py --show
415*de34aaa9SThomas Monjalon   /root/dpdk/usertools/dpdk-hugepages.py --setup 2G
416*de34aaa9SThomas Monjalon   /root/dpdk/usertools/dpdk-hugepages.py --show
4176993fe13SBernard Iremonger
4186993fe13SBernard Iremonger   ifconfig -a
419c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py --status
4206993fe13SBernard Iremonger
4216993fe13SBernard Iremonger   rmmod virtio-pci
4226993fe13SBernard Iremonger
4236993fe13SBernard Iremonger   modprobe uio
42456bb5841SThomas Monjalon   insmod igb_uio.ko
4256993fe13SBernard Iremonger
426c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0
427c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:04.0
4286993fe13SBernard Iremonger
429c6dab2a8SThomas Monjalon   /root/dpdk/usertools/dpdk-devbind.py --status
4306993fe13SBernard Iremonger
4316993fe13SBernard Iremongerrun_testpmd_in_vm.sh
4326993fe13SBernard Iremonger~~~~~~~~~~~~~~~~~~~~
4336993fe13SBernard Iremonger
4346993fe13SBernard Iremonger.. code-block:: sh
4356993fe13SBernard Iremonger
4366993fe13SBernard Iremonger   #!/bin/sh
4376993fe13SBernard Iremonger   # Run testpmd for use with vhost_user sample app.
4386993fe13SBernard Iremonger   # test system has 8 cpus (0-7), use cpus 2-7 for VM
4396993fe13SBernard Iremonger
44079238624SCiara Power   /root/dpdk/<build_dir>/app/dpdk-testpmd \
4418b9bd0efSMoti Haimovsky   -l 0-5 -n 4 --socket-mem 350 -- --burst=64 --i
442