diff options
Diffstat (limited to 'doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml')
-rw-r--r-- | doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml | 249 |
1 files changed, 231 insertions, 18 deletions
diff --git a/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml b/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml index 7155e44..fa461fa 100644 --- a/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml +++ b/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml | |||
@@ -4,18 +4,231 @@ | |||
4 | <chapter id="benchmarks"> | 4 | <chapter id="benchmarks"> |
5 | <title>Benchmarks</title> | 5 | <title>Benchmarks</title> |
6 | 6 | ||
7 | <para></para> | ||
8 | |||
9 | <section id="hw-setup"> | 7 | <section id="hw-setup"> |
10 | <title>Hardware Setup</title> | 8 | <title>Hardware Setup</title> |
11 | 9 | ||
12 | <para></para> | 10 | <para>The following table describes all the needed prequisites for an apt |
11 | hardware setup:</para> | ||
12 | |||
13 | <table> | ||
14 | <title>Hardware Setup</title> | ||
15 | |||
16 | <tgroup cols="2"> | ||
17 | <colspec align="left" /> | ||
18 | |||
19 | <thead> | ||
20 | <row> | ||
21 | <entry align="center">Item</entry> | ||
22 | |||
23 | <entry align="center">Description</entry> | ||
24 | </row> | ||
25 | </thead> | ||
26 | |||
27 | <tbody> | ||
28 | <row> | ||
29 | <entry align="left">Server Platform</entry> | ||
30 | |||
31 | <entry align="left">Supermicro X10SDV-4C-TLN2F | ||
32 | http://www.supermicro.com/products/motherboard/xeon/d/X10SDV-4C-TLN2F.cfm</entry> | ||
33 | </row> | ||
34 | |||
35 | <row> | ||
36 | <entry align="left">ARCH</entry> | ||
37 | |||
38 | <entry>x86-64</entry> | ||
39 | </row> | ||
40 | |||
41 | <row> | ||
42 | <entry align="left">Processor</entry> | ||
43 | |||
44 | <entry>1 x Intel Xeon D-1521 (Broadwell), 4 cores, 8 | ||
45 | hyper-threaded cores per processor</entry> | ||
46 | </row> | ||
47 | |||
48 | <row> | ||
49 | <entry align="left">CPU freq</entry> | ||
50 | |||
51 | <entry>2.40 GHz</entry> | ||
52 | </row> | ||
53 | |||
54 | <row> | ||
55 | <entry align="left">RAM</entry> | ||
56 | |||
57 | <entry>16GB</entry> | ||
58 | </row> | ||
59 | |||
60 | <row> | ||
61 | <entry align="left">Network</entry> | ||
62 | |||
63 | <entry>Dual integrated 10G ports</entry> | ||
64 | </row> | ||
65 | |||
66 | <row> | ||
67 | <entry align="left">Storage</entry> | ||
68 | |||
69 | <entry>Samsung 850 Pro 128GB SSD</entry> | ||
70 | </row> | ||
71 | </tbody> | ||
72 | </tgroup> | ||
73 | </table> | ||
74 | |||
75 | <para>Generic tests configuration:</para> | ||
76 | |||
77 | <itemizedlist> | ||
78 | <listitem> | ||
79 | <para>All tests use one port, one core and one Rx/TX queue for fast | ||
80 | path traffic.</para> | ||
81 | </listitem> | ||
82 | </itemizedlist> | ||
13 | </section> | 83 | </section> |
14 | 84 | ||
15 | <section id="bios"> | 85 | <section id="bios"> |
16 | <title>Bios</title> | 86 | <title>BIOS Settings</title> |
87 | |||
88 | <para>The table below details the BIOS settings for which the default | ||
89 | values were changed when doing performance measurements.</para> | ||
90 | |||
91 | <table> | ||
92 | <title>BIOS Settings</title> | ||
93 | |||
94 | <tgroup cols="4"> | ||
95 | <colspec align="left" /> | ||
96 | |||
97 | <thead> | ||
98 | <row> | ||
99 | <entry align="center">Menu Path</entry> | ||
100 | |||
101 | <entry align="center">Setting Name</entry> | ||
102 | |||
103 | <entry align="center">Enea NFV Access value</entry> | ||
104 | |||
105 | <entry align="center">BIOS Default value</entry> | ||
106 | </row> | ||
107 | </thead> | ||
108 | |||
109 | <tbody> | ||
110 | <row> | ||
111 | <entry align="left">CPU Configuration</entry> | ||
112 | |||
113 | <entry align="left">Direct Cache Access (DCA)</entry> | ||
114 | |||
115 | <entry>Enable</entry> | ||
116 | |||
117 | <entry>Auto</entry> | ||
118 | </row> | ||
119 | |||
120 | <row> | ||
121 | <entry>CPU Configuration / Advanced Power Management | ||
122 | Configuration</entry> | ||
123 | |||
124 | <entry align="left">EIST (P-States)</entry> | ||
125 | |||
126 | <entry>Disable</entry> | ||
127 | |||
128 | <entry>Enable</entry> | ||
129 | </row> | ||
130 | |||
131 | <row> | ||
132 | <entry>CPU Configuration / Advanced Power Management Configuration | ||
133 | / CPU C State Control</entry> | ||
134 | |||
135 | <entry align="left">CPU C State</entry> | ||
136 | |||
137 | <entry>Disable</entry> | ||
138 | |||
139 | <entry>Enable</entry> | ||
140 | </row> | ||
141 | |||
142 | <row> | ||
143 | <entry>CPU Configuration / Advanced Power Management Configuration | ||
144 | / CPU Advanced PM Turning / Energy Perf BIAS</entry> | ||
145 | |||
146 | <entry align="left">Energy Performance Tuning</entry> | ||
147 | |||
148 | <entry>Disable</entry> | ||
149 | |||
150 | <entry>Enable</entry> | ||
151 | </row> | ||
152 | |||
153 | <row> | ||
154 | <entry>CPU Configuration / Advanced Power Management Configuration | ||
155 | / CPU Advanced PM Turning / Energy Perf BIAS</entry> | ||
156 | |||
157 | <entry align="left">Energy Performance BIAS Setting</entry> | ||
158 | |||
159 | <entry>Performance</entry> | ||
160 | |||
161 | <entry>Balanced Performance</entry> | ||
162 | </row> | ||
163 | |||
164 | <row> | ||
165 | <entry>CPU Configuration / Advanced Power Management Configuration | ||
166 | / CPU Advanced PM Turning / Energy Perf BIAS</entry> | ||
167 | |||
168 | <entry align="left">Power/Performance Switch</entry> | ||
169 | |||
170 | <entry>Disable</entry> | ||
171 | |||
172 | <entry>Enable</entry> | ||
173 | </row> | ||
174 | |||
175 | <row> | ||
176 | <entry>CPU Configuration / Advanced Power Management Configuration | ||
177 | / CPU Advanced PM Turning / Program PowerCTL _MSR</entry> | ||
178 | |||
179 | <entry align="left">Energy Efficient Turbo</entry> | ||
180 | |||
181 | <entry>Disable</entry> | ||
182 | |||
183 | <entry>Enable</entry> | ||
184 | </row> | ||
185 | |||
186 | <row> | ||
187 | <entry>Chipset Configuration / North Bridge / IIO | ||
188 | Configuration</entry> | ||
189 | |||
190 | <entry align="left">EV DFX Features</entry> | ||
191 | |||
192 | <entry>Enable</entry> | ||
193 | |||
194 | <entry>Disable</entry> | ||
195 | </row> | ||
196 | |||
197 | <row> | ||
198 | <entry>Chipset Configuration / North Bridge / Memory | ||
199 | Configuration</entry> | ||
200 | |||
201 | <entry align="left">Enforce POR</entry> | ||
202 | |||
203 | <entry>Disable</entry> | ||
204 | |||
205 | <entry>Enable</entry> | ||
206 | </row> | ||
207 | |||
208 | <row> | ||
209 | <entry>Chipset Configuration / North Bridge / Memory | ||
210 | Configuration</entry> | ||
211 | |||
212 | <entry align="left">Memory Frequency</entry> | ||
213 | |||
214 | <entry>2400</entry> | ||
215 | |||
216 | <entry>Auto</entry> | ||
217 | </row> | ||
218 | |||
219 | <row> | ||
220 | <entry>Chipset Configuration / North Bridge / Memory | ||
221 | Configuration</entry> | ||
222 | |||
223 | <entry align="left">DRAM RAPL Baseline</entry> | ||
224 | |||
225 | <entry>Disable</entry> | ||
17 | 226 | ||
18 | <para></para> | 227 | <entry>DRAM RAPL Mode 1</entry> |
228 | </row> | ||
229 | </tbody> | ||
230 | </tgroup> | ||
231 | </table> | ||
19 | </section> | 232 | </section> |
20 | 233 | ||
21 | <section id="use-cases"> | 234 | <section id="use-cases"> |
@@ -25,14 +238,14 @@ | |||
25 | <title>Docker related benchmarks</title> | 238 | <title>Docker related benchmarks</title> |
26 | 239 | ||
27 | <section> | 240 | <section> |
28 | <title>Use Case - Forward traffic in docker</title> | 241 | <title>Forward traffic in Docker</title> |
29 | 242 | ||
30 | <para>Benchmarking traffic forwarding using testpmd in a Docker | 243 | <para>Benchmarking traffic forwarding using testpmd in a Docker |
31 | container.</para> | 244 | container.</para> |
32 | 245 | ||
33 | <para>Pktgen is used to generate UDP traffic that will reach testpmd, | 246 | <para>Pktgen is used to generate UDP traffic that will reach testpmd, |
34 | running in a docker image. It will then be forwarded back to source on | 247 | running in a Docker image. It will then be forwarded back to source on |
35 | the return trip (Forwarding). </para> | 248 | the return trip (Forwarding).</para> |
36 | 249 | ||
37 | <para>This test measures:</para> | 250 | <para>This test measures:</para> |
38 | 251 | ||
@@ -92,7 +305,7 @@ processor.max_cstate=0 mce=ignore_ce audit=0 nmi_watchdog=0 iommu=pt / | |||
92 | intel_iommu=on hugepagesz=1GB hugepages=8 default_hugepagesz=1GB / | 305 | intel_iommu=on hugepagesz=1GB hugepages=8 default_hugepagesz=1GB / |
93 | hugepagesz=2M hugepages=2048 vfio_iommu_type1.allow_unsafe_interrupts=1</programlisting> | 306 | hugepagesz=2M hugepages=2048 vfio_iommu_type1.allow_unsafe_interrupts=1</programlisting> |
94 | 307 | ||
95 | <para>It is expected to have docker/guest image on target. Configure | 308 | <para>It is expected to have Docker/guest image on target. Configure |
96 | the OVS bridge:<programlisting># OVS old config clean-up | 309 | the OVS bridge:<programlisting># OVS old config clean-up |
97 | killall ovsdb-server ovs-vswitchd | 310 | killall ovsdb-server ovs-vswitchd |
98 | rm -rf /etc/openvswitch/* | 311 | rm -rf /etc/openvswitch/* |
@@ -286,8 +499,8 @@ start</programlisting><table> | |||
286 | </section> | 499 | </section> |
287 | 500 | ||
288 | <section id="usecase-three-four"> | 501 | <section id="usecase-three-four"> |
289 | <title>Use Case - Forward traffic from Docker to another Docker on the | 502 | <title>Forward traffic from Docker to another Docker on the same |
290 | same host</title> | 503 | host</title> |
291 | 504 | ||
292 | <para>Benchmark a combo test using testpmd running in two Docker | 505 | <para>Benchmark a combo test using testpmd running in two Docker |
293 | instances, one which Forwards traffic to the second one, which | 506 | instances, one which Forwards traffic to the second one, which |
@@ -396,13 +609,13 @@ ovs-ofctl add-flow ovsbr0 in_port=2,action=output:1</programlisting>Import a | |||
396 | --rxq=1 --txq=1 --txd=512 --rxd=512 --txqflags=0xf00 --port-topology=chained</programlisting>Configure | 609 | --rxq=1 --txq=1 --txd=512 --rxd=512 --txqflags=0xf00 --port-topology=chained</programlisting>Configure |
397 | it in termination mode:<programlisting>set fwd rxonly</programlisting>Run | 610 | it in termination mode:<programlisting>set fwd rxonly</programlisting>Run |
398 | the testpmd application:<programlisting>start</programlisting>Open a | 611 | the testpmd application:<programlisting>start</programlisting>Open a |
399 | new console to the host and start the second docker | 612 | new console to the host and start the second Docker |
400 | instance:<programlisting>docker run -it --rm --cpuset-cpus=0,1 -v /var/run/openvswitch/:/var/run/openvswitch/ / | 613 | instance:<programlisting>docker run -it --rm --cpuset-cpus=0,1 -v /var/run/openvswitch/:/var/run/openvswitch/ / |
401 | -v /mnt/huge:/mnt/huge el7_guest /bin/bash</programlisting>In the second | 614 | -v /mnt/huge:/mnt/huge el7_guest /bin/bash</programlisting>In the second |
402 | container start testpmd:<programlisting>testpmd -c 0x0F --file-prefix prog2 --socket-mem 512 --no-pci / | 615 | container start testpmd:<programlisting>testpmd -c 0x0F --file-prefix prog2 --socket-mem 512 --no-pci / |
403 | --vdev=virtio_user0,path=/var/run/openvswitch/vhost-user2 / | 616 | --vdev=virtio_user0,path=/var/run/openvswitch/vhost-user2 / |
404 | -d /usr/lib/librte_pmd_virtio.so.1.1 -- -i --disable-hw-vlan</programlisting>Run | 617 | -d /usr/lib/librte_pmd_virtio.so.1.1 -- -i --disable-hw-vlan</programlisting>Run |
405 | the TestPmd application in the second docker:<programlisting>testpmd -c 0x3 -n 2 --file-prefix prog2 --socket-mem 512 --no-pci / | 618 | the TestPmd application in the second Docker:<programlisting>testpmd -c 0x3 -n 2 --file-prefix prog2 --socket-mem 512 --no-pci / |
406 | --vdev=virtio_user0,path=/var/run/openvswitch/vhost-user2 / | 619 | --vdev=virtio_user0,path=/var/run/openvswitch/vhost-user2 / |
407 | -d /usr/lib/librte_pmd_virtio.so.1.1 -- --burst 64 --disable-hw-vlan / | 620 | -d /usr/lib/librte_pmd_virtio.so.1.1 -- --burst 64 --disable-hw-vlan / |
408 | --disable-rss -i --portmask=0x1 --coremask=0x2 --nb-cores=1 --rxq=1 / | 621 | --disable-rss -i --portmask=0x1 --coremask=0x2 --nb-cores=1 --rxq=1 / |
@@ -414,7 +627,7 @@ ovs-ofctl add-flow ovsbr0 in_port=2,action=output:1</programlisting>Import a | |||
414 | should be used in testpmd applications.</para> | 627 | should be used in testpmd applications.</para> |
415 | 628 | ||
416 | <table> | 629 | <table> |
417 | <title>Results </title> | 630 | <title>Results</title> |
418 | 631 | ||
419 | <tgroup cols="5"> | 632 | <tgroup cols="5"> |
420 | <tbody> | 633 | <tbody> |
@@ -495,15 +708,15 @@ ovs-ofctl add-flow ovsbr0 in_port=2,action=output:1</programlisting>Import a | |||
495 | <title>VM related benchmarks</title> | 708 | <title>VM related benchmarks</title> |
496 | 709 | ||
497 | <section id="usecase-four"> | 710 | <section id="usecase-four"> |
498 | <title>Use Case - Forward/termination traffic in one VM</title> | 711 | <title>Forward/termination traffic in one VM</title> |
499 | 712 | ||
500 | <para>Benchmarking traffic (UDP) forwarding and termination using | 713 | <para>Benchmarking traffic (UDP) forwarding and termination using |
501 | testpmd in a virtual machine. </para> | 714 | testpmd in a virtual machine.</para> |
502 | 715 | ||
503 | <para>The Pktgen application is used to generate traffic that will | 716 | <para>The Pktgen application is used to generate traffic that will |
504 | reach testpmd running on a virtual machine, and be forwarded back to | 717 | reach testpmd running on a virtual machine, and be forwarded back to |
505 | source on the return trip. With the same setup a second measurement | 718 | source on the return trip. With the same setup a second measurement |
506 | will be done with traffic termination in the virtual machine. </para> | 719 | will be done with traffic termination in the virtual machine.</para> |
507 | 720 | ||
508 | <para>This test case measures:</para> | 721 | <para>This test case measures:</para> |
509 | 722 | ||
@@ -778,7 +991,7 @@ show port stats 0</programlisting><table> | |||
778 | </section> | 991 | </section> |
779 | 992 | ||
780 | <section id="usecase-six"> | 993 | <section id="usecase-six"> |
781 | <title>Use Case - Forward traffic between two VMs</title> | 994 | <title>Forward traffic between two VMs</title> |
782 | 995 | ||
783 | <para>Benchmark a combo test using two virtual machines, the first | 996 | <para>Benchmark a combo test using two virtual machines, the first |
784 | with traffic forwarding to the second, which terminates it.</para> | 997 | with traffic forwarding to the second, which terminates it.</para> |