From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 256AD2B8F for ; Wed, 7 Dec 2016 22:07:07 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 07 Dec 2016 13:07:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,315,1477983600"; d="scan'208";a="909836459" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga003.jf.intel.com with ESMTP; 07 Dec 2016 13:07:03 -0800 Received: from irsmsx103.ger.corp.intel.com ([169.254.3.91]) by IRSMSX106.ger.corp.intel.com ([169.254.8.112]) with mapi id 14.03.0248.002; Wed, 7 Dec 2016 21:07:02 +0000 From: "Mcnamara, John" To: Maxime Coquelin , "yuanhan.liu@linux.intel.com" , "thomas.monjalon@6wind.com" , "Yang, Zhiyong" , "ktraynor@redhat.com" , "dev@dpdk.org" Thread-Topic: [PATCH v2] doc: introduce PVP reference benchmark Thread-Index: AQHST7vVj810usAOqUW7tMNCgzY8xqD8d1Ew Date: Wed, 7 Dec 2016 21:07:01 +0000 Message-ID: References: <20161206122440.12039-1-maxime.coquelin@redhat.com> In-Reply-To: <20161206122440.12039-1-maxime.coquelin@redhat.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_PUBLIC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGRlYTdjZDItYWIwZi00ZDk1LTllZWEtMDkwNmFjOWQwMzlkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX1BVQkxJQyJ9XX1dfSwiU3ViamVjdExhYmVscyI6W10sIlRNQ1ZlcnNpb24iOiIxNS45LjYuNiIsIlRydXN0ZWRMYWJlbEhhc2giOiJTNWgrcHpxMVJPMktxNlVyRUd0b2hTeUQ5UkVrSERJeVFlbUVrWG5OZkQ4PSJ9 x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2] doc: introduce PVP reference benchmark X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Dec 2016 21:07:09 -0000 > -----Original Message----- > From: Maxime Coquelin [mailto:maxime.coquelin@redhat.com] > Sent: Tuesday, December 6, 2016 12:25 PM > To: yuanhan.liu@linux.intel.com; thomas.monjalon@6wind.com; Mcnamara, Joh= n > ; Yang, Zhiyong ; > ktraynor@redhat.com; dev@dpdk.org > Cc: Maxime Coquelin > Subject: [PATCH v2] doc: introduce PVP reference benchmark >=20 > Having reference benchmarks is important in order to obtain reproducible > performance figures. >=20 > This patch describes required steps to configure a PVP setup using testpm= d > in both host and guest. >=20 > Not relying on external vSwitch ease integration in a CI loop by not bein= g > impacted by DPDK API changes. >=20 > Signed-off-by: Maxime Coquelin There is one trailing whitespace warning but apart from that: Acked-by: John McNamara > --- >=20 > Thanks to all the reviewers, this v2 should take all remarks into account= . >=20 > -- Maxime >=20 > doc/guides/howto/img/pvp_2nics.svg | 556 > +++++++++++++++++++++++++++ > doc/guides/howto/index.rst | 1 + > doc/guides/howto/pvp_reference_benchmark.rst | 395 +++++++++++++++++++ > 3 files changed, 952 insertions(+) > create mode 100644 doc/guides/howto/img/pvp_2nics.svg > create mode 100644 doc/guides/howto/pvp_reference_benchmark.rst >=20 > diff --git a/doc/guides/howto/img/pvp_2nics.svg > b/doc/guides/howto/img/pvp_2nics.svg > new file mode 100644 > index 0000000..517a800 > --- /dev/null > +++ b/doc/guides/howto/img/pvp_2nics.svg > @@ -0,0 +1,556 @@ > + > + > + > + + xmlns:dc=3D"http://purl.org/dc/elements/1.1/" > + xmlns:cc=3D"http://creativecommons.org/ns#" > + xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + xmlns:svg=3D"http://www.w3.org/2000/svg" > + xmlns=3D"http://www.w3.org/2000/svg" > + xmlns:sodipodi=3D"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" > + xmlns:inkscape=3D"http://www.inkscape.org/namespaces/inkscape" > + width=3D"127.46428mm" > + height=3D"139.41411mm" > + viewBox=3D"0 0 451.64508 493.987" > + id=3D"svg2" > + version=3D"1.1" > + inkscape:version=3D"0.92pre2 r" > + sodipodi:docname=3D"pvp_2nics.svg" > + inkscape:export-filename=3D"/home/max/Pictures/dpdk/pvp/pvp.png" > + inkscape:export-xdpi=3D"90" > + inkscape:export-ydpi=3D"90"> > + + id=3D"defs4"> > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"marker4760" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4762" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"marker4642" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4644" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"marker10370" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + id=3D"path10372" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:isstock=3D"true" > + style=3D"overflow:visible" > + id=3D"marker10306" > + refX=3D"0" > + refY=3D"0" > + orient=3D"auto" > + inkscape:stockid=3D"Arrow1Lend"> > + + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + id=3D"path10308" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:isstock=3D"true" > + style=3D"overflow:visible" > + id=3D"marker9757" > + refX=3D"0" > + refY=3D"0" > + orient=3D"auto" > + inkscape:stockid=3D"Arrow1Lend" > + inkscape:collect=3D"always"> > + + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + id=3D"path9759" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lstart" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + id=3D"path4224" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lend" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + id=3D"path4227" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lend-1" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4227-27" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lstart-9" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4224-3" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" /> > + > + + inkscape:isstock=3D"true" > + style=3D"overflow:visible" > + id=3D"marker9757-0" > + refX=3D"0" > + refY=3D"0" > + orient=3D"auto" > + inkscape:stockid=3D"Arrow1Lend"> > + + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + id=3D"path9759-6" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lstart-6" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4224-0" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lend-62" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4227-6" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"marker10370-7" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path10372-9" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" /> > + > + + inkscape:isstock=3D"true" > + style=3D"overflow:visible" > + id=3D"marker9757-2" > + refX=3D"0" > + refY=3D"0" > + orient=3D"auto" > + inkscape:stockid=3D"Arrow1Lend"> > + + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" > + style=3D"fill:#ff0000;fill-opacity:1;fill- > rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + id=3D"path9759-0" > + inkscape:connector-curvature=3D"0" /> > + > + + inkscape:stockid=3D"Arrow1Lstart" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lstart-9-2" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4224-3-3" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(0.8,0,0,0.8,10,0)" /> > + > + + inkscape:stockid=3D"Arrow1Lend" > + orient=3D"auto" > + refY=3D"0" > + refX=3D"0" > + id=3D"Arrow1Lend-1-7" > + style=3D"overflow:visible" > + inkscape:isstock=3D"true"> > + + inkscape:connector-curvature=3D"0" > + id=3D"path4227-27-5" > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > + transform=3D"matrix(-0.8,0,0,-0.8,-10,0)" /> > + > + > + + id=3D"base" > + pagecolor=3D"#ffffff" > + bordercolor=3D"#666666" > + borderopacity=3D"1.0" > + inkscape:pageopacity=3D"0.0" > + inkscape:pageshadow=3D"2" > + inkscape:zoom=3D"0.49497475" > + inkscape:cx=3D"206.7485" > + inkscape:cy=3D"227.93958" > + inkscape:document-units=3D"px" > + inkscape:current-layer=3D"layer1" > + showgrid=3D"false" > + inkscape:object-nodes=3D"true" > + inkscape:window-width=3D"1916" > + inkscape:window-height=3D"1040" > + inkscape:window-x=3D"0" > + inkscape:window-y=3D"38" > + inkscape:window-maximized=3D"0" > + inkscape:snap-grids=3D"true" > + inkscape:snap-to-guides=3D"true" > + inkscape:snap-others=3D"false" > + inkscape:snap-nodes=3D"false" > + inkscape:snap-global=3D"false" /> > + + id=3D"metadata7"> > + > + + rdf:about=3D""> > + image/svg+xml > + + rdf:resource=3D"http://purl.org/dc/dcmitype/StillImage" /> > + > + > + > + > + + inkscape:label=3D"Layer 1" > + inkscape:groupmode=3D"layer" > + id=3D"layer1" > + transform=3D"translate(-5.3301459,-7.348317)"> > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.78969002;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4140" > + width=3D"434.38919" > + height=3D"75.295639" > + x=3D"21.691195" > + y=3D"404.59354" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"421.47873" > + y=3D"501.3353" > + id=3D"text4142"> + sodipodi:role=3D"line" > + id=3D"tspan4144" > + x=3D"421.47873" > + y=3D"501.3353" > + style=3D"font-size:25px;line-height:125%">TE > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.46599996;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4146" > + width=3D"92.934036" > + height=3D"32.324883" > + x=3D"182.57764" > + y=3D"372.03574" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"183.5878" > + y=3D"397.28958" > + id=3D"text4148"> + sodipodi:role=3D"line" > + id=3D"tspan4150" > + x=3D"183.5878" > + y=3D"397.28958" > + style=3D"font-size:25px">10G NIC > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"166.92024" > + y=3D"451.33276" > + id=3D"text4152"> + sodipodi:role=3D"line" > + id=3D"tspan4154" > + x=3D"166.92024" > + y=3D"451.33276">Moongen > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.39882457;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4156" > + width=3D"449.73071" > + height=3D"244.32167" > + x=3D"6.0295582" > + y=3D"29.046324" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"405.31628" > + y=3D"25.048317" > + id=3D"text4158"> + sodipodi:role=3D"line" > + id=3D"tspan4160" > + x=3D"405.31628" > + y=3D"25.048317" > + style=3D"font-size:25px">DUT > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.14168489;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4162" > + width=3D"418.69415" > + height=3D"107.50462" > + x=3D"19.038134" > + y=3D"41.044758" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"395.38812" > + y=3D"66.496857" > + id=3D"text4164"> + sodipodi:role=3D"line" > + id=3D"tspan4166" > + x=3D"395.38812" > + y=3D"66.496857" > + style=3D"font-size:25px">VM > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.46599996;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4146-3" > + width=3D"92.934036" > + height=3D"32.324883" > + x=3D"183.0827" > + y=3D"274.05093" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"184.09286" > + y=3D"299.30475" > + id=3D"text4148-6"> + sodipodi:role=3D"line" > + id=3D"tspan4150-7" > + x=3D"184.09286" > + y=3D"299.30475" > + style=3D"font-size:25px">10G NIC > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:2.4804399;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4189" > + width=3D"398.00476" > + height=3D"65.451302" > + x=3D"26.901583" > + y=3D"82.647781" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:25px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"30.683046" > + y=3D"108.31288" > + id=3D"text4191"> + sodipodi:role=3D"line" > + id=3D"tspan4193" > + x=3D"30.683046" > + y=3D"108.31288">TestPMD + sodipodi:role=3D"line" > + x=3D"30.683046" > + y=3D"139.56288" > + id=3D"tspan10476">(macswap) > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:2.49124122;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4189-5" > + width=3D"397.22263" > + height=3D"66.152573" > + x=3D"29.743357" > + y=3D"207.6543" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:25px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"42.720772" > + y=3D"231.14902" > + id=3D"text4191-3"> + sodipodi:role=3D"line" > + id=3D"tspan4193-5" > + x=3D"42.720772" > + y=3D"231.14902">TestPMD + sodipodi:role=3D"line" > + x=3D"42.720772" > + y=3D"262.39902" > + id=3D"tspan9747">(io) > + + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:0.97838062px;stroke- > linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker- > end:url(#Arrow1Lend)" > + d=3D"M 202.56669,371.44487 V 308.37034" > + id=3D"path4218" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke- > width:0.97297633px;stroke-linecap:butt;stroke-linejoin:miter;stroke- > opacity:1;marker-start:url(#Arrow1Lstart)" > + d=3D"M 252.03098,369.63533 V 307.25568" > + id=3D"path4218-9" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:0.92982113px;stroke- > linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker- > end:url(#Arrow1Lend-1)" > + d=3D"M 198.63811,207.44389 V 150.47507" > + id=3D"path4218-0" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke- > width:0.95360273px;stroke-linecap:butt;stroke-linejoin:miter;stroke- > opacity:1;marker-start:url(#Arrow1Lstart-9)" > + d=3D"M 255.56859,206.9303 V 147.01008" > + id=3D"path4218-9-6" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:3, 1;stroke-dashoffset:0;stroke- > opacity:1;marker-end:url(#marker9757)" > + d=3D"M 199.50513,271.00921 V 207.3696" > + id=3D"path9749" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:3, 1;stroke-dashoffset:0;stroke- > opacity:1;marker-start:url(#marker10370)" > + d=3D"M 255.56859,270.56991 V 206.9303" > + id=3D"path9749-2" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.46599996;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4146-36" > + width=3D"92.934036" > + height=3D"32.324883" > + x=3D"304.05591" > + y=3D"372.52954" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"305.06607" > + y=3D"397.78339" > + id=3D"text4148-7"> + sodipodi:role=3D"line" > + id=3D"tspan4150-5" > + x=3D"305.06607" > + y=3D"397.78339" > + style=3D"font-size:25px">10G NIC > + + style=3D"fill:none;fill-opacity:1;stroke:#000000;stroke- > width:1.46599996;stroke-miterlimit:4;stroke-dasharray:none;stroke- > dashoffset:0;stroke-opacity:1" > + id=3D"rect4146-3-3" > + width=3D"92.934036" > + height=3D"32.324883" > + x=3D"306.07623" > + y=3D"273.53461" /> > + + xml:space=3D"preserve" > + style=3D"font-style:normal;font-weight:normal;font-size:40px;line= - > height:125%;font-family:sans-serif;letter-spacing:0px;word- > spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke- > width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > + x=3D"307.0864" > + y=3D"298.78842" > + id=3D"text4148-6-5"> + sodipodi:role=3D"line" > + id=3D"tspan4150-7-6" > + x=3D"307.0864" > + y=3D"298.78842" > + style=3D"font-size:25px">10G NIC > + + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:0.97838062px;stroke- > linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker- > end:url(#Arrow1Lend-62)" > + d=3D"M 323.7504,370.24835 V 307.17382" > + id=3D"path4218-1" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke- > width:0.97297633px;stroke-linecap:butt;stroke-linejoin:miter;stroke- > opacity:1;marker-start:url(#Arrow1Lstart-6)" > + d=3D"M 373.21469,368.43881 V 306.05916" > + id=3D"path4218-9-8" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:#000000;fill-opacity:1;fill- > rule:evenodd;stroke:#000000;stroke-width:0.92982113px;stroke- > linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker- > end:url(#Arrow1Lend-1-7)" > + d=3D"M 324.93036,207.24894 V 150.28012" > + id=3D"path4218-0-9" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke- > width:0.95360273px;stroke-linecap:butt;stroke-linejoin:miter;stroke- > opacity:1;marker-start:url(#Arrow1Lstart-9-2)" > + d=3D"M 381.86084,206.73535 V 146.81513" > + id=3D"path4218-9-6-2" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:3, 1;stroke-dashoffset:0;stroke- > opacity:1;marker-end:url(#marker9757-2)" > + d=3D"M 325.79738,270.81426 V 207.17465" > + id=3D"path9749-28" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:3, 1;stroke-dashoffset:0;stroke- > opacity:1;marker-start:url(#marker10370-7)" > + d=3D"M 381.86084,270.37496 V 206.73535" > + id=3D"path9749-2-9" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke- > opacity:1;marker-end:url(#marker4642)" > + d=3D"M 198.57143,148.79077 V 95.93363 h 182.85714 v 50" > + id=3D"path3748" > + inkscape:connector-curvature=3D"0" /> > + + style=3D"fill:none;fill-rule:evenodd;stroke:#ff0000;stroke- > width:1.01005316;stroke-linecap:butt;stroke-linejoin:miter;stroke- > miterlimit:4;stroke-dasharray:2.02010632, 1.01005316;stroke- > dashoffset:0;stroke-opacity:1;marker-end:url(#marker4760)" > + d=3D"m 325.70774,148.78714 v -32.84999 h -70.7012 v 30.70761" > + id=3D"path4634" > + inkscape:connector-curvature=3D"0" /> > + > + > diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst inde= x > 5575b27..712a9f3 100644 > --- a/doc/guides/howto/index.rst > +++ b/doc/guides/howto/index.rst > @@ -38,3 +38,4 @@ HowTo Guides > lm_bond_virtio_sriov > lm_virtio_vhost_user > flow_bifurcation > + pvp_reference_benchmark > diff --git a/doc/guides/howto/pvp_reference_benchmark.rst > b/doc/guides/howto/pvp_reference_benchmark.rst > new file mode 100644 > index 0000000..c5bbd32 > --- /dev/null > +++ b/doc/guides/howto/pvp_reference_benchmark.rst > @@ -0,0 +1,395 @@ > +.. BSD LICENSE > + Copyright(c) 2016 Red Hat, Inc. All rights reserved. > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + * Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + * Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + * Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FO= R > + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL= , > + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE= , > + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON AN= Y > + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE US= E > + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > + > +PVP reference benchmark setup using testpmd > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +This guide lists the steps required to setup a PVP benchmark using > +testpmd as a simple forwarder between NICs and Vhost interfaces. The > +goal of this setup is to have a reference PVP benchmark without using > +external vSwitches (OVS, VPP, ...) to make it easier to obtain > +reproducible results and to facilitate continuous integration testing. > + > +The guide covers two ways of launching the VM, either by directly > +calling the QEMU command line, or by relying on libvirt. It has been > +tested with DPDK > +v16.11 using RHEL7 for both host and guest. > + > + > +Setup overview > +-------------- > + > +.. _figure_pvp_2nics: > + > +.. figure:: img/pvp_2nics.* > + > + PVP setup using 2 NICs > + > +In this diagram, each red arrow represents one logical core. This > +use-case requires 6 dedicated logical cores. A forwarding configuration > +with a single NIC is also possible, requiring 3 logical cores. > + > + > +Host setup > +---------- > + > +In this setup, we isolate 6 cores (from CPU2 to CPU7) on the same NUMA > +node. Two cores are assigned to the VM vCPUs running testpmd and four > +are assigned to testpmd on the host. > + > + > +Host tuning > +~~~~~~~~~~~ > + > +#. On BIOS, disable turbo-boost and hyper-threads. > + > +#. Append these options to Kernel command line: > + > + .. code-block:: console > + > + intel_pstate=3Ddisable mce=3Dignore_ce default_hugepagesz=3D1G > + hugepagesz=3D1G hugepages=3D6 isolcpus=3D2-7 rcu_nocbs=3D2-7 nohz_full= =3D2-7 > + iommu=3Dpt intel_iommu=3Don > + > +#. Disable hyper-threads at runtime if necessary or if BIOS is not > accessible: > + > + .. code-block:: console > + > + cat /sys/devices/system/cpu/cpu*[0-9]/topology/thread_siblings_lis= t > \ > + | sort | uniq \ > + | awk -F, '{system("echo 0 > > /sys/devices/system/cpu/cpu"$2"/online")}' > + > +#. Disable NMIs: > + > + .. code-block:: console > + > + echo 0 > /proc/sys/kernel/nmi_watchdog > + > +#. Exclude isolated CPUs from the writeback cpumask: > + > + .. code-block:: console > + > + echo ffffff03 > /sys/bus/workqueue/devices/writeback/cpumask > + > +#. Isolate CPUs from IRQs: > + > + .. code-block:: console > + > + clear_mask=3D0xfc #Isolate CPU2 to CPU7 from IRQs > + for i in /proc/irq/*/smp_affinity > + do > + echo "obase=3D16;$(( 0x$(cat $i) & ~$clear_mask ))" | bc > $i > + done > + > + > +Qemu build > +~~~~~~~~~~ > + > +Build Qemu: > + > + .. code-block:: console > + > + git clone git://git.qemu.org/qemu.git > + cd qemu > + mkdir bin > + cd bin > + ../configure --target-list=3Dx86_64-softmmu > + > + > +DPDK build > +~~~~~~~~~~ > + > +Build DPDK: > + > + .. code-block:: console > + > + git clone git://dpdk.org/dpdk > + cd dpdk > + export RTE_SDK=3D$PWD > + make install T=3Dx86_64-native-linuxapp-gcc DESTDIR=3Dinstall > + > + > +Testpmd launch > +~~~~~~~~~~~~~~ > + > +#. Assign NICs to DPDK: > + > + .. code-block:: console > + > + modprobe vfio-pci > + $RTE_SDK/install/sbin/dpdk-devbind -b vfio-pci 0000:11:00.0 > + 0000:11:00.1 > + > + .. Note:: > + > + The Sandy Bridge family seems to have some IOMMU limitations givin= g > poor > + performance results. To achieve good performance on these machines > + consider using UIO instead. > + > +#. Launch the testpmd application: > + > + .. code-block:: console > + > + $RTE_SDK/install/bin/testpmd -l 0,2,3,4,5 --socket-mem=3D1024 -n 4= \ > + --vdev 'net_vhost0,iface=3D/tmp/vhost-user1' \ > + --vdev 'net_vhost1,iface=3D/tmp/vhost-user2' -- \ > + --portmask=3Df --disable-hw-vlan -i --rxq=3D1 --txq=3D1 > + --nb-cores=3D4 --forward-mode=3Dio > + > +With this command, isolated CPUs 2 to 5 will be used as lcores for PMD > threads. > + > +#. In testpmd interactive mode, set the portlist to obtain the correct > port > + chaining: > + > + .. code-block:: console > + > + set portlist 0,2,1,3 > + start > + > + > +VM launch > +~~~~~~~~~ > + > +The VM may be launched either by calling QEMU directly, or by using > libvirt. > + > +#. Qemu way: > + > +Launch QEMU with two Virtio-net devices paired to the vhost-user > +sockets created by testpmd. Below example uses default Virtio-net > +options, but options may be specified, for example to disable mergeable > +buffers or indirect descriptors. > + > + .. code-block:: console > + > + /bin/x86_64-softmmu/qemu-system-x86_64 \ > + -enable-kvm -cpu host -m 3072 -smp 3 \ > + -chardev socket,id=3Dchar0,path=3D/tmp/vhost-user1 \ > + -netdev type=3Dvhost-user,id=3Dmynet1,chardev=3Dchar0,vhostfor= ce \ > + -device virtio-net- > pci,netdev=3Dmynet1,mac=3D52:54:00:02:d9:01,addr=3D0x10 \ > + -chardev socket,id=3Dchar1,path=3D/tmp/vhost-user2 \ > + -netdev type=3Dvhost-user,id=3Dmynet2,chardev=3Dchar1,vhostfor= ce \ > + -device virtio-net- > pci,netdev=3Dmynet2,mac=3D52:54:00:02:d9:02,addr=3D0x11 \ > + -object memory-backend-file,id=3Dmem,size=3D3072M,mem- > path=3D/dev/hugepages,share=3Don \ > + -numa node,memdev=3Dmem -mem-prealloc \ > + -net user,hostfwd=3Dtcp::1002$1-:22 -net nic \ > + -qmp unix:/tmp/qmp.socket,server,nowait \ > + -monitor stdio .qcow2 > + > +You can use this `qmp-vcpu-pin > +`_ > +script to pin vCPUs. > + > +It can be used as follows, for example to pin 3 vCPUs to CPUs 1, 6 and > +7, where isolated CPUs 6 and 7 will be used as lcores for Virtio PMDs: > + > + .. code-block:: console > + > + export PYTHONPATH=3D$PYTHONPATH:/scripts/qmp > + ./qmp-vcpu-pin -s /tmp/qmp.socket 1 6 7 > + > +#. Libvirt way: > + > +Some initial steps are required for libvirt to be able to connect to > +testpmd's sockets. > + > +First, SELinux policy needs to be set to permissive, since testpmd is > +generally run as root (note, as reboot is required): > + > + .. code-block:: console > + > + cat /etc/selinux/config > + > + # This file controls the state of SELinux on the system. > + # SELINUX=3D can take one of these three values: > + # enforcing - SELinux security policy is enforced. > + # permissive - SELinux prints warnings instead of enforcing. > + # disabled - No SELinux policy is loaded. > + SELINUX=3Dpermissive > + > + # SELINUXTYPE=3D can take one of three two values: > + # targeted - Targeted processes are protected, > + # minimum - Modification of targeted policy. > + # Only selected processes are protected. > + # mls - Multi Level Security protection. > + SELINUXTYPE=3Dtargeted > + > + > +Also, Qemu needs to be run as root, which has to be specified in > +``/etc/libvirt/qemu.conf``: > + > + .. code-block:: console > + > + user =3D "root" > + > +Once the domain created, the following snippet is an extract of he most > +important information (hugepages, vCPU pinning, Virtio PCI devices): > + > + .. code-block:: xml > + > + > + 3145728 > + 3145728 > + > + > + > + > + > + > + 3 > + > + > + > + > + > + > + > + > + > + > + hvm > + > + > + > + > + > + memAccess=3D'shared'/> > + > + > + > + > + > + > + > + > +
function=3D'0x0'/> > + > + > + > + > + > + > +
function=3D'0x0'/> > + > + > + > + > + > +Guest setup > +----------- > + > + > +Guest tuning > +~~~~~~~~~~~~ > + > +#. Append these options to the Kernel command line: > + > + .. code-block:: console > + > + default_hugepagesz=3D1G hugepagesz=3D1G hugepages=3D1 intel_iommu= =3Don > + iommu=3Dpt isolcpus=3D1,2 rcu_nocbs=3D1,2 nohz_full=3D1,2 > + > +#. Disable NMIs: > + > + .. code-block:: console > + > + echo 0 > /proc/sys/kernel/nmi_watchdog > + > +#. Exclude isolated CPU1 and CPU2 from the writeback cpumask: > + > + .. code-block:: console > + > + echo 1 > /sys/bus/workqueue/devices/writeback/cpumask > + > +#. Isolate CPUs from IRQs: > + > + .. code-block:: console > + > + clear_mask=3D0x6 #Isolate CPU1 and CPU2 from IRQs > + for i in /proc/irq/*/smp_affinity > + do > + echo "obase=3D16;$(( 0x$(cat $i) & ~$clear_mask ))" | bc > $i > + done > + > + > +DPDK build > +~~~~~~~~~~ > + > +Build DPDK: > + > + .. code-block:: console > + > + git clone git://dpdk.org/dpdk > + cd dpdk > + export RTE_SDK=3D$PWD > + make install T=3Dx86_64-native-linuxapp-gcc DESTDIR=3Dinstall > + > + > +Testpmd launch > +~~~~~~~~~~~~~~ > + > +Probe vfio module without iommu: > + > + .. code-block:: console > + > + modprobe -r vfio_iommu_type1 > + modprobe -r vfio > + modprobe vfio enable_unsafe_noiommu_mode=3D1 > + cat /sys/module/vfio/parameters/enable_unsafe_noiommu_mode > + modprobe vfio-pci > + > +Bind the virtio-net devices to DPDK: > + > + .. code-block:: console > + > + $RTE_SDK/tools/dpdk-devbind.py -b vfio-pci 0000:00:10.0 > + 0000:00:11.0 > + > +Start testpmd: > + > + .. code-block:: console > + > + $RTE_SDK/install/bin/testpmd -l 0,1,2 --socket-mem 1024 -n 4 \ > + --proc-type auto --file-prefix pg -- \ > + --portmask=3D3 --forward-mode=3Dmacswap --port-topology=3Dchai= ned \ > + --disable-hw-vlan --disable-rss -i --rxq=3D1 --txq=3D1 \ > + --rxd=3D256 --txd=3D256 --nb-cores=3D2 --auto-start > + > +Results template > +---------------- > + > +Below template should be used when sharing results: > + > + .. code-block:: none > + > + Traffic Generator: > + Acceptable Loss: % > + Validation run time: min > + Host DPDK version/commit: > + Guest DPDK version/commit: > + Patches applied: > + QEMU version/commit: > + Virtio features: default)> > + CPU: , > + NIC: > + Result: Mpps > -- > 2.9.3