numam-spdk/test/vhost/fiotest
Dariusz Stojaczyk 542b541588 vhost_scsi: implemented abstract vhost event layer
Implemented abstract vhost event layer on top of virtio eventq.
This allows us to defer virtio-event-related actions to be called from
the vhost poller thread. This is required for hot-attach, for which
io_channels have to be created on the I/O thread.

This adds full support for hot-attaching and hot-detaching vhost scsi
devices. They can be now attached to a controller via RPC at any time.

Change-Id: Icf353bfcf69c83ef16b8fc771ea4c487002094f9
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/370016
Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-07-20 13:19:26 -04:00
..
fio_jobs vhost/test: change data verification method to md5 2017-03-07 13:19:10 +01:00
autotest.config test/vhost: simplify autotest.config 2017-05-02 15:16:51 -07:00
autotest.sh vhost_scsi: implemented abstract vhost event layer 2017-07-20 13:19:26 -04:00
common.sh test/vhost: remove tee pipe from vhost start command 2017-07-13 19:18:18 -04:00
README vhost: add a library and app for userspace vhost-scsi processing 2017-03-06 12:44:35 -07:00
run_fio.py vhost_test: cleanup fiotest python script 2017-03-15 09:01:06 -07:00
run_vhost.sh vhost: add a library and app for userspace vhost-scsi processing 2017-03-06 12:44:35 -07:00
vhost.conf.in log: Remove configurable log facility 2017-07-05 19:28:29 -04:00
vm_run.sh vhost: add a library and app for userspace vhost-scsi processing 2017-03-06 12:44:35 -07:00
vm_setup.sh test/vhost: add vhost block option to fiotest 2017-07-10 19:18:16 -04:00
vm_shutdown.sh vhost: add a library and app for userspace vhost-scsi processing 2017-03-06 12:44:35 -07:00
vm_ssh.sh vhost: add a library and app for userspace vhost-scsi processing 2017-03-06 12:44:35 -07:00

Overview
---
Utility scripts for automated FIO tests of virtual machines.
Virtualization is done using QEMU software.

Requirements
---
- 'fio' and 'perf' packages must be installed in order for tests to run
- Installed fio version must be the same as fio installed on qemu guest
  systems. Another solution is to provide the path to a FIO binary
  in arguments for testing scripts. If fio versions are different tests will not run.
- All dependency packages for building QEMU.
- QEMU source package. By default it is expected to be in the "qemu" directory in the
  root dir of the main spdk directory.
- a qemu-compatible VM image.
- RSA key for VM SSH access in $HOME/.ssh/spdk_vhost_id_rsa or in a different
  directory specified by $SPDK_VHOST_SSH_KEY_FILE global variable.

Files:
---
common.sh
	Header file to be included in other files.

autotest.sh
	Script to perform automated fio test with given number of virtual machines
	and given scenario type (virtio / kernel vhost / spdk vhost).
	Can run an end-to-end test or with "--dry-run" option can just enable
	virtual machines and leave them for user's manual tests.

run_vhost.sh
	Run single instance of vhost application. Useful during development.
	See 'run_vhost.sh --help'

run_fio.py
	Script used to run fio utility on group of virtual machines
	using default configuration or with parameters specified for
	autotest.sh execution.
	Script can also be executed with manually input parameters, resulting
	in launching multiple fio jobs which are then combinations of all
	parameters.
	See 'python run_fio.py --help'

vm_setup.sh
	Utility script used to create a virtual machine
	with spcified disk/block device and cache type for tests.
	Useful during development.
	See 'vm_setup.sh --help'

vm_run.sh
	Utility script used to enable selected virtual machines.
	Can enable all or specific virtual machines from  directory.
	Before running this script make sure that there was at least 1
	virtual machine created using vm_setup.sh script.
	Useful during development.
	See 'vm_run.sh --help'

vm_shutdown.sh
	Utility script used to shut down all or specific virtual machines
	if any remain active after test run.
	Useful during development.
	See 'vm_shutdown.sh --help'

vm_ssh.sh
	Utility script used to connect to specific virtual machine via ssh.
	Useful during development.
	See 'vm_ssh.sh --help'

Examples:
---

--- Example 1, simple run:

In spdk directory execute:
./test/vhost/autotest.sh --vm=0,<path to VM image>,<device> --fio-bin=<path to fio bin>

<device> 				- backend used for testing, e.g. Malloc0, Nvme0n1...
<path to fio bin> 		- path to FIO binary

This runs tests for 1 VM using spdk vhost.
By default all jobs defined in test/vhost/fiotest/fio_jobs/ are executed sequentially.

--- Example 2, multiple VMs:

./test/vhost/autotest.sh --vm=0,<path to VM image>,<device> --vm=1,<path to VM image 2>,<device 2>
Same configuration as Example 1 but fio runs in parallel on 2 VMs