Merge "Add --hwlb options as a command line argument for SampleVNF"
[yardstick.git] / docs / testing / user / userguide / opnfv_yardstick_tc006.rst
index 2ccb417..d2d6467 100644 (file)
 .. This work is licensed under a Creative Commons Attribution 4.0 International
 .. License.
 .. http://creativecommons.org/licenses/by/4.0
-.. (c) OPNFV, Intel Corporation and others.
+.. (c) OPNFV, Huawei Technologies Co.,Ltd and others.
 
 *************************************
 Yardstick Test Case Description TC006
 *************************************
 
-.. _DPDKpktgen: https://github.com/Pktgen/Pktgen-DPDK/
-.. _rfc2544: https://www.ietf.org/rfc/rfc2544.txt
+.. _fio: http://bluestop.org/files/fio/HOWTO.txt
 
 +-----------------------------------------------------------------------------+
-|Network Performance                                                          |
+|Volume storage Performance                                                   |
 |                                                                             |
 +--------------+--------------------------------------------------------------+
-|test case id  | OPNFV_YARDSTICK_TC006_Virtual Traffic Classifier Data Plane  |
-|              | Throughput Benchmarking Test.                                |
+|test case id  | OPNFV_YARDSTICK_TC006_VOLUME STORAGE PERFORMANCE             |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|metric        | Throughput                                                   |
+|metric        | IOPS (Average IOs performed per second),                     |
+|              | Throughput (Average disk read/write bandwidth rate),         |
+|              | Latency (Average disk read/write latency)                    |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|test purpose  | To measure the throughput supported by the virtual Traffic   |
-|              | Classifier according to the RFC2544 methodology for a        |
-|              | user-defined set of vTC deployment configurations.           |
+|test purpose  | The purpose of TC006 is to evaluate the IaaS volume storage  |
+|              | performance with regards to IOPS, throughput and latency.    |
 |              |                                                              |
-+--------------+--------------------------------------------------------------+
-|configuration | file: file: opnfv_yardstick_tc006.yaml                       |
-|              |                                                              |
-|              | packet_size: size of the packets to be used during the       |
-|              |      throughput calculation.                                 |
-|              |      Allowe values: [64, 128, 256, 512, 1024, 1280, 1518]    |
+|              | The purpose is also to be able to spot the trends.           |
+|              | Test results, graphs and similar shall be stored for         |
+|              | comparison reasons and product evolution understanding       |
+|              | between different OPNFV versions and/or configurations.      |
 |              |                                                              |
-|              | vnic_type: type of VNIC to be used.                          |
-|              |      Allowed values are:                                     |
-|              |           - normal: for default OvS port configuration       |
-|              |           - direct: for SR-IOV port configuration            |
-|              |      Default value: None                                     |
++--------------+--------------------------------------------------------------+
+|test tool     | fio                                                          |
 |              |                                                              |
-|              | vtc_flavor: OpenStack flavor to be used for the vTC          |
-|              |      Default available values are: m1.small, m1.medium,      |
-|              |      and m1.large, but the user can create his/her own       |
-|              |      flavor and give it as input                             |
-|              |      Default value: None                                     |
+|              | fio is an I/O tool meant to be used both for benchmark and   |
+|              | stress/hardware verification. It has support for 19          |
+|              | different types of I/O engines (sync, mmap, libaio,          |
+|              | posixaio, SG v3, splice, null, network, syslet, guasi,       |
+|              | solarisaio, and more), I/O priorities (for newer Linux       |
+|              | kernels), rate I/O, forked or threaded jobs, and much more.  |
 |              |                                                              |
-|              | vlan_sender: vlan tag of the network on which the vTC will   |
-|              |      receive traffic (VLAN Network 1).                       |
-|              |      Allowed values: range (1, 4096)                         |
+|              | (fio is not always part of a Linux distribution, hence it    |
+|              | needs to be installed. As an example see the                 |
+|              | /yardstick/tools/ directory for how to generate a Linux      |
+|              | image with fio included.)                                    |
 |              |                                                              |
-|              | vlan_receiver: vlan tag of the network on which the vTC      |
-|              |      will send traffic back to the packet generator          |
-|              |      (VLAN Network 2).                                       |
-|              |      Allowed values: range (1, 4096)                         |
++--------------+--------------------------------------------------------------+
+|test          | fio test is invoked in a host VM with a volume attached on a |
+|description   | compute blade, a job file as well as parameters are passed   |
+|              | to fio and fio will start doing what the job file tells it   |
+|              | to do.                                                       |
 |              |                                                              |
-|              | default_net_name: neutron name of the defaul network that    |
-|              |      is used for access to the internet from the vTC         |
-|              |      (vNIC 1).                                               |
++--------------+--------------------------------------------------------------+
+|configuration | file: opnfv_yardstick_tc006.yaml                             |
 |              |                                                              |
-|              | default_subnet_name: subnet name for vNIC1                   |
-|              |      (information available through Neutron).                |
+|              | Fio job file is provided to define the benchmark process     |
+|              | Target volume is mounted at /FIO_Test directory              |
 |              |                                                              |
-|              | vlan_net_1_name: Neutron Name for VLAN Network 1             |
-|              |      (information available through Neutron).                |
+|              | For SLA, minimum read/write iops is set to 100,              |
+|              | minimum read/write throughput is set to 400 KB/s,            |
+|              | and maximum read/write latency is set to 20000 usec.         |
 |              |                                                              |
-|              | vlan_subnet_1_name: Subnet Neutron name for VLAN Network 1   |
-|              |      (information available through Neutron).                |
++--------------+--------------------------------------------------------------+
+|applicability | This test case can be configured with different:             |
 |              |                                                              |
-|              | vlan_net_2_name: Neutron Name for VLAN Network 2             |
-|              |      (information available through Neutron).                |
+|              |   * Job file;                                                |
+|              |   * Volume mount directory.                                  |
 |              |                                                              |
-|              | vlan_subnet_2_name: Subnet Neutron name for VLAN Network 2   |
-|              |      (information available through Neutron).                |
+|              | SLA is optional. The SLA in this test case serves as an      |
+|              | example. Considerably higher throughput and lower latency    |
+|              | are expected. However, to cover most configurations, both    |
+|              | baremetal and fully virtualized  ones, this value should be  |
+|              | possible to achieve and acceptable for black box testing.    |
+|              | Many heavy IO applications start to suffer badly if the      |
+|              | read/write bandwidths are lower than this.                   |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|test tool     | DPDK pktgen                                                  |
-|              |                                                              |
-|              | DPDK Pktgen is not part of a Linux distribution,             |
-|              | hence it needs to be installed by the user.                  |
+|usability     | This test case is one of Yardstick's generic test. Thus it   |
+|              | is runnable on most of the scenarios.                        |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|references    | DPDK Pktgen: DPDKpktgen_                                     |
+|references    | fio_                                                         |
 |              |                                                              |
 |              | ETSI-NFV-TST001                                              |
 |              |                                                              |
-|              | RFC 2544: rfc2544_                                           |
-|              |                                                              |
-+--------------+--------------------------------------------------------------+
-|applicability | Test can be configured with different flavors, vNIC type     |
-|              | and packet sizes. Default values exist as specified above.   |
-|              | The vNIC type and flavor MUST be specified by the user.      |
-|              |                                                              |
 +--------------+--------------------------------------------------------------+
-|pre-test      | The vTC has been successfully instantiated and configured.   |
-|              | The user has correctly assigned the values to the deployment |
-|              |  configuration parameters.                                   |
+|pre-test      | The test case image needs to be installed into Glance        |
+|conditions    | with fio included in it.                                     |
 |              |                                                              |
-|              | - Multicast traffic MUST be enabled on the network.          |
-|              |      The Data network switches need to be configured in      |
-|              |      order to manage multicast traffic.                      |
-|              | - In the case of SR-IOV vNICs use, SR-IOV compatible NICs    |
-|              |      must be used on the compute node.                       |
-|              | - Yarsdtick needs to be installed on a host connected to the |
-|              |      data network and the host must have 2 DPDK-compatible   |
-|              |      NICs. Proper configuration of DPDK and DPDK pktgen is   |
-|              |      required before to run the test case.                   |
-|              |      (For further instructions please refer to the ApexLake  |
-|              |      documentation).                                         |
+|              | No POD specific requirements have been identified.           |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|test sequence | Description and expected results                             |
+|test sequence | description and expected result                              |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|step  1       | The vTC is deployed, according to the user-defined           |
-|              | configuration                                                |
+|step 1        | A host VM with fio installed is booted.                      |
+|              | A 200G volume is attached to the host VM                     |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|step  2       | The vTC is correctly deployed and configured as necessary    |
-|              | The initialization script has been correctly executed and    |
-|              | vTC is ready to receive and process the traffic.             |
+|step 2        | Yardstick is connected with the host VM by using ssh.        |
+|              | 'job_file.ini' is copyied from Jump Host to the host VM via  |
+|              | the ssh tunnel. The attached volume is formated and mounted. |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|step  3       | Test case is executed with the selected parameters:          |
-|              | - vTC flavor                                                 |
-|              | - vNIC type                                                  |
-|              | - packet size                                                |
-|              | The traffic is sent to the vTC using the maximum available   |
-|              | traffic rate for 60 seconds.                                 |
+|step 3        | Fio benchmark is invoked. Simulated IO operations are        |
+|              | started. IOPS, disk read/write bandwidth and latency are     |
+|              | recorded and checked against the SLA. Logs are produced and  |
+|              | stored.                                                      |
 |              |                                                              |
-+--------------+--------------------------------------------------------------+
-|step 4        | The vTC instance forwards all the packets back to the packet |
-|              | generator for 60 seconds, as specified by RFC 2544.          |
+|              | Result: Logs are stored.                                     |
 |              |                                                              |
-|              | Steps 3 and 4 are executed different times, with different   |
-|              | rates in order to find the maximum supported traffic rate    |
-|              | according to the current definition of throughput in RFC     |
-|              | 2544.                                                        |
++--------------+--------------------------------------------------------------+
+|step 4        | The host VM is deleted.                                      |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+
-|test verdict  |  The result of the test is a number between 0 and 100 which  |
-|              |  represents the throughput in terms of percentage of the     |
-|              |  available pktgen NIC bandwidth.                             |
+|test verdict  | Fails only if SLA is not passed, or if there is a test case  |
+|              | execution problem.                                           |
 |              |                                                              |
 +--------------+--------------------------------------------------------------+