Soft Patch Panel
 help / color / Atom feed
From: Hideyuki Yamashita <yamashita.hideyuki@ntt-tx.co.jp>
To: Itsuro Oda <oda@valinux.co.jp>
Cc: spp@dpdk.org, ferruh.yigit@intel.com, yasufum.o@gmail.com
Subject: Re: [spp] (x-fn-spp-ml 744) [PATCH v2] docs: add document of vdev_test tool
Date: Mon, 11 May 2020 11:53:11 +0900
Message-ID: <20200511115311.3800.17218CA3@ntt-tx.co.jp_1> (raw)
In-Reply-To: <20200510234339.28011-1-oda@valinux.co.jp>

Reviewed-by: Hideyuki Yamashita <yamashita.hideyuki@ntt-tx.co.jp>
> This patch adds a document of vdev_test tool.
> 
> Signed-off-by: Itsuro Oda <oda@valinux.co.jp>
> ---
> v2:
> * remove a blank line at EOF
> 
>  .../vdev_test/vdev_test_example_pipe.svg      | 611 ++++++++++++++++++
>  .../vdev_test/vdev_test_example_vhost.svg     | 564 ++++++++++++++++
>  docs/guides/tools/index.rst                   |   1 +
>  docs/guides/tools/vdev_test.rst               |  85 +++
>  4 files changed, 1261 insertions(+)
>  create mode 100644 docs/guides/images/tools/vdev_test/vdev_test_example_pipe.svg
>  create mode 100644 docs/guides/images/tools/vdev_test/vdev_test_example_vhost.svg
>  create mode 100644 docs/guides/tools/vdev_test.rst
> 
> diff --git a/docs/guides/images/tools/vdev_test/vdev_test_example_pipe.svg b/docs/guides/images/tools/vdev_test/vdev_test_example_pipe.svg
> new file mode 100644
> index 0000000..72f5919
> --- /dev/null
> +++ b/docs/guides/images/tools/vdev_test/vdev_test_example_pipe.svg
> @@ -0,0 +1,611 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> +   xmlns:dc="http://purl.org/dc/elements/1.1/"
> +   xmlns:cc="http://creativecommons.org/ns#"
> +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> +   xmlns:svg="http://www.w3.org/2000/svg"
> +   xmlns="http://www.w3.org/2000/svg"
> +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> +   width="152.58044mm"
> +   height="117.89329mm"
> +   viewBox="0 0 540.63939 417.73222"
> +   id="svg2"
> +   version="1.1"
> +   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
> +   sodipodi:docname="vdev_test_example_pipe.svg">
> +  <defs
> +     id="defs4">
> +    <marker
> +       inkscape:stockid="Arrow1Lstart"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow1Lstart"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path6666"
> +         d="M 0,0 5,-5 -12.5,0 5,5 Z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
> +         transform="matrix(0.8,0,0,0.8,10,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker6505"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path6503"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4627"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend"
> +       inkscape:collect="always">
> +      <path
> +         inkscape:connector-curvature="0"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4629" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker4479"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4481"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker1450"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path1448"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow2Lend"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4411"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5907"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5909"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5813"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5815"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5725"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5727"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5643"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5645"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5567"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5569"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5421"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5423"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5137"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5139"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5091"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5093"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5051"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5053"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5017"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5019"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4989"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4991"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow1Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow1Lend"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4462"
> +         d="M 0,0 5,-5 -12.5,0 5,5 Z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
> +         transform="matrix(-0.8,0,0,-0.8,-10,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5567-3"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5569-6"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow2Lend-7"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4411-5"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4627-1"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         inkscape:connector-curvature="0"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4629-2" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5091-0"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5093-6"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +  </defs>
> +  <sodipodi:namedview
> +     id="base"
> +     pagecolor="#ffffff"
> +     bordercolor="#666666"
> +     borderopacity="1.0"
> +     inkscape:pageopacity="0.0"
> +     inkscape:pageshadow="2"
> +     inkscape:zoom="0.7"
> +     inkscape:cx="421.5718"
> +     inkscape:cy="86.005928"
> +     inkscape:document-units="px"
> +     inkscape:current-layer="layer5"
> +     showgrid="false"
> +     inkscape:window-width="1643"
> +     inkscape:window-height="854"
> +     inkscape:window-x="167"
> +     inkscape:window-y="74"
> +     inkscape:window-maximized="0"
> +     units="mm"
> +     width="230mm"
> +     fit-margin-top="0"
> +     fit-margin-left="0"
> +     fit-margin-right="0"
> +     fit-margin-bottom="0"
> +     inkscape:snap-global="true"
> +     inkscape:snap-bbox="true"
> +     inkscape:snap-nodes="true"
> +     inkscape:snap-others="false"
> +     inkscape:bbox-paths="true"
> +     inkscape:snap-intersection-paths="false"
> +     inkscape:object-nodes="false"
> +     inkscape:object-paths="true"
> +     inkscape:lockguides="true" />
> +  <metadata
> +     id="metadata7">
> +    <rdf:RDF>
> +      <cc:Work
> +         rdf:about="">
> +        <dc:format>image/svg+xml</dc:format>
> +        <dc:type
> +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
> +        <dc:title></dc:title>
> +      </cc:Work>
> +    </rdf:RDF>
> +  </metadata>
> +  <g
> +     inkscape:label="Host"
> +     inkscape:groupmode="layer"
> +     id="layer1"
> +     transform="translate(-10.358874,-474.54075)"
> +     style="display:inline">
> +    <rect
> +       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.48551643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4136"
> +       width="539.15393"
> +       height="380.94302"
> +       x="11.101632"
> +       y="475.28351" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer7"
> +     inkscape:label="Host-Resource"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)">
> +    <ellipse
> +       style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="path4297"
> +       cx="273.89044"
> +       cy="724.98724"
> +       rx="39.606403"
> +       ry="19.606396" />
> +    <ellipse
> +       style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="path4301"
> +       cx="273.89044"
> +       cy="666.16315"
> +       rx="39.628456"
> +       ry="18.699877" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer3"
> +     inkscape:label="Container"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)">
> +    <rect
> +       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4391"
> +       width="89.119804"
> +       height="29.11978"
> +       x="119.70796"
> +       y="599.95844" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:1.03222072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 311.77952,662.6264 44.12544,-0.80843"
> +       id="path7074"
> +       inkscape:connector-curvature="0" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer5"
> +     inkscape:label="App"
> +     transform="translate(-10.358874,-474.54075)"
> +     style="display:inline">
> +    <rect
> +       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4223"
> +       width="163.33151"
> +       height="39.045811"
> +       x="87.209244"
> +       y="562.58478"
> +       ry="19.522905" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:1.10747123px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4627)"
> +       d="M 140.0893,722.99672 V 633.28751"
> +       id="path162"
> +       inkscape:connector-curvature="0" />
> +    <rect
> +       style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4391-6"
> +       width="89.119804"
> +       height="29.11978"
> +       x="337.61874"
> +       y="599.95844" />
> +    <rect
> +       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4223-6"
> +       width="163.3315"
> +       height="39.045807"
> +       x="301.37003"
> +       y="562.58484"
> +       ry="19.522903" />
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="384.5358"
> +       y="588.19415"
> +       id="text4225-6"><tspan
> +         sodipodi:role="line"
> +         id="tspan4227-0"
> +         x="384.5358"
> +         y="588.19415"
> +         style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">vdev_test</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="381.96436"
> +       y="620.48944"
> +       id="text4407-8"><tspan
> +         sodipodi:role="line"
> +         x="381.96436"
> +         y="620.48944"
> +         id="tspan4411-7"
> +         style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">pipe:1</tspan></text>
> +    <flowRoot
> +       xml:space="preserve"
> +       id="flowRoot6464"
> +       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
> +         id="flowRegion6466"><rect
> +           id="rect6468"
> +           width="187.14285"
> +           height="97.14286"
> +           x="722.85712"
> +           y="131.09111" /></flowRegion><flowPara
> +         id="flowPara6470" /></flowRoot>    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 193.82777,631.047 0.36869,31.583"
> +       id="path6472"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="display:inline;fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart)"
> +       d="m 355.53003,630.23137 0.36869,31.583"
> +       id="path6472-0"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 194.19646,662.63 41.20492,0.09"
> +       id="path1432"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.80901474px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 140.2696,723.5229 c 93.75001,0 93.75001,0 93.75001,0"
> +       id="path8467"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="display:inline;fill:none;stroke:#000000;stroke-width:0.80901468px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 313.03748,722.98723 c 93.75001,0 93.75001,0 93.75001,0"
> +       id="path8467-2"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="M 406.78749,722.98723 V 629.07821"
> +       id="path8486"
> +       inkscape:connector-curvature="0" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer4"
> +     inkscape:label="Label"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)">
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="170.37502"
> +       y="588.05133"
> +       id="text4225"><tspan
> +         sodipodi:role="line"
> +         id="tspan4227"
> +         x="170.37502"
> +         y="588.05133"
> +         style="font-size:22.50000572px;line-height:1.25">vdev_test</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="45.571438"
> +       y="506.36221"
> +       id="text4327"><tspan
> +         sodipodi:role="line"
> +         id="tspan4329"
> +         x="45.571438"
> +         y="506.36221"
> +         style="font-size:22.50000572px;line-height:1.25">host</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="273.62674"
> +       y="730.41583"
> +       id="text4351"><tspan
> +         sodipodi:role="line"
> +         id="tspan4353"
> +         x="273.62674"
> +         y="730.41583"
> +         style="font-size:22.50000572px;line-height:1.25">ring:0</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="274.08267"
> +       y="671.30603"
> +       id="text4359"><tspan
> +         sodipodi:role="line"
> +         id="tspan4361"
> +         x="274.08267"
> +         y="671.30603"
> +         style="font-size:22.50000572px;line-height:1.25">ring:1</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="167.80359"
> +       y="620.5993"
> +       id="text4407"><tspan
> +         sodipodi:role="line"
> +         x="167.80359"
> +         y="620.5993"
> +         id="tspan4411"
> +         style="font-size:22.50000572px;line-height:1.25">pipe:0</tspan></text>
> +  </g>
> +</svg>
> diff --git a/docs/guides/images/tools/vdev_test/vdev_test_example_vhost.svg b/docs/guides/images/tools/vdev_test/vdev_test_example_vhost.svg
> new file mode 100644
> index 0000000..924e7bf
> --- /dev/null
> +++ b/docs/guides/images/tools/vdev_test/vdev_test_example_vhost.svg
> @@ -0,0 +1,564 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> +   xmlns:dc="http://purl.org/dc/elements/1.1/"
> +   xmlns:cc="http://creativecommons.org/ns#"
> +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> +   xmlns:svg="http://www.w3.org/2000/svg"
> +   xmlns="http://www.w3.org/2000/svg"
> +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> +   width="152.58044mm"
> +   height="117.89329mm"
> +   viewBox="0 0 540.63939 417.73222"
> +   id="svg2"
> +   version="1.1"
> +   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
> +   sodipodi:docname="vdev_test_example_vhost.svg">
> +  <defs
> +     id="defs4">
> +    <marker
> +       inkscape:stockid="Arrow1Lstart"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow1Lstart"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path6666"
> +         d="M 0,0 5,-5 -12.5,0 5,5 Z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
> +         transform="matrix(0.8,0,0,0.8,10,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker6505"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path6503"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4627"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend"
> +       inkscape:collect="always">
> +      <path
> +         inkscape:connector-curvature="0"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4629" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker4479"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4481"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="marker1450"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path1448"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow2Lend"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4411"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5907"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5909"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5813"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5815"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5725"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5727"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5643"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5645"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5567"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5569"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5421"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5423"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5137"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5139"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5091"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5093"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5051"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5053"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5017"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5019"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4989"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4991"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow1Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow1Lend"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4462"
> +         d="M 0,0 5,-5 -12.5,0 5,5 Z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
> +         transform="matrix(-0.8,0,0,-0.8,-10,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5567-3"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5569-6"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:stockid="Arrow2Lend"
> +       orient="auto"
> +       refY="0"
> +       refX="0"
> +       id="Arrow2Lend-7"
> +       style="overflow:visible"
> +       inkscape:isstock="true">
> +      <path
> +         id="path4411-5"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker4627-1"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         inkscape:connector-curvature="0"
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path4629-2" />
> +    </marker>
> +    <marker
> +       inkscape:isstock="true"
> +       style="overflow:visible"
> +       id="marker5091-0"
> +       refX="0"
> +       refY="0"
> +       orient="auto"
> +       inkscape:stockid="Arrow2Lend">
> +      <path
> +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
> +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
> +         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
> +         id="path5093-6"
> +         inkscape:connector-curvature="0" />
> +    </marker>
> +  </defs>
> +  <sodipodi:namedview
> +     id="base"
> +     pagecolor="#ffffff"
> +     bordercolor="#666666"
> +     borderopacity="1.0"
> +     inkscape:pageopacity="0.0"
> +     inkscape:pageshadow="2"
> +     inkscape:zoom="0.7"
> +     inkscape:cx="183.00037"
> +     inkscape:cy="86.005928"
> +     inkscape:document-units="px"
> +     inkscape:current-layer="layer5"
> +     showgrid="false"
> +     inkscape:window-width="1643"
> +     inkscape:window-height="854"
> +     inkscape:window-x="167"
> +     inkscape:window-y="74"
> +     inkscape:window-maximized="0"
> +     units="mm"
> +     width="230mm"
> +     fit-margin-top="0"
> +     fit-margin-left="0"
> +     fit-margin-right="0"
> +     fit-margin-bottom="0"
> +     inkscape:snap-global="true"
> +     inkscape:snap-bbox="true"
> +     inkscape:snap-nodes="true"
> +     inkscape:snap-others="false"
> +     inkscape:bbox-paths="true"
> +     inkscape:snap-intersection-paths="false"
> +     inkscape:object-nodes="false"
> +     inkscape:object-paths="true"
> +     inkscape:lockguides="true" />
> +  <metadata
> +     id="metadata7">
> +    <rdf:RDF>
> +      <cc:Work
> +         rdf:about="">
> +        <dc:format>image/svg+xml</dc:format>
> +        <dc:type
> +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
> +        <dc:title />
> +      </cc:Work>
> +    </rdf:RDF>
> +  </metadata>
> +  <g
> +     inkscape:label="Host"
> +     inkscape:groupmode="layer"
> +     id="layer1"
> +     transform="translate(-10.358874,-474.54075)"
> +     style="display:inline">
> +    <rect
> +       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.48551643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4136"
> +       width="539.15393"
> +       height="380.94302"
> +       x="11.101632"
> +       y="475.28351" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer7"
> +     inkscape:label="Host-Resource"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)" />
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer3"
> +     inkscape:label="Container"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)">
> +    <rect
> +       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:1.05093229;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4391"
> +       width="127.7884"
> +       height="28.949072"
> +       x="105.06117"
> +       y="600.04376" />
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer5"
> +     inkscape:label="App"
> +     transform="translate(-10.358874,-474.54075)"
> +     style="display:inline">
> +    <rect
> +       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4223"
> +       width="163.33151"
> +       height="39.045811"
> +       x="87.209244"
> +       y="562.58478"
> +       ry="19.522905" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:1.10747123px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4627)"
> +       d="M 140.0893,722.99672 V 633.28751"
> +       id="path162"
> +       inkscape:connector-curvature="0" />
> +    <rect
> +       style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:1.09829414;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4391-6"
> +       width="139.79459"
> +       height="28.901709"
> +       x="314.95993"
> +       y="600.0675" />
> +    <rect
> +       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
> +       id="rect4223-6"
> +       width="163.3315"
> +       height="39.045807"
> +       x="301.37003"
> +       y="562.58484"
> +       ry="19.522903" />
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="384.5358"
> +       y="588.19415"
> +       id="text4225-6"><tspan
> +         sodipodi:role="line"
> +         id="tspan4227-0"
> +         x="384.5358"
> +         y="588.19415"
> +         style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">vdev_test</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="383.83936"
> +       y="620.48944"
> +       id="text4407-8"><tspan
> +         sodipodi:role="line"
> +         x="383.83936"
> +         y="620.48944"
> +         id="tspan4411-7"
> +         style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">virtio_user0</tspan></text>
> +    <flowRoot
> +       xml:space="preserve"
> +       id="flowRoot6464"
> +       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
> +         id="flowRegion6466"><rect
> +           id="rect6468"
> +           width="187.14285"
> +           height="97.14286"
> +           x="722.85712"
> +           y="131.09111" /></flowRegion><flowPara
> +         id="flowPara6470" /></flowRoot>    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 193.82777,631.047 0.36869,31.583"
> +       id="path6472"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="display:inline;fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart)"
> +       d="m 353.65503,630.23137 0.36869,31.583"
> +       id="path6472-0"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:1.81228518px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 194.15811,662.63183 160.47807,0.0864"
> +       id="path1432"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:1.36748445px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="m 140.2696,723.5229 c 267.85717,0 267.85717,0 267.85717,0"
> +       id="path8467"
> +       inkscape:connector-curvature="0" />
> +    <path
> +       style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       d="M 406.78749,722.98723 V 629.07821"
> +       id="path8486"
> +       inkscape:connector-curvature="0" />
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="167.47279"
> +       y="621.73688"
> +       id="text4407-8-2"><tspan
> +         sodipodi:role="line"
> +         x="167.47279"
> +         y="621.73688"
> +         id="tspan4411-7-7"
> +         style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">eth_vhost0</tspan></text>
> +  </g>
> +  <g
> +     inkscape:groupmode="layer"
> +     id="layer4"
> +     inkscape:label="Label"
> +     style="display:inline"
> +     transform="translate(-10.358874,-474.54075)">
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="170.37502"
> +       y="588.05133"
> +       id="text4225"><tspan
> +         sodipodi:role="line"
> +         id="tspan4227"
> +         x="170.37502"
> +         y="588.05133"
> +         style="font-size:22.50000572px;line-height:1.25">vdev_test</tspan></text>
> +    <text
> +       xml:space="preserve"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
> +       x="45.571438"
> +       y="506.36221"
> +       id="text4327"><tspan
> +         sodipodi:role="line"
> +         id="tspan4329"
> +         x="45.571438"
> +         y="506.36221"
> +         style="font-size:22.50000572px;line-height:1.25">host</tspan></text>
> +  </g>
> +</svg>
> diff --git a/docs/guides/tools/index.rst b/docs/guides/tools/index.rst
> index c739d79..495b9a8 100644
> --- a/docs/guides/tools/index.rst
> +++ b/docs/guides/tools/index.rst
> @@ -12,3 +12,4 @@ Tools
>  
>     sppc/index
>     helpers/index
> +   vdev_test.rst
> diff --git a/docs/guides/tools/vdev_test.rst b/docs/guides/tools/vdev_test.rst
> new file mode 100644
> index 0000000..90a2647
> --- /dev/null
> +++ b/docs/guides/tools/vdev_test.rst
> @@ -0,0 +1,85 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2020 Nippon Telegraph and Telephone Corporation
> +
> +.. _spp_tools_vdev_test:
> +
> +Vdev_test
> +=========
> +
> +Vdev_test is a simple application that it forwards packets received
> +from rx queue to tx queue on the main core. It can become a secondary
> +process of the spp_primary. It is mainly used for testing spp_pipe
> +but it can be used to test any virtual Ethernet devices as well.
> +
> +Usage
> +-----
> +
> +.. code-block:: none
> +
> +    vdev_test [EAL options] -- [--send] [--create devargs] device-name
> +
> +Vdev_test runs foreground and stops when Ctrl-C is pressed. If ``--send``
> +option specified a packet is sent first. The virtual Ethernet device can
> +be created to specify ``--create`` option.
> +
> +.. note::
> +
> +    Since the device can be created by EAL ``--vdev`` option for a
> +    primary process, ``--create`` option mainly used by a secondary
> +    process.
> +
> +Examples
> +--------
> +
> +Examining spp_pipe
> +~~~~~~~~~~~~~~~~~~
> +
> +.. _figure_vdev_test_example_pipe:
> +
> +.. figure:: ../images/tools/vdev_test/vdev_test_example_pipe.*
> +   :width: 50%
> +
> +It is assumed that pipe ports were created beforehand. First run vdev_test
> +without ``--send`` option.
> +
> +.. code-block:: console
> +
> +    # terminal 1
> +    $ sudo vdev_test -l 8 -n 4 --proc-type secondary -- spp_pipe0
> +
> +Then run vdev_test with ``--send`` option on another terminal.
> +
> +.. code-block:: console
> +
> +    # terminal 2
> +    $ sudo vdev_test -l 9 -n 4 --proc-type secondary -- --send spp_pipe1
> +
> +Press Ctrl-C to stop processes on both terminals after for a while.
> +
> +Examining vhost
> +~~~~~~~~~~~~~~~
> +
> +.. _figure_vdev_test_example_vhost:
> +
> +.. figure:: ../images/tools/vdev_test/vdev_test_example_vhost.*
> +   :width: 50%
> +
> +This example is independent of SPP. First run vdev_test using eth_vhost0
> +without ``--send`` option.
> +
> +.. code-block:: console
> +
> +    # terminal 1
> +    $ sudo vdev_test -l 8 -n 4 --vdev eht_vhost0,iface=/tmp/sock0,client=1 \
> +      --file-prefix=app1 -- eth_vhost0
> +
> +Then run vdev_test using virtio_user0 with ``--send`` option on another
> +terminal.
> +
> +.. code-block:: console
> +
> +    # terminal 1
> +    $ sudo vdev_test -l 9 -n 4 --vdev virtio_user0,path=/tmp/sock0,server=1 \
> +      --file-prefix=app2 --single-file-segments -- --send virtio_user0
> +
> +Press Ctrl-C to stop processes on both terminals after for a while.
> -- 
> 2.17.0




  reply index

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-12 23:02 [spp] [PATCH] " Itsuro Oda
2020-04-30  2:36 ` [spp] (x-fn-spp-ml 675) " Hideyuki Yamashita
2020-05-10 23:43 ` [spp] [PATCH v2] " Itsuro Oda
2020-05-11  2:53   ` Hideyuki Yamashita [this message]
2020-05-25  3:08   ` Yasufumi Ogawa

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200511115311.3800.17218CA3@ntt-tx.co.jp_1 \
    --to=yamashita.hideyuki@ntt-tx.co.jp \
    --cc=ferruh.yigit@intel.com \
    --cc=oda@valinux.co.jp \
    --cc=spp@dpdk.org \
    --cc=yasufum.o@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Soft Patch Panel

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/spp/0 spp/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 spp spp/ http://inbox.dpdk.org/spp \
		spp@dpdk.org
	public-inbox-index spp


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.spp


AGPL code for this site: git clone https://public-inbox.org/ public-inbox