Merge "Tools: Improve Stability."
[vswitchperf.git] / tools / report / report.jinja
1 {#
2 This work is licensed under a Creative Commons Attribution 4.0 International License.
3 http://creativecommons.org/licenses/by/4.0
4 #}
5
6 # CHARACTERIZE VSWITCH PERFORMANCE FOR TELCO NFV USE CASES LEVEL TEST REPORT
7
8 ## Table of Contents
9
10 - [1. Introduction](#Introduction)
11   - [1.1. Document identifier](#DocId)
12   - [1.2. Scope](#Scope)
13   - [1.3. References](#References)
14 - [2. Details of the Level Test Report](#DetailsoftheLevelTestReport)
15   - [2.1. Overview of test results](#OverviewOfTestResults)
16   - [2.2. Detailed test results](#DetailedTestResults)
17   - [2.3. Rationale for decisions](#RationaleForDecisions)
18   - [2.4. Conclusions and recommendations](#ConclusionsandRecommendations)
19 - [3. General](#General)
20   - [3.1. Glossary](#Glossary)
21   - [3.2. Document change procedures and history](#DocChangeProceduresandHistory)
22
23 ---
24
25 <a name="Introduction"></a>
26 ## 1. Introduction
27
28 The objective of the OPNFV project titled **"Characterise vSwitch Performance
29 for Telco NFV Use Cases"**, is to evaluate a virtual switch to identify its
30 suitability for a Telco Network Function Virtualization (NFV) environment. As
31 well as this, the project aims to identify any gaps or bottlenecks in order to
32 drive architectural changes to improve virtual switch performance and
33 determinism. The purpose of this document is to summarize the results of the
34 tests carried out on the virtual switch in the Network Function Virtualization
35 Infrastructure (NFVI) and, from these results, provide evaluations and
36 recommendations for the virtual switch. Test results will be outlined in
37 [Details of the Level Test Report](#DetailsoftheLevelTestReport), preceded by
38 the [Document Identifier](#DocId), [Scope](#Scope) and
39 [References](#References).
40
41 This document is currently in draft form.
42
43 <a name="DocId"></a>
44 ### 1.1. Document identifier
45
46 The document id will be used to uniquely identify versions of the LTR. The
47 format for the document id will be:
48 `OPNFV_vswitchperf_LTR_ver_NUM_MONTH_YEAR_AUTHOR_STATUS`, where by the AUTHOR
49 field should be replaced with the initials of the author and the status is one
50 of: DRAFT, REVIEWED, CORRECTED or FINAL. The document id for this version of
51 the LTR is: `OPNFV_vswitchperf_LTR_ver_1.1_Jan_15_CN_DRAFT`.
52
53 <a name="Scope"></a>
54 ### 1.2. Scope
55
56 The scope of this report is to detail the results of the tests that have been
57 performed on the virtual switch. This report will also evaluate the results of
58 these tests and, based on these evaluations, provide recommendations on the
59 suitability of the virtual switch for use in a Telco NFV environment.
60
61 <a name="References"></a>
62 ### 1.3. References
63
64 - `OPNFV_vswitchperf_LTD_ver_1.6_Jan_15_DRAFT`
65
66 ---
67
68 <a name="DetailsoftheLevelTestReport"></a>
69 ## 2. Details of the Level Test Report
70
71 This section provides an overview of the test results ([Section
72 2.1.](#OveriewOfTestResults)) as well as detailed test results for each test
73 ([Section 2.2.](#DetailedTestResults)). Also included are the rationale used to
74 evaluate each test ([Section 2.3.](#RationaleForDecisions)) and the conclusions
75 and recommendations for each test ([Section
76 2.4.](#ConclusionsandRecommendations)).
77
78 <a name="OverviewOfTestResults"></a>
79 ### 2.1. Overview of test results
80
81 ##### Test Environment
82
83 Below is the environment that the test was performed in:
84
85 - OS: {{tests[0].env.os}}
86 - Kernel Version: {{tests[0].env.kernel}}
87 - NIC(s):{% for nic in tests[0].env.nics %}
88     - {{nic}}{% endfor %}
89 - Board: {{tests[0].env.platform}}
90 - CPU: {{tests[0].env.cpu}}
91 - CPU cores: {{tests[0].env.cpu_cores}}
92 - Memory: {{tests[0].env.memory}}
93 - Virtual Switch Set-up: {{tests[0].deployment}}
94 - vswitchperf: GIT tag: {{tests[0].env.vsperf.get()['git_tag']}}
95 - Traffic Generator: {{tests[0].env.traffic_gen.get()['name']}}, Version: {{tests[0].env.traffic_gen.get()['version']}}, GIT tag: {{tests[0].env.traffic_gen.get()['git_tag']}}
96 - vSwitch: {{tests[0].env.vswitch.get()['name']}}, Version: {{tests[0].env.vswitch.get()['version']}}, GIT tag: {{tests[0].env.vswitch.get()['git_tag']}}
97 {%- if 'dpdk' in tests[0].env %}
98 - DPDK Version: {{tests[0].env.dpdk.get()['version']}}, GIT tag: {{tests[0].env.dpdk.get()['git_tag']}}
99 {%- endif %}
100 {%- if 'vnf' in tests[0].env %}
101 - VNF: {{tests[0].env.vnf.get()['name']}}, Version: {{tests[0].env.vnf.get()['version']}}, GIT tag: {{tests[0].env.vnf.get()['git_tag']}}
102 - VM images:{% for guest_image in tests[0].env.guest_image %}
103     - {{guest_image}}{% endfor %}
104 - VM loopback apps:{% for loopback_app in tests[0].env.loopback_app %}
105     - {{loopback_app.get()['name']}}, Version: {{loopback_app.get()['version']}}, GIT tag: {{loopback_app.get()['git_tag']}}{% endfor %}
106 {%- endif %}
107
108 For each test, a summary of the key test results is provided.
109 {% for test in tests %}
110 #### Test ID: {{ test.ID }}
111
112 Below are test details:
113
114 - Test ID: {{ "%s"|format(test.id) }}
115 - Description: {{ "%s"|format(test.conf['Description']) }}
116 - Deployment: {{ "%s"|format(test.deployment) }}
117 - Traffic type: {{ "%s"|format(test.result['type']) }}
118 - Packet size: {{ "%s"|format(test.result['packet_size']) }}
119 - Bidirectional : {{ "%s"|format(test.conf['bidir']) }}
120 {%- if test.result['tunnel_type'] %}
121 - Tunnel type: {{ "%s"|format(test.result['tunnel_type']) }}
122 {%- endif %}
123 {% endfor %}
124
125 <a name="DetailedTestResults"></a>
126 ### 2.2. Detailed test results
127
128 A detailed summary of the main results for each test is outlined below.
129 {% for test in tests %}
130 #### Test ID: {{ test.ID }}
131
132 ##### Results/Metrics Collected
133
134 The following are the metrics obtained during this test:
135
136 |             Metric             |             Result             |
137 | ------------------------------ | ------------------------------ |
138 {%- for item, value in test.result.items() %}
139 | {{ "%-30s | %30s |"|format(item,value)}}
140 {%- endfor %}
141
142 ##### Statistics collected
143
144 The following system statistics were collected during testcase execution:
145 {% for process in test.stats %}
146 | Process: {{ "%-54s |"|format('_'.join(process.split('_')[:-1])) }}
147 | ------------------------------ | ------------------------------ |
148 |           Statistic            |             Value              |
149 | ------------------------------ | ------------------------------ |
150 {%- for item, value in test.stats[process].items() %}
151 | {{ "%-30s | %30s |"|format(item,value)}}
152 {%- endfor %}
153
154 {% endfor %}
155
156 ##### Anomalies
157
158 No anomalies were detected during the course of this test.
159
160 ##### Testing Activities/Events
161
162 There were no significant testing activities for this test.
163 {% endfor %}
164 <a name="RationaleForDecisions"></a>
165 ### 2.3. Rationale for decisions
166
167 The tests conducted do not have pass/fail/conditional-pass criteria. The test
168 is simply conducted and the results are reported.
169
170
171 <a name="ConclusionsandRecommendations"></a>
172 ### 2.4. Conclusions and recommendations
173
174 The test results are stable. The vsperf CI jobs that were used to obtain the
175 results can be found at https://wiki.opnfv.org/wiki/vsperf_results.
176
177 -----
178
179 <a name="General"></a>
180 ## 3. General
181
182 <a name="Glossary"></a>
183 ### 3.1. Glossary
184
185 - NFV - Network Function Virtualization
186 - Mbps - 1,000,000bps
187
188 <a name="DocChangeProceduresandHistory"></a>
189 ### 3.2. Document change procedures and history
190
191 | Document ID | Author | Date Modified |
192 | ----------- |------- | ------------- |
193 | `OPNFV_vswitchperf_LTR_ver_1.0_Jan_15_CN_DRAFT` | Christopher Nolan | 23/01/2015
194 | `OPNFV_vswitchperf_LTR_ver_1.1_Jan_15_CN_DRAFT` | Christopher Nolan | 28/01/2015