DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v1] doc: add meson build to contributing guide
@ 2018-10-30  4:56 Vipin Varghese
  2018-10-30 10:54 ` Bruce Richardson
  2018-10-30 14:13 ` [dpdk-dev] [PATCH v2] " Vipin Varghese
  0 siblings, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2018-10-30  4:56 UTC (permalink / raw)
  To: bruce.richardson, john.mcnamara, dev, marko.kovacevic
  Cc: amol.patel, stephen1.byrne, Vipin Varghese

Patches has to be validated for meson builds. Updating documentation
for meson build steps in Checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---
 doc/guides/contributing/patches.rst | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a3d788024..494037778 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -468,6 +468,15 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Compliation of patches has to be tested using meson::
+
+    ./devtools/test-meson-builds.sh'
+
+The default build target is for shared library. Build can be modified for
+static and cross build by
+
+ * static by ``--default-library=static``.
+ * arm cross build use ``--cross-file=<path>`` to override default path.
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v1] doc: add meson build to contributing guide
  2018-10-30  4:56 [dpdk-dev] [PATCH v1] doc: add meson build to contributing guide Vipin Varghese
@ 2018-10-30 10:54 ` Bruce Richardson
  2018-10-30 14:13 ` [dpdk-dev] [PATCH v2] " Vipin Varghese
  1 sibling, 0 replies; 43+ messages in thread
From: Bruce Richardson @ 2018-10-30 10:54 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: john.mcnamara, dev, marko.kovacevic, amol.patel, stephen1.byrne

On Tue, Oct 30, 2018 at 10:26:33AM +0530, Vipin Varghese wrote:
> Patches has to be validated for meson builds. Updating documentation
> for meson build steps in Checking Compilation category.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> ---
>  doc/guides/contributing/patches.rst | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
> index a3d788024..494037778 100644
> --- a/doc/guides/contributing/patches.rst
> +++ b/doc/guides/contributing/patches.rst
> @@ -468,6 +468,15 @@ The recommended configurations and options to test compilation prior to submitti
>     export DPDK_DEP_PCAP=y
>     export DPDK_DEP_SSL=y
>  
> +Compliation of patches has to be tested using meson::
> +
> +    ./devtools/test-meson-builds.sh'
> +
> +The default build target is for shared library. Build can be modified for
> +static and cross build by
> +
> + * static by ``--default-library=static``.
> + * arm cross build use ``--cross-file=<path>`` to override default path.
>  

If you are telling people to use test-meson-builds.sh, you don't need these
instructions, since that script builds using both static and shared
settings. The regular builds actually use "static" by default, not
"shared", but note that that only affects app linkage - both libraries are
always built. 

The test-meson-builds.sh script builds most of it's test cases using
shared, simply for reasons of saving space on disk. Doing that number of
static builds can use a *lot* [1.5G or more] of disk space. However,
outside of using the script, DPDK builds default to using "static".

/Bruce

>  Sending Patches
>  ---------------
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v2] doc: add meson build to contributing guide
  2018-10-30  4:56 [dpdk-dev] [PATCH v1] doc: add meson build to contributing guide Vipin Varghese
  2018-10-30 10:54 ` Bruce Richardson
@ 2018-10-30 14:13 ` Vipin Varghese
  2018-10-30 14:18   ` [dpdk-dev] [PATCH v3] " Vipin Varghese
  1 sibling, 1 reply; 43+ messages in thread
From: Vipin Varghese @ 2018-10-30 14:13 UTC (permalink / raw)
  To: bruce.richardson, john.mcnamara, dev, marko.kovacevic
  Cc: amol.patel, stephen1.byrne, Vipin Varghese

Patches has to be validated for meson builds. Updating documentation
for meson build steps in Checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---

V2:
updated the meson build options - Bruce Richardson
---
 doc/guides/contributing/patches.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a3d788024..df86c0e76 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -468,6 +468,12 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Compliation of patches has to be tested using meson::
+
+    ./devtools/test-meson-builds.sh'
+
+This will test for shared and static builds. If gcc arm cross compiler is
+installed, cross build is tested too.
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v3] doc: add meson build to contributing guide
  2018-10-30 14:13 ` [dpdk-dev] [PATCH v2] " Vipin Varghese
@ 2018-10-30 14:18   ` Vipin Varghese
  2018-11-14 14:30     ` Kovacevic, Marko
  2019-01-24 23:05     ` [dpdk-dev] [PATCH v4] doc/patches: " Vipin Varghese
  0 siblings, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2018-10-30 14:18 UTC (permalink / raw)
  To: bruce.richardson, john.mcnamara, dev, marko.kovacevic
  Cc: amol.patel, stephen1.byrne, Vipin Varghese

Patches has to be validated for meson builds. Updating documentation
for meson build steps in Checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---

V3:
removed extra character - Vipin Varghese

V2:
updated the meson build options - Bruce Richardson
---
 doc/guides/contributing/patches.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a3d788024..adcadb817 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -468,6 +468,12 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Compliation of patches has to be tested using meson::
+
+    ./devtools/test-meson-builds.sh
+
+This will test for shared and static builds. If gcc arm cross compiler is
+installed, cross build is tested too.
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v3] doc: add meson build to contributing guide
  2018-10-30 14:18   ` [dpdk-dev] [PATCH v3] " Vipin Varghese
@ 2018-11-14 14:30     ` Kovacevic, Marko
  2018-11-24 18:57       ` Thomas Monjalon
  2019-01-24 23:05     ` [dpdk-dev] [PATCH v4] doc/patches: " Vipin Varghese
  1 sibling, 1 reply; 43+ messages in thread
From: Kovacevic, Marko @ 2018-11-14 14:30 UTC (permalink / raw)
  To: Varghese, Vipin, Richardson, Bruce, Mcnamara, John, dev
  Cc: Patel, Amol, Byrne, Stephen1

> Patches has to be validated for meson builds. Updating documentation for
> meson build steps in Checking Compilation category.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> ---
> 
> V3:
> removed extra character - Vipin Varghese
> 
> V2:
> updated the meson build options - Bruce Richardson
> ---
>  doc/guides/contributing/patches.rst | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/doc/guides/contributing/patches.rst
> b/doc/guides/contributing/patches.rst
> index a3d788024..adcadb817 100644
> --- a/doc/guides/contributing/patches.rst
> +++ b/doc/guides/contributing/patches.rst
> @@ -468,6 +468,12 @@ The recommended configurations and options to
> test compilation prior to submitti
>     export DPDK_DEP_PCAP=y
>     export DPDK_DEP_SSL=y
> 
> +Compliation of patches has to be tested using meson::
> +
> +    ./devtools/test-meson-builds.sh
> +
> +This will test for shared and static builds. If gcc arm cross compiler
> +is installed, cross build is tested too.
> 
>  Sending Patches
>  ---------------

Ran the script all runs fine 

Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v3] doc: add meson build to contributing guide
  2018-11-14 14:30     ` Kovacevic, Marko
@ 2018-11-24 18:57       ` Thomas Monjalon
  2019-01-10 16:37         ` Varghese, Vipin
  0 siblings, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2018-11-24 18:57 UTC (permalink / raw)
  To: Kovacevic, Marko, Varghese, Vipin
  Cc: dev, Richardson, Bruce, Mcnamara, John, Patel, Amol, Byrne,
	Stephen1, honnappa.nagarahalli

14/11/2018 15:30, Kovacevic, Marko:
> > Patches has to be validated for meson builds. Updating documentation for
> > meson build steps in Checking Compilation category.
> > 
> > Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> > --- a/doc/guides/contributing/patches.rst
> > +++ b/doc/guides/contributing/patches.rst
> > @@ -468,6 +468,12 @@ The recommended configurations and options to
> > test compilation prior to submitti
> >     export DPDK_DEP_PCAP=y
> >     export DPDK_DEP_SSL=y
> > 
> > +Compliation of patches has to be tested using meson::
> > +
> > +    ./devtools/test-meson-builds.sh
> > +
> > +This will test for shared and static builds. If gcc arm cross compiler
> > +is installed, cross build is tested too.
> > 
> >  Sending Patches
> >  ---------------
> 
> Ran the script all runs fine 
> 
> Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>

Yes we must add such explanation, but it can be improved.

We should make clear that meson must be tested in addition of make.

We could be more explicit about cross-compilation, saying on x86 host,
both x86 and Arm can be compiled thanks to the cross compilers.

More details:
- s/Compliation/Compilation/
- the double blank line is removed before next header

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v3] doc: add meson build to contributing guide
  2018-11-24 18:57       ` Thomas Monjalon
@ 2019-01-10 16:37         ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-01-10 16:37 UTC (permalink / raw)
  To: Thomas Monjalon, Kovacevic, Marko
  Cc: dev, Richardson, Bruce, Mcnamara, John, Patel, Amol, Byrne,
	Stephen1, honnappa.nagarahalli

HI Thomas

snipped
> > >
> > > +Compliation of patches has to be tested using meson::
> > > +
> > > +    ./devtools/test-meson-builds.sh
> > > +
> > > +This will test for shared and static builds. If gcc arm cross
> > > +compiler is installed, cross build is tested too.
> > >
> > >  Sending Patches
> > >  ---------------
> >
> > Ran the script all runs fine
> >
> > Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
> > Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
> 
> Yes we must add such explanation, but it can be improved.
> 
> We should make clear that meson must be tested in addition of make.

In Patch ' https://patches.dpdk.org/patch/47562/´as per suggestion Bruce, we have given emphasis on  ' Compliation of patches has to be tested using meson'. In my opinion, this is bare minimum one liner, which is required to be executed for any patch before sending.
 
> 
> We could be more explicit about cross-compilation, saying on x86 host, both
> x86 and Arm can be compiled thanks to the cross compilers.
> 
I believe this should be covered about compilation section and features.

> More details:
> - s/Compliation/Compilation/
> - the double blank line is removed before next header
> 
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v4] doc/patches: add meson build to contributing guide
  2018-10-30 14:18   ` [dpdk-dev] [PATCH v3] " Vipin Varghese
  2018-11-14 14:30     ` Kovacevic, Marko
@ 2019-01-24 23:05     ` Vipin Varghese
  2019-01-28  0:39       ` Thomas Monjalon
  2019-01-29 10:10       ` [dpdk-dev] [PATCH v5] " Vipin Varghese
  1 sibling, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-01-24 23:05 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

Patches has to be validated for meson devtool script for
code and document changes. Updating documentation for meson
build steps in checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---

V4:
 - spelling correction for Compilation - Thomas Monjalon
 - restored double space for new header - Thomas Monjalon
 - reword the meson compilation content - Vipin Varghese
 - Added 'tested' and 'acked' from - Marko Kovacevic

V3:
 removed extra character - Vipin Varghese

V2:
 updated the meson build options - Bruce Richardson
---
 doc/guides/contributing/patches.rst | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a64bb0368..e9048bbc0 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -473,6 +473,14 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Compilation of patches is to be tested with ``test-meson-builds.sh`` script
+in ``devtools`` directory of the DPDK repo::
+
+   devtools/test-meson-builds.sh
+
+The script internally checks for dependencies and tool chain. Then builds with
+shared and static libraries for Linux and BSD targets.
+
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc/patches: add meson build to contributing guide
  2019-01-24 23:05     ` [dpdk-dev] [PATCH v4] doc/patches: " Vipin Varghese
@ 2019-01-28  0:39       ` Thomas Monjalon
  2019-01-28 14:27         ` Varghese, Vipin
  2019-01-29 10:10       ` [dpdk-dev] [PATCH v5] " Vipin Varghese
  1 sibling, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2019-01-28  0:39 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: dev, john.mcnamara, marko.kovacevic, ferruh.yigit,
	sanjay.padubidri, amol.patel

25/01/2019 00:05, Vipin Varghese:
> Patches has to be validated for meson devtool script for
> code and document changes. Updating documentation for meson
> build steps in checking Compilation category.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
> ---
> 
> V4:
>  - spelling correction for Compilation - Thomas Monjalon
>  - restored double space for new header - Thomas Monjalon
>  - reword the meson compilation content - Vipin Varghese
>  - Added 'tested' and 'acked' from - Marko Kovacevic
> 
> V3:
>  removed extra character - Vipin Varghese
> 
> V2:
>  updated the meson build options - Bruce Richardson
> ---
>  doc/guides/contributing/patches.rst | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
> index a64bb0368..e9048bbc0 100644
> --- a/doc/guides/contributing/patches.rst
> +++ b/doc/guides/contributing/patches.rst
> @@ -473,6 +473,14 @@ The recommended configurations and options to test compilation prior to submitti
>     export DPDK_DEP_PCAP=y
>     export DPDK_DEP_SSL=y

The lines above are about the "make system".
We need a transition to explain that the "meson system" is different.

> +Compilation of patches is to be tested with ``test-meson-builds.sh`` script
> +in ``devtools`` directory of the DPDK repo::

Would be more straight-forward to give the full path:
	devtools/test-meson-builds.sh
No need to add "DPDK repo".

> +
> +   devtools/test-meson-builds.sh

Do we really need to repeat the script name here?

> +
> +The script internally checks for dependencies and tool chain. Then builds with

tool chain -> toolchain

> +shared and static libraries for Linux and BSD targets.

Why "Linux and BSD" ? It is just testing for the running OS.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc/patches: add meson build to contributing guide
  2019-01-28  0:39       ` Thomas Monjalon
@ 2019-01-28 14:27         ` Varghese, Vipin
  2019-01-28 14:52           ` Thomas Monjalon
  0 siblings, 1 reply; 43+ messages in thread
From: Varghese, Vipin @ 2019-01-28 14:27 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh, Padubidri,
	Sanjay A, Patel, Amol

Hi Thomas,

snipped 
> > +Compilation of patches is to be tested with ``test-meson-builds.sh``
> > +script in ``devtools`` directory of the DPDK repo::
> 
> Would be more straight-forward to give the full path:
> 	devtools/test-meson-builds.sh
I also like to use ' devtools/test-meson-builds.sh', but based I followed the formatting used for 'test-build.sh'. 

Which is ``` Compilation of patches and changes should be tested using the test-build.sh script in the devtools directory of the DPDK repo```. 

> No need to add "DPDK repo".
> 
> > +
> > +   devtools/test-meson-builds.sh
> 
> Do we really need to repeat the script name here?
Same as above. 

Note: please let me know if you still require the change for above items?

> 
> > +
> > +The script internally checks for dependencies and tool chain. Then
> > +builds with
> 
> tool chain -> toolchain
I will fix this and share the updated version.

> 
> > +shared and static libraries for Linux and BSD targets.
> 
> Why "Linux and BSD" ? It is just testing for the running OS.
The default execution generates for default targets as ' build-gcc-shared, build-gcc-static & build-x86-default'. If cross build is supported ' build-clang-shared & build-clang-static'.

As per my understanding this will true for Linux and BSD (Windows I am not aware). Hence I mention it as 'Linux and BSD'.

Note: 
1. If it is with regard to wording I can reword from ' Then builds with shared and static libraries for Linux and BSD targets' to 'Then binaries are built with static and shared library for default and arm cross build on Linux and BSD'
2.if support & built infrastructure works for Windows I can reword from ' Then builds with shared and static libraries for Linux and BSD targets' to 'Then binaries are built with static and shared library for default and arm cross build for Host OS'

Please let me know is 1 or 2 is right one?

> 
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc/patches: add meson build to contributing guide
  2019-01-28 14:27         ` Varghese, Vipin
@ 2019-01-28 14:52           ` Thomas Monjalon
  2019-01-28 15:40             ` Varghese, Vipin
  0 siblings, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2019-01-28 14:52 UTC (permalink / raw)
  To: Varghese, Vipin
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh, Padubidri,
	Sanjay A, Patel, Amol

28/01/2019 15:27, Varghese, Vipin:
> Hi Thomas,
> 
> snipped 
> > > +Compilation of patches is to be tested with ``test-meson-builds.sh``
> > > +script in ``devtools`` directory of the DPDK repo::
> > 
> > Would be more straight-forward to give the full path:
> > 	devtools/test-meson-builds.sh
> I also like to use ' devtools/test-meson-builds.sh', but based I followed the formatting used for 'test-build.sh'. 
> 
> Which is ``` Compilation of patches and changes should be tested using the test-build.sh script in the devtools directory of the DPDK repo```. 
> 
> > No need to add "DPDK repo".
> > 
> > > +
> > > +   devtools/test-meson-builds.sh
> > 
> > Do we really need to repeat the script name here?
> Same as above. 
> 
> Note: please let me know if you still require the change for above items?

Yes I've seen it was like that for make test.
Given the meson test script has no argument, it's better to make it
simple and just give the full path.

> > > +The script internally checks for dependencies and tool chain. Then
> > > +builds with
> > 
> > tool chain -> toolchain
> I will fix this and share the updated version.
> 
> > > +shared and static libraries for Linux and BSD targets.
> > 
> > Why "Linux and BSD" ? It is just testing for the running OS.
> The default execution generates for default targets as ' build-gcc-shared, build-gcc-static & build-x86-default'. If cross build is supported ' build-clang-shared & build-clang-static'.
> 
> As per my understanding this will true for Linux and BSD (Windows I am not aware). Hence I mention it as 'Linux and BSD'.
> 
> Note: 
> 1. If it is with regard to wording I can reword from ' Then builds with shared and static libraries for Linux and BSD targets' to 'Then binaries are built with static and shared library for default and arm cross build on Linux and BSD'
> 2.if support & built infrastructure works for Windows I can reword from ' Then builds with shared and static libraries for Linux and BSD targets' to 'Then binaries are built with static and shared library for default and arm cross build for Host OS'
> 
> Please let me know is 1 or 2 is right one?

We must avoid giving too much details because it will be outdated quickly
when updating the script. Please keep it simple and don't mention
Linux/BSD or Arm.
You can just explain the intent: it is testing several combinations of
compilation configurations.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc/patches: add meson build to contributing guide
  2019-01-28 14:52           ` Thomas Monjalon
@ 2019-01-28 15:40             ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-01-28 15:40 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh, Padubidri,
	Sanjay A, Patel, Amol

Thanks Thomas for the updates, I will check and send next version soon

> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Monday, January 28, 2019 8:23 PM
> To: Varghese, Vipin <vipin.varghese@intel.com>
> Cc: dev@dpdk.org; Mcnamara, John <john.mcnamara@intel.com>; Kovacevic,
> Marko <marko.kovacevic@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v4] doc/patches: add meson build to
> contributing guide
> 
> 28/01/2019 15:27, Varghese, Vipin:
> > Hi Thomas,
> >
> > snipped
> > > > +Compilation of patches is to be tested with
> > > > +``test-meson-builds.sh`` script in ``devtools`` directory of the DPDK
> repo::
> > >
> > > Would be more straight-forward to give the full path:
> > > 	devtools/test-meson-builds.sh
> > I also like to use ' devtools/test-meson-builds.sh', but based I followed the
> formatting used for 'test-build.sh'.
> >
> > Which is ``` Compilation of patches and changes should be tested using the
> test-build.sh script in the devtools directory of the DPDK repo```.
> >
> > > No need to add "DPDK repo".
> > >
> > > > +
> > > > +   devtools/test-meson-builds.sh
> > >
> > > Do we really need to repeat the script name here?
> > Same as above.
> >
> > Note: please let me know if you still require the change for above items?
> 
> Yes I've seen it was like that for make test.
> Given the meson test script has no argument, it's better to make it simple and
> just give the full path.
> 
> > > > +The script internally checks for dependencies and tool chain.
> > > > +Then builds with
> > >
> > > tool chain -> toolchain
> > I will fix this and share the updated version.
> >
> > > > +shared and static libraries for Linux and BSD targets.
> > >
> > > Why "Linux and BSD" ? It is just testing for the running OS.
> > The default execution generates for default targets as ' build-gcc-shared,
> build-gcc-static & build-x86-default'. If cross build is supported ' build-clang-
> shared & build-clang-static'.
> >
> > As per my understanding this will true for Linux and BSD (Windows I am not
> aware). Hence I mention it as 'Linux and BSD'.
> >
> > Note:
> > 1. If it is with regard to wording I can reword from ' Then builds with shared
> and static libraries for Linux and BSD targets' to 'Then binaries are built with
> static and shared library for default and arm cross build on Linux and BSD'
> > 2.if support & built infrastructure works for Windows I can reword from '
> Then builds with shared and static libraries for Linux and BSD targets' to 'Then
> binaries are built with static and shared library for default and arm cross build
> for Host OS'
> >
> > Please let me know is 1 or 2 is right one?
> 
> We must avoid giving too much details because it will be outdated quickly
> when updating the script. Please keep it simple and don't mention Linux/BSD
> or Arm.
> You can just explain the intent: it is testing several combinations of
> compilation configurations.
> 
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v5] doc/patches: add meson build to contributing guide
  2019-01-24 23:05     ` [dpdk-dev] [PATCH v4] doc/patches: " Vipin Varghese
  2019-01-28  0:39       ` Thomas Monjalon
@ 2019-01-29 10:10       ` Vipin Varghese
  2019-02-12  9:36         ` Thomas Monjalon
  2019-02-13  5:41         ` [dpdk-dev] [PATCH v6] " Vipin Varghese
  1 sibling, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-01-29 10:10 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

Patches has to be validated for meson devtool script for
code and document changes. Updating documentation for meson
build steps in checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---

V5:
 create sub section to Compilation - Thomas Monjalon
 remove Linux and BSD references - Thomas Monjalon
 reword tool chain to toolchain - Thomas Monjalon

V4:
 spelling correction for Compilation - Thomas Monjalon
 restored double space for new header - Thomas Monjalon
 reword the meson compilation content - Vipin Varghese
 added 'tested' and 'acked' from - Marko Kovacevic

V3:
 removed extra character - Vipin Varghese

V2:
 updated the meson build options - Bruce Richardson
---
 doc/guides/contributing/patches.rst | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a64bb0368..4b6b00b7a 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -473,6 +473,14 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Meson system
+~~~~~~~~~~~~
+
+Compilation of patches is to be tested with ``devtools/test-meson-builds.sh`` script in ``devtools``
+
+The script internally checks for dependencies, then builds for several
+combinations of compilation configuration.
+
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v5] doc/patches: add meson build to contributing guide
  2019-01-29 10:10       ` [dpdk-dev] [PATCH v5] " Vipin Varghese
@ 2019-02-12  9:36         ` Thomas Monjalon
  2019-02-13  5:38           ` Varghese, Vipin
  2019-02-13  5:41         ` [dpdk-dev] [PATCH v6] " Vipin Varghese
  1 sibling, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2019-02-12  9:36 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: dev, john.mcnamara, marko.kovacevic, ferruh.yigit,
	sanjay.padubidri, amol.patel, bruce.richardson

29/01/2019 11:10, Vipin Varghese:
> +Meson system
> +~~~~~~~~~~~~

What do you think about adding "Makefile system" title for previous section?
We could also add an introduction explaining that both systems must be tested.

> +
> +Compilation of patches is to be tested with ``devtools/test-meson-builds.sh`` script in ``devtools``

A dot is missing. You may remove "in ``devtools``" as it is already in the path.

> +
> +The script internally checks for dependencies, then builds for several
> +combinations of compilation configuration.
> +

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v5] doc/patches: add meson build to contributing guide
  2019-02-12  9:36         ` Thomas Monjalon
@ 2019-02-13  5:38           ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-02-13  5:38 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh, Padubidri,
	Sanjay A, Patel, Amol, Richardson, Bruce

Sure, I will share v6 with the changes

> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Tuesday, February 12, 2019 3:06 PM
> To: Varghese, Vipin <vipin.varghese@intel.com>
> Cc: dev@dpdk.org; Mcnamara, John <john.mcnamara@intel.com>; Kovacevic,
> Marko <marko.kovacevic@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Richardson, Bruce <bruce.richardson@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v5] doc/patches: add meson build to contributing
> guide
> 
> 29/01/2019 11:10, Vipin Varghese:
> > +Meson system
> > +~~~~~~~~~~~~
> 
> What do you think about adding "Makefile system" title for previous section?
> We could also add an introduction explaining that both systems must be tested.
> 
> > +
> > +Compilation of patches is to be tested with
> > +``devtools/test-meson-builds.sh`` script in ``devtools``
> 
> A dot is missing. You may remove "in ``devtools``" as it is already in the path.
> 
> > +
> > +The script internally checks for dependencies, then builds for
> > +several combinations of compilation configuration.
> > +
> 
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide
  2019-01-29 10:10       ` [dpdk-dev] [PATCH v5] " Vipin Varghese
  2019-02-12  9:36         ` Thomas Monjalon
@ 2019-02-13  5:41         ` Vipin Varghese
  2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
  2019-02-27 11:41           ` [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide Thomas Monjalon
  1 sibling, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-02-13  5:41 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit,
	bruce.richardson, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

Patches has to be validated for meson devtool script for
code and document changes. Updating documentation for meson
build steps in checking Compilation category.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---

V6:
 added 'Makefile' sub-header - Thomas Monjalon
 reword the content - Thomas Monjalon

V5:
 create sub section to Compilation - Thomas Monjalon
 remove Linux and BSD references - Thomas Monjalon
 reword tool chain to toolchain - Thomas Monjalon

V4:
 spelling correction for Compilation - Thomas Monjalon
 restored double space for new header - Thomas Monjalon
 reword the meson compilation content - Vipin Varghese
 added 'tested' and 'acked' from - Marko Kovacevic

V3:
 removed extra character - Vipin Varghese

V2:
 updated the meson build options - Bruce Richardson
---
 doc/guides/contributing/patches.rst | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst
index a64bb0368..211a5cdc7 100644
--- a/doc/guides/contributing/patches.rst
+++ b/doc/guides/contributing/patches.rst
@@ -431,6 +431,9 @@ Where the range is a ``git log`` option.
 Checking Compilation
 --------------------
 
+Makefile System
+~~~~~~~~~~~~~~~
+
 Compilation of patches and changes should be tested using the ``test-build.sh`` script in the ``devtools``
 directory of the DPDK repo::
 
@@ -473,6 +476,14 @@ The recommended configurations and options to test compilation prior to submitti
    export DPDK_DEP_PCAP=y
    export DPDK_DEP_SSL=y
 
+Meson System
+~~~~~~~~~~~~
+
+Compilation of patches is to be tested with ``devtools/test-meson-builds.sh`` script.
+
+The script internally checks for dependencies, then builds for several
+combinations of compilation configuration.
+
 
 Sending Patches
 ---------------
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot.
  2019-02-13  5:41         ` [dpdk-dev] [PATCH v6] " Vipin Varghese
@ 2019-02-25 17:12           ` Vipin Varghese
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
                               ` (2 more replies)
  2019-02-27 11:41           ` [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide Thomas Monjalon
  1 sibling, 3 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-02-25 17:12 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit,
	shreyansh.jain, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

The patch series adds a how-to guide for debugging and
troubleshooting tips.

Motivation
==========

DPDK proc-info tool is been enhanced to accommodate the debug information
for the port, traffic manager crypto, ring and mempool contents. With these
additional information, it becomes easy to analyze issues and performance
variance.

But applications are designed based on the target platform, workload, poll
mode drivers, and multi-process. This raises variance in debugging and
collecting data. Hence attempt of patch series is identified such symptoms
and share step by step guide to cover the cases.

Not all possible cases could be covered in a single attempt. But with
feedback and support from the community, this can be expanded.

Status
======

Reviews and changes accommodated. ACK received for documentation and SVG
files.

Change Log:
==========

V7:
 - add space to note and indent - John Macnamara

V6:
 - correction for word style and grammar - Thomas Monjalon
 - add license for svg files - Vipin Varghese

v5:
 - rework of content - Vipin Varghese

V4:
 - Correction for word style - Shreyansh Jain

V3:
 - reorder for removing warning in 'make doc-guides-html' - Thomas Monjalon

V2:
 - add offload flag check - Vipin Varghese
 - change tab to space - Marko Kovacevic
 - spelling correction - Marko Kovacevic
 - remove extra characters - Marko Kovacevic
 - add ACK by Marko - Vipn Varghese
 - add ACK from Marko - Vipin Varghese


Vipin Varghese (2):
  doc: add svg for debug and troubleshoot guide
  doc: add guide for debug and troubleshoot

 doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_crypto.svg           |  21 +
 .../howto/img/dtg_distributor_worker.svg      |  36 ++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 ++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 +
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 +++++
 doc/guides/howto/img/dtg_service.svg          |  20 +
 doc/guides/howto/index.rst                    |   1 +
 13 files changed, 848 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide
  2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
@ 2019-02-25 17:12             ` Vipin Varghese
  2019-04-01 14:56               ` Mcnamara, John
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
  2019-04-01  4:08             ` [dpdk-dev] [PATCH v7 " Varghese, Vipin
  2 siblings, 1 reply; 43+ messages in thread
From: Vipin Varghese @ 2019-02-25 17:12 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit,
	shreyansh.jain, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

Add svg images for debug and troubleshoot guide.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
---
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_crypto.svg           |  21 ++++
 .../howto/img/dtg_distributor_worker.svg      |  36 ++++++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +++++
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++++++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 +++++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 ++++
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++++++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 ++++++++++++++++++
 doc/guides/howto/img/dtg_service.svg          |  20 ++++
 11 files changed, 382 insertions(+)
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

diff --git a/doc/guides/howto/img/dtg_consumer_ring.svg b/doc/guides/howto/img/dtg_consumer_ring.svg
new file mode 100644
index 000000000..d8cf0c292
--- /dev/null
+++ b/doc/guides/howto/img/dtg_consumer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>consumer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 177.864990234375,48.89100646972658) " id="svg_7" d="m155.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 434.864990234375,48.89100646972656) " id="svg_8" d="m412.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m225.937481,47.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m475.937481,46.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_crypto.svg b/doc/guides/howto/img/dtg_crypto.svg
new file mode 100644
index 000000000..969f8b5d5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_crypto.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="180" height="230" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>crypto</title>
+  <rect fill="#fff" id="canvas_background" height="232" width="182" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="369.4375" x="838.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="222.4375" x="39.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 7</text>
+  <rect stroke="#000" id="svg_26" height="44.000003" width="155.000001" y="151.437497" x="6.499997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_27" y="179.4375" x="13.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">CRYPTO PMD</text>
+  <ellipse stroke="#000" ry="41.5" rx="66.500001" id="svg_28" cy="48.9375" cx="87.999997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_29" y="57.4375" x="45.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Device</text>
+  <path stroke="#000" transform="rotate(-90.19718170166016 85.76751708984375,119.45785522460936) " id="svg_30" d="m40.743289,119.457895l26.106598,-13.915756l0,6.95786l37.835289,0l0,-6.95786l26.106586,13.915756l-26.106586,13.915682l0,-6.957842l-37.835289,0l0,6.957842l-26.106598,-13.915682z" stroke-opacity="null" stroke-width="0" fill="#845335"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_distributor_worker.svg b/doc/guides/howto/img/dtg_distributor_worker.svg
new file mode 100644
index 000000000..d2638ded8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_distributor_worker.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="600" height="235" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>distributor and worker</title>
+  <rect fill="#fff" id="canvas_background" height="237" width="602" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="89.999991" width="202.000004" y="21.000003" x="4" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start"
+   font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="47" x="7"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">PKT classify</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="96.5" x="25.992188" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Distribute</text>
+  <path id="svg_13" d="m334.224445,98.046256l16.252783,-5.432074l-16.252783,-5.429993l-16.256262,-5.427952l0,6.038517c-4.264321,-0.004069 -11.331234,-0.004069 -13.334561,-0.004069c-5.919233,-0.081711 -9.804243,-1.153783 -13.847174,-3.073397c-6.02597,-2.865095 -11.16889,-8.021466 -17.371313,-12.989922c-3.154554,-2.470933 -6.669049,-4.921502 -11.349751,-6.892119c-4.633926,-1.978838 -10.68815,-3.351144 -17.41807,-3.324591l-29.170102,0l0,9.646983l29.170102,0c4.056131,0.042884 6.623169,0.808657 10.124445,2.70786c5.179989,2.824261 10.230311,8.223602 17.195784,13.339136c6.826056,5.066481 17.329865,10.182006 32.564612,10.231017l13.436029,0l0,6.0385l16.256262,-5.427896zm-68.759273,-36.535597c0.184389,0.075572 0.379369,0.14089 0.559297,0.218526c5.559349,2.340242 9.573988,5.211493 12.751502,7.709001c0.730423,0.584013 1.377934,1.145611 2.071302,1.719456l37.120911,0l0,6.040581l16.256262,-5.42798l16.252783,-5.429962l-16.252783,-5.432037l-16.256262,-5.434093l0,6.036509l-52.503011,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFAC8D"/>
+  <rect stroke="#000" id="svg_17" height="110.999999" width="180" y="3.4375" x="353.5"
+   stroke-opacity="null" stroke-width="0" fill="#FABA6F"/>
+  <rect stroke="#000" id="svg_14" height="110.999999" width="180" y="31.4375" x="369.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_15" height="110.999999" width="180" y="58.4375" x="392.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFF093"/>
+  <rect stroke="#000" id="svg_16" height="110.999999" width="180" y="90.4375" x="413.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,142.60348030924797,64.2037038393319) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="71.490132" x="413.769676" stroke-opacity="null" stroke-width="0" fill="#000000">worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="101.332237" x="406.404514" stroke-opacity="null" stroke-width="0" fill="#000000">worker 2</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="58.700658" x="376.943866" stroke-opacity="null" stroke-width="0" fill="#000000">worker 3</text>
+  <text style="cursor: move;" stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="18.911184" x="350.429283" stroke-opacity="null" stroke-width="0" fill="#000000">worker 4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="139.4375" x="49.5"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_24" y="226.4375" x="404.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4,5</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_mempool.svg b/doc/guides/howto/img/dtg_mempool.svg
new file mode 100644
index 000000000..2f53a3ca8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_mempool.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="955" height="185" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>mempool</title>
+  <rect fill="#fff" id="canvas_background" height="187" width="957" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="370.4375" x="839.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <rect stroke="#000" id="svg_31" height="181.000002" width="951.000029" y="2.4375" x="3.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_32" y="167.4375" x="14.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">MBUF pool</text>
+  <rect id="svg_38" height="71" width="859" y="15.4375" x="18.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_39" height="71" width="859" y="32.4375" x="33.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_40" height="71" width="859" y="47.4375" x="52.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_41" height="71" width="859" y="62.4375" x="71.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect stroke="#000" id="svg_42" height="55.999999" width="403.000005" y="69.4375" x="486.499995" stroke-opacity="null" stroke-width="0" fill="#FFAC8D"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="103.4375" x="631.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Payload</text>
+  <rect stroke="#000" id="svg_44" height="56" width="140.999999" y="68.4375" x="292.500001" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_45" y="105.4375" x="303.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Metadata</text>
+  <rect stroke="#000" id="svg_46" height="53" width="185.999997" y="70.4375" x="90.5" stroke-opacity="null" stroke-width="0" fill="#EDFFFF"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_47" y="104.4375" x="105.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">struct mbuf</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_pdump.svg b/doc/guides/howto/img/dtg_pdump.svg
new file mode 100644
index 000000000..4b14fb7ce
--- /dev/null
+++ b/doc/guides/howto/img/dtg_pdump.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="860" height="140" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>pdump</title>
+  <rect fill="#fff" id="canvas_background" height="142" width="862" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_15" height="127.999992" width="568" y="7" x="8.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect id="svg_2" height="51" width="100" y="23" x="22.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_3" height="51" width="100" y="26" x="455.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <path id="svg_7" d="m208.364769,78.968848l12.704559,-5.623238l12.697917,-5.625551l-12.704644,-5.629525l-12.697836,-5.625202l0,6.255891c-3.112384,0 -6.729051,0 -7.940704,0c-5.776899,0.124913 -12.907107,-3.365352 -20.492742,-7.864703c-2.827801,-1.577599 -5.680695,-3.313223 -8.704363,-4.88042c3.023667,-1.569118 5.872475,-3.302747 8.704363,-4.880295c7.585635,-4.493132 14.715839,-7.98967 20.485292,-7.862546l7.94815,-0.002103l0,6.264275l12.697836,-5.627447l12.704644,-5.631775l-12.704644,-5.637807l-12.697836,-5.629547l0,6.260273l-7.944067,0c-11.799214,0.12679 -20.61742,5.506774 -28.333828,9.879239c-7.660201,4.613909 -14.545738,8.087381 -18.539115,7.862617l-22.780531,0l0,9.993806l22.788007,0c3.989952,-0.226969 10.878944,3.248761 18.53841,7.86254c7.71303,4.374678 16.52785,9.750196 28.330427,9.879312l7.940704,0l0,6.262203l0,0l0,0.000003z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <path id="svg_8" d="m439.457308,43.77545l-10.478696,-7.306254l0,8.12971l-18.805519,0c-3.29272,0.296972 -8.977707,-4.212008 -15.298608,-10.195089c-6.365074,-5.675375 -13.639418,-12.638687 -23.37938,-12.824984l-6.552957,0l0,12.959904l6.552957,0c4.770151,-0.167389 10.652051,4.360514 16.914219,10.203329c2.334186,2.041106 4.688512,4.292919 7.183208,6.326016c-2.494696,2.035766 -4.846223,4.290275 -7.183208,6.331424c-6.262164,5.826551 -12.144067,10.365242 -16.908056,10.200515l-6.559117,0l0,12.978808l6.555749,0c9.719269,-0.1646 16.996426,-7.14678 23.382185,-12.814082c6.32147,-5.983193 12.003677,-10.494803 15.299177,-10.203221l18.799357,0l0,8.129634l10.478696,-7.298036l10.484823,-7.303408l-10.484823,-7.314263l-0.000006,-0.000004z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="54" x="53.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_10" y="57" x="486.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_11" y="40" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="77" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="82" x="326.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="40" x="327.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q3</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="114.86203" x="234.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Primary</text>
+  <rect stroke="#000" id="svg_18" height="90.000001" width="201.999994" y="29.437499" x="654.5" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="102.4375" x="684.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Secondary</text>
+  <rect stroke="#000" id="svg_20" height="42.000001" width="184.000001" y="34.437499" x="664.499994" stroke-opacity="null" stroke-width="0" fill="#A0D58A"/>
+  <rect id="svg_21" height="1" width="0" y="366.4375" x="835.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="59.4375" x="668.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Ring BufferQ</text>
+  <path stroke="#000" transform="rotate(89.78996276855469 615.4766845703124,74.49395751953122) " id="svg_24" d="m599.023803,74.414257l17.255478,-33.667333l15.650356,33.667333l-8.226459,0l0,33.826726l-16.452915,0l0,-33.826726l-8.226459,0z" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="22.4375" x="714.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 0</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_producer_ring.svg b/doc/guides/howto/img/dtg_producer_ring.svg
new file mode 100644
index 000000000..e300234cd
--- /dev/null
+++ b/doc/guides/howto/img/dtg_producer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>producer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 197.864990234375,42.89100646972657) " id="svg_7" d="m175.364991,42.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 445.864990234375,47.89100646972657) " id="svg_8" d="m423.364991,47.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m120.937481,42.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m373.937481,45.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_qos_tx.svg b/doc/guides/howto/img/dtg_qos_tx.svg
new file mode 100644
index 000000000..9f1d3b80d
--- /dev/null
+++ b/doc/guides/howto/img/dtg_qos_tx.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="287" height="180" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>qos</title>
+  <rect fill="#fff" id="canvas_background" height="182" width="289" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="180" width="287" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CBFFFF"/>
+  <rect id="svg_10" height="82" width="78" y="17.808165" x="152.25" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="36.808165" x="171.25" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="59.808165" x="188.25" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="113.808165" x="211.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="161.808165" x="161.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="235.775764" x="531.631651" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500273,0,0,0.9358925757041695,106.13283890389599,-107.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="173.881425" x="192.8023" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="66.670315" x="-70.838675" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_18" height="103" width="104" y="26" x="26" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FABA6F"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="79" x="50" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="153" x="27" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 10</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_rate.svg b/doc/guides/howto/img/dtg_rx_rate.svg
new file mode 100644
index 000000000..02f8760c5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_rate.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="116" height="152" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx rate</title>
+  <rect fill="#fff" id="canvas_background" height="154" width="118" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.812613" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.812613" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.812613" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.812613" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.812613" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.621694" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002745,0,0,0.9358925757041695,-60.867161096103985,-178.0100101290174) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.29845" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_tx_drop.svg b/doc/guides/howto/img/dtg_rx_tx_drop.svg
new file mode 100644
index 000000000..ca1484862
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_tx_drop.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="275" height="154" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx-tx drops</title>
+  <rect fill="#fff" id="canvas_background" height="156" width="277" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.808165" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.808165" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.808165" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.808165" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.808165" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.616159" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500274,0,0,0.9358925757041695,-60.867161096103985,-178.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.292073" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_10" height="82" width="78" y="2.808165" x="159.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="21.808165" x="178.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="44.808165" x="195.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="98.808165" x="218.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="146.808165" x="168.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="217.105524" x="547.514971" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002734,0,0,0.9358925757041695,98.13283890389599,-176.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="45.160101" x="-53.681142" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_sample_app_model.svg b/doc/guides/howto/img/dtg_sample_app_model.svg
new file mode 100644
index 000000000..b876aa3b6
--- /dev/null
+++ b/doc/guides/howto/img/dtg_sample_app_model.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="1418" height="379" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>sample application model</title>
+  <rect fill="#fff" id="canvas_background" height="381" width="1420" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_84" height="378.999996" width="1417.999937" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect stroke="#000" id="svg_1" height="79.999993" width="187.000011" y="267" x="635.499996" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="28.000001" width="175.000003" y="271.437495" x="641" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="36.000002" width="142" y="304.437495" x="659" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.7497134942573729,0,0,0.7607963681117937,149.70768863149087,72.0554119542491) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="335.740664" x="684.214296"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="368.437495" x="685"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 7</text>
+  <text stroke="#000" transform="matrix(0.7446371555386645,0,0,0.7004599746900311,157.05848471617847,107.2548065316271) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="261.052167" x="658.840014"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+  <rect id="svg_26" height="91" width="88" y="89.4375" x="2"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_27" height="91" width="88" y="107.4375" x="24"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_28" y="166.4375" x="52"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_30" y="96.937501" x="-11.409091"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_33" y="128.4375" x="27.863636"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_34" y="216.4375" x="26"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core0</text>
+  <rect id="svg_35" height="91" width="88" y="55.4375" x="1303"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_36" height="91" width="88" y="73.4375" x="1325"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_37" y="132.4375" x="1352"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_40" y="184.4375" x="1327"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6296296119689941,200.86111453175545,24.236112266778946) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="74.319853" x="1811.681832"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6958672408102909,0,0,0.6184720487972513,537.7539486343405,-28.040291137315034) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_44" y="191.620936" x="1140.58332"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <rect stroke="#000" id="svg_45" height="62" width="83.000003" y="101.4375" x="1096"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_46" y="135.4375" x="1115"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <rect stroke="#000" id="svg_48" height="61" width="107" y="110.4375" x="649"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_49" y="145.4375" x="661"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">Crypto</text>
+  <rect stroke="#000" id="svg_50" height="70.999998" width="84.000002" y="65.4375" x="422"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_51" height="74.000003" width="90.000002" y="92.4375" x="444"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_52" height="71.999998" width="92" y="120.4375" x="468"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_53" y="-145.374996" x="553.425418"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_54" y="417.437503" x="420.257696" stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_55" y="-19.012521" x="530.011964"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <rect stroke="#000" id="svg_62" height="70.999998" width="84.000002" y="67.4375" x="865"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_63" height="74.000003" width="90.000002" y="94.4375" x="887"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_64" height="71.999998" width="92" y="122.4375" x="911"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_65" y="-143.687496" x="1238.132093"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_66" y="420.437503" x="1072.811052"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_67" y="-16.312521" x="1122.016685"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <path stroke="#000" id="svg_68" d="m653.747516,12.862181l19.36745,-10.781877l77.632553,0l0,53.999988l-97.000004,0l0,-43.218111z"
+   stroke-opacity="null" stroke-width="0" fill="#805064"/>
+  <text stroke="#000" transform="matrix(0.733815550804138,0,0,0.9629629850387573,306.63544338941574,-1.3912058547139168) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_69" y="33.322117" x="496.534253"
+   stroke-opacity="null" stroke-width="0" fill="#ffffff">Device</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_70" y="217.4375" x="457"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_71" y="197.4375" x="653"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 5</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_72" y="186.4375" x="1097"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_73" y="220.4375" x="885"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <rect stroke="#000" id="svg_74" height="88.000002" width="110.999999" y="104" x="206.000001"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text stroke="#000" transform="matrix(0.5661651903991256,0,0,1,107.56695064249905,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_75" y="133" x="182.901935"
+   stroke-opacity="null" stroke-width="0" fill="#000000">PKT classify</text>
+  <text stroke="#000" transform="matrix(0.5444634556770325,0,0,1,115.93405053019524,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_76" y="170" x="196.644877"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Distribute</text>
+  <path id="svg_77" d="m189.755816,142.38346l-9.615746,-5.572568l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.781769l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.14196,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552703 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.44398 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899092l6.015865,0c8.91886,-0.125542 15.596722,-5.450935 21.456596,-9.773453c5.800879,-4.563453 11.01514,-8.004512 14.039247,-7.782119l17.251176,0l0,6.200569l9.615746,-5.566299l9.621368,-5.570396l-9.621368,-5.578676l-0.000005,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_78" d="m417.79301,181.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.003899 -9.48466,-0.003899 -11.161519,-0.003899c-4.954616,-0.078306 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745716 -9.348773,-7.687237 -14.54043,-12.448672c-2.640478,-2.367977 -5.58224,-4.716439 -9.50016,-6.604946c-3.878767,-1.896386 -8.946375,-3.211512 -14.579566,-3.186066l-24.41645,0l0,9.245023l24.41645,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.71366,4.855376 14.505736,9.757754 27.25778,9.804723l11.246452,0l0,5.786895l13.60709,-5.201732zm-57.554046,-35.013272c0.15434,0.072423 0.317546,0.135019 0.468152,0.209421c4.65338,2.242732 8.013781,4.994346 10.673477,7.387791c0.611391,0.559679 1.153382,1.097877 1.733756,1.647811l31.071571,0l0,5.788888l13.60709,-5.201813l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.46277618408203 605.7476806640625,144.42587280273435) " id="svg_79" d="m590.864808,144.339395l14.882874,-35.951591l14.882874,35.951591l-7.441438,0l0,36.124583l-14.882873,0l0,-36.124583l-7.441438,0z" stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.74066925048828 697.6382446289062,81.67762756347659) " id="svg_80" d="m661.638136,81.677665l20.874103,-13.000079l0,6.500022l30.252035,0l0,-6.500022l20.874093,13.000079l-20.874093,13.000009l0,-6.500005l-30.252035,0l0,6.500005l-20.874103,-13.000009z" fill-opacity="null"
+   stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path id="svg_81" d="m858.79301,172.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.0039 -9.48466,-0.0039 -11.161519,-0.0039c-4.954616,-0.078305 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745715 -9.348773,-7.687236 -14.54043,-12.448672c-2.640477,-2.367977 -5.58224,-4.716438 -9.50016,-6.604945c-3.878767,-1.896387 -8.946375,-3.211513 -14.579566,-3.186067l-24.416451,0l0,9.245023l24.416451,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.713661,4.855376 14.505736,9.757754 27.257781,9.804723l11.246451,0l0,5.786894l13.60709,-5.201732zm-57.554045,-35.013272c0.15434,0.072424 0.317546,0.135019 0.468152,0.209421c4.65338,2.242731 8.013781,4.994346 10.673477,7.38779c0.61139,0.559679 1.153381,1.097878 1.733756,1.647812l31.07157,0l0,5.788888l13.60709,-5.201812l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_82" d="m1080.755816,127.38346l-9.615746,-5.572567l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.78177l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.141959,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552704 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.443981 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899093l6.015865,0c8.91886,-0.125543 15.596723,-5.450935 21.456596,-9.773454c5.800879,-4.563453 11.01514,-8.004512 14.039246,-7.782119l17.251177,0l0,6.20057l9.615746,-5.566299l9.621368,-5.570397l-9.621368,-5.578676l-0.000006,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" id="svg_83" d="m1269.963506,163.318859l13.567973,-4.653717l13.56088,-4.655631l-13.568064,-4.658919l-13.560793,-4.655342l0,5.177292c-3.323905,0 -7.186364,0 -8.480362,0c-6.169502,0.103377 -13.784287,-2.785121 -21.885448,-6.508723c-3.019981,-1.3056 -6.066761,-2.741979 -9.295919,-4.03897c3.229159,-1.298581 6.271574,-2.733309 9.295919,-4.038867c8.101162,-3.718456 15.715942,-6.612144 21.877492,-6.506938l8.488314,-0.001741l0,5.18423l13.560793,-4.6572l13.568064,-4.660782l-13.568064,-4.665774l-13.560793,-4.658938l0,5.180918l-8.483954,0c-12.6011,0.104929 -22.018599,4.557333 -30.259422,8.175926c-8.180795,3.81841 -15.53428,6.693008 -19.799052,6.506997l-24.328718,0l0,8.27074l24.336702,0c4.261113,-0.187837 11.618288,2.688631 19.798299,6.506933c8.237215,3.620425 17.651098,8.069132 30.25579,8.175987l8.480362,0l0,5.182516l0,0l0,0.000002z" fill-opacity="null"
+  stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_service.svg b/doc/guides/howto/img/dtg_service.svg
new file mode 100644
index 000000000..fa72de823
--- /dev/null
+++ b/doc/guides/howto/img/dtg_service.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="254" height="145" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>service</title>
+  <rect fill="#fff" id="canvas_background" height="147" width="256" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="109.999987" width="254.000014" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="37.000001" width="225" y="7.437494" x="4.5" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="45.000002" width="186.000003" y="58.437493" x="33.5" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="193.234194" x="-35.792216" stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="138.437495" x="45.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="141.982476" x="-63.753477" stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+ </g>
+</svg>
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
@ 2019-02-25 17:12             ` Vipin Varghese
  2019-04-01 14:56               ` Mcnamara, John
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
  2019-04-01  4:08             ` [dpdk-dev] [PATCH v7 " Varghese, Vipin
  2 siblings, 2 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-02-25 17:12 UTC (permalink / raw)
  To: john.mcnamara, marko.kovacevic, thomas, ferruh.yigit,
	shreyansh.jain, dev
  Cc: sanjay.padubidri, amol.patel, Vipin Varghese

Add user guide on debugging and troubleshooting for common
issues and bottleneck found in the sample application model.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
 doc/guides/howto/index.rst                    |   1 +
 2 files changed, 466 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst

diff --git a/doc/guides/howto/debug_troubleshoot_guide.rst b/doc/guides/howto/debug_troubleshoot_guide.rst
new file mode 100644
index 000000000..b92d4b67e
--- /dev/null
+++ b/doc/guides/howto/debug_troubleshoot_guide.rst
@@ -0,0 +1,465 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018 Intel Corporation.
+
+Debug & Troubleshoot guide
+==========================
+
+DPDK applications can be designed to have simple or complex pipeline processing
+stages making use of single or multiple threads. Applications can use poll mode
+hardware devices which helps in offloading CPU cycles too. It is common to find
+solutions designed with
+
+* single or multiple primary processes
+
+* single primary and single secondary
+
+* single primary and multiple secondaries
+
+In all the above cases, it is tedious to isolate, debug, and understand various
+behaviors which occur randomly or periodically. The goal of the guide is to
+consolidate a few commonly seen issues for reference. Then, isolate to identify
+the root cause through step by step debug at various stages.
+
+.. note::
+
+ It is difficult to cover all possible issues; in a single attempt. With
+ ``feedback and suggestions from the community, more cases can be covered``.
+
+
+Application Overview
+--------------------
+
+By making use of the application model as a reference, we can discuss multiple
+causes of issues in the guide. Let us assume the sample makes use of a single
+primary process, with various processing stages running on multiple cores. The
+application may also make uses of Poll Mode Driver, and libraries like service
+cores, mempool, mbuf, eventdev, cryptodev, QoS, and ethdev.
+
+The overview of an application modeled using PMD is shown in
+:numref:`dtg_sample_app_model`.
+
+.. _dtg_sample_app_model:
+
+.. figure:: img/dtg_sample_app_model.*
+
+   Overview of pipeline stage of an application
+
+
+Bottleneck Analysis
+-------------------
+
+A couple of factors that lead the design decision could be the platform, scale
+factor, and target. This distinct preference leads to multiple combinations,
+that are built using PMD and libraries of DPDK. While the compiler, library
+mode, and optimization flags are the components are to be constant, that
+affects the application too.
+
+
+Is there mismatch in packet (received < desired) rate?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX Port and associated core :numref:`dtg_rx_rate`.
+
+.. _dtg_rx_rate:
+
+.. figure:: img/dtg_rx_rate.*
+
+   RX packet rate compared against received rate.
+
+#. Is the configuration for the RX setup correctly?
+
+   * Identify if port Speed and Duplex is matching to desired values with
+     rte_eth_link_get.
+
+   * Check MTU value is set to the expected packet size to receive with
+     rte_eth_get_mtu if there are large packet drops.
+
+   * Check promiscuous mode if the drops do not occur for unique MAC address
+     with rte_eth_promiscuous_get.
+
+#. Is the drop isolated to certain NIC only?
+
+   * Make use of rte_eth_dev_stats to identify the drops cause.
+
+   * If there are mbuf drops, check nb_desc for RX descriptor as it might not
+     be sufficient for the application.
+
+   * If rte_eth_dev_stats shows drops are on specific RX queues, ensure RX
+     lcore threads has enough cycles for rte_eth_rx_burst on the port queue
+     pair.
+
+   * If there are redirect to a specific port queue pair with, ensure RX lcore
+     threads gets enough cycles.
+
+   * Check the RSS configuration rte_eth_dev_rss_hash_conf_get if the spread is
+     not even and causing drops.
+
+   * If PMD stats are not updating, then there might be offload or configuration
+     which is dropping the incoming traffic.
+
+#. Is there drops still seen?
+
+   * If there are multiple port queue pair, it might be the RX thread, RX
+     distributor, or event RX adapter not having enough cycles.
+
+   * If there are drops seen for RX adapter or RX distributor, try using
+     rte_prefetch_non_temporal() which intimates the core that the mbuf in the
+     cache is temporary.
+
+
+Is there packet drops at receive or transmit?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX-TX port and associated cores :numref:`dtg_rx_tx_drop`.
+
+.. _dtg_rx_tx_drop:
+
+.. figure:: img/dtg_rx_tx_drop.*
+
+   RX-TX drops
+
+#. At RX
+
+   * Identify if there are multiple RX queue configured for port by nb_rx_queues
+     using rte_eth_dev_info_get.
+
+   * Using rte_eth_dev_stats fetch drops in q_errors, check if RX thread is
+     configured to fetch packets from the port queue pair.
+
+   * Using rte_eth_dev_stats shows drops in rx_nombuf, check if RX thread has
+     enough cycles to consume the packets from the queue.
+
+#. At TX
+
+   * If the TX rate is falling behind the application fill rate, identify if
+     there are enough descriptors with rte_eth_dev_info_get for TX.
+
+   * Check the nb_pkt in rte_eth_tx_burst is done for multiple packets.
+
+   * Check rte_eth_tx_burst invokes the vector function call for the PMD.
+
+   * If oerrors are getting incremented, TX packet validations are failing.
+     Check if there queue specific offload failures.
+
+   * If the drops occur for large size packets, check MTU and multi-segment
+     support configured for NIC.
+
+
+Is there object drops in producer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Producer point for ring :numref:`dtg_producer_ring`.
+
+.. _dtg_producer_ring:
+
+.. figure:: img/dtg_producer_ring.*
+
+   Producer point for Rings
+
+#. Performance issue isolation at producer
+
+   * Use rte_ring_dump to validate for all single producer flag is set to
+     RING_F_SP_ENQ.
+
+   * There should be sufficient rte_ring_free_count at any point in time.
+
+   * Extreme stalls in dequeue stage of the pipeline will cause rte_ring_full
+     to be true.
+
+
+Is there object drops in consumer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Consumer point for ring :numref:`dtg_consumer_ring`.
+
+.. _dtg_consumer_ring:
+
+.. figure:: img/dtg_consumer_ring.*
+
+   Consumer point for Rings
+
+#. Performance issue isolation at consumer
+
+   * Use rte_ring_dump to validate for all single consumer flag is set to
+     RING_F_SC_DEQ.
+
+   * If the desired burst dequeue falls behind the actual dequeue, the enqueue
+     stage is not filling up the ring as required.
+
+   * Extreme stall in the enqueue will lead to rte_ring_empty to be true.
+
+
+Is there a variance in packet or object processing rate in the pipeline?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Memory objects close to NUMA :numref:`dtg_mempool`.
+
+.. _dtg_mempool:
+
+.. figure:: img/dtg_mempool.*
+
+   Memory objects have to be close to the device per NUMA.
+
+#. Stall in processing pipeline can be attributes of MBUF release delays.
+   These can be narrowed down to
+
+   * Heavy processing cycles at single or multiple processing stages.
+
+   * Cache is spread due to the increased stages in the pipeline.
+
+   * CPU thread responsible for TX is not able to keep up with the burst of
+     traffic.
+
+   * Extra cycles to linearize multi-segment buffer and software offload like
+     checksum, TSO, and VLAN strip.
+
+   * Packet buffer copy in fast path also results in stalls in MBUF release if
+     not done selectively.
+
+   * Application logic sets rte_pktmbuf_refcnt_set to higher than the desired
+     value and frequently uses rte_pktmbuf_prefree_seg and does not release
+     MBUF back to mempool.
+
+#. Lower performance between the pipeline processing stages can be
+
+   * The NUMA instance for packets or objects from NIC, mempool, and ring
+     should be the same.
+
+   * Drops on a specific socket are due to insufficient objects in the pool.
+     Use rte_mempool_get_count or rte_mempool_avail_count to monitor when
+     drops occurs.
+
+   * Try prefetching the content in processing pipeline logic to minimize the
+     stalls.
+
+#. Performance issue can be due to special cases
+
+   * Check if MBUF continuous with rte_pktmbuf_is_contiguous as certain offload
+     requires the same.
+
+   * Use rte_mempool_cache_create for user threads require access to mempool
+     objects.
+
+   * If the variance is absent for larger huge pages, then try rte_mem_lock_page
+     on the objects, packets, lookup tables to isolate the issue.
+
+
+Is there a variance in cryptodev performance?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Crypto device and PMD :numref:`dtg_crypto`.
+
+.. _dtg_crypto:
+
+.. figure:: img/dtg_crypto.*
+
+   CRYPTO and interaction with PMD device.
+
+#. Performance issue isolation for enqueue
+
+   * Ensure cryptodev, resources and enqueue is running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using  rte_cryptodev_stats.
+
+   * Parallelize enqueue thread for varied multiple queue pair.
+
+#. Performance issue isolation for dequeue
+
+   * Ensure cryptodev, resources and dequeue are running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using  rte_cryptodev_stats.
+
+   * Parallelize dequeue thread for varied multiple queue pair.
+
+#. Performance issue isolation for crypto operation
+
+   * If the cryptodev software-assist is in use, ensure the library is built
+     with right (SIMD) flags or check if the queue pair using CPU ISA for
+     feature_flags AVX|SSE|NEON using rte_cryptodev_info_get.
+
+   * If the cryptodev hardware-assist is in use, ensure both firmware and
+     drivers are up to date.
+
+#. Configuration issue isolation
+
+   * Identify cryptodev instances with rte_cryptodev_count and
+     rte_cryptodev_info_get.
+
+
+Is user functions performance is not as expected?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Custom worker function :numref:`dtg_distributor_worker`.
+
+.. _dtg_distributor_worker:
+
+.. figure:: img/dtg_distributor_worker.*
+
+   Custom worker function performance drops.
+
+#. Performance issue isolation
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with rte_lcore and lcore index
+     mapping with CPU using rte_lcore_index.
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with rte_lcore and lcore index
+     mapping with CPU using rte_lcore_index.
+
+   * Use rte_thread_get_affinity to isolate functions running on the same
+     CPU core.
+
+#. Configuration issue isolation
+
+   * Identify core role using rte_eal_lcore_role to identify RTE, OFF and
+     SERVICE. Check performance functions are mapped to run on the cores.
+
+   * For high-performance execution logic ensure running it on correct NUMA
+     and non-master core.
+
+   * Analyze run logic with rte_dump_stack, rte_dump_registers and rte_memdump
+     for more insights.
+
+   * Make use of 'objdump' to ensure opcode is matching to the desired state.
+
+
+Is the execution cycles for dynamic service functions are not frequent?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+service functions on service cores :numref:`dtg_service`.
+
+.. _dtg_service:
+
+.. figure:: img/dtg_service.*
+
+   functions running on service cores
+
+#. Performance issue isolation
+
+   * Services configured for parallel execution should have
+     rte_service_lcore_count should be equal to
+     rte_service_lcore_count_services.
+
+   * A service to run parallel on all cores should return
+     RTE_SERVICE_CAP_MT_SAFE for rte_service_probe_capability and
+     rte_service_map_lcore_get returns unique lcore.
+
+   * If service function execution cycles for dynamic service functions are
+     not frequent?
+
+   * If services share the lcore, overall execution should fit budget.
+
+#. Configuration issue isolation
+
+   * Check if service is running with rte_service_runstate_get.
+
+   * Generic debug via rte_service_dump.
+
+
+Is there a bottleneck in the performance of eventdev?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Check for generic configuration
+
+   * Ensure the event devices created are right NUMA using rte_event_dev_count
+     and rte_event_dev_socket_id.
+
+   * Check for event stages if the events are looped back into the same queue.
+
+   * If the failure is on the enqueue stage for events, check if queue depth
+     with rte_event_dev_info_get.
+
+#. If there are performance drops in the enqueue stage
+
+   * Use rte_event_dev_dump to dump the eventdev information.
+
+   * Periodically checks stats for queue and port to identify the starvation.
+
+   * Check the in-flight events for the desired queue for enqueue and dequeue.
+
+
+Is there a variance in traffic manager?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Traffic Manager on TX interface :numref:`dtg_qos_tx`.
+
+.. _dtg_qos_tx:
+
+.. figure:: img/dtg_qos_tx.*
+
+   Traffic Manager just before TX.
+
+#. Identify the cause for a variance from expected behavior, is due to
+   insufficient CPU cycles. Use rte_tm_capabilities_get to fetch features for
+   hierarchies, WRED and priority schedulers to be offloaded hardware.
+
+#. Undesired flow drops can be narrowed down to WRED, priority, and rates
+   limiters.
+
+#. Isolate the flow in which the undesired drops occur. Use
+   rte_tn_get_number_of_leaf_node and flow table to ping down the leaf where
+   drops occur.
+
+#. Check the stats using rte_tm_stats_update and rte_tm_node_stats_read for
+   drops for hierarchy, schedulers and WRED configurations.
+
+
+Is the packet not in the unexpected format?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Packet capture before and after processing :numref:`dtg_pdump`.
+
+.. _dtg_pdump:
+
+.. figure:: img/dtg_pdump.*
+
+   Capture points of Traffic at RX-TX.
+
+#. To isolate the possible packet corruption in the processing pipeline,
+   carefully staged capture packets are to be implemented.
+
+   * First, isolate at NIC entry and exit.
+
+     Use pdump in primary to allow secondary to access port-queue pair. The
+     packets get copied over in RX|TX callback by the secondary process using
+     ring buffers.
+
+   * Second, isolate at pipeline entry and exit.
+
+     Using hooks or callbacks capture the packet middle of the pipeline stage
+     to copy the packets, which can be shared to the secondary debug process
+     via user-defined custom rings.
+
+.. note::
+
+   Use similar analysis to objects and metadata corruption.
+
+
+Does the issue still persist?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The issue can be further narrowed down to the following causes.
+
+#. If there are vendor or application specific metadata, check for errors due
+   to META data error flags. Dumping private meta-data in the objects can give
+   insight into details for debugging.
+
+#. If there are multi-process for either data or configuration, check for
+   possible errors in the secondary process where the configuration fails and
+   possible data corruption in the data plane.
+
+#. Random drops in the RX or TX when opening other application is an indication
+   of the effect of a noisy neighbor. Try using the cache allocation technique
+   to minimize the effect between applications.
+
+
+How to develop a custom code to debug?
+--------------------------------------
+
+#. For an application that runs as the primary process only, debug functionality
+   is added in the same process. These can be invoked by timer call-back,
+   service core and signal handler.
+
+#. For the application that runs as multiple processes. debug functionality in
+   a standalone secondary process.
diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst
index a642a2be1..9527fa84d 100644
--- a/doc/guides/howto/index.rst
+++ b/doc/guides/howto/index.rst
@@ -18,3 +18,4 @@ HowTo Guides
     virtio_user_as_exceptional_path
     packet_capture_framework
     telemetry
+    debug_troubleshoot_guide
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide
  2019-02-13  5:41         ` [dpdk-dev] [PATCH v6] " Vipin Varghese
  2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
@ 2019-02-27 11:41           ` Thomas Monjalon
  2019-02-27 12:13             ` Varghese, Vipin
  1 sibling, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2019-02-27 11:41 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: dev, john.mcnamara, marko.kovacevic, ferruh.yigit,
	bruce.richardson, sanjay.padubidri, amol.patel

13/02/2019 06:41, Vipin Varghese:
> Patches has to be validated for meson devtool script for
> code and document changes. Updating documentation for meson
> build steps in checking Compilation category.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>

Applied, thanks

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide
  2019-02-27 11:41           ` [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide Thomas Monjalon
@ 2019-02-27 12:13             ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-02-27 12:13 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh, Richardson,
	Bruce, Padubidri, Sanjay A, Patel, Amol

Thanks

> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Wednesday, February 27, 2019 5:11 PM
> To: Varghese, Vipin <vipin.varghese@intel.com>
> Cc: dev@dpdk.org; Mcnamara, John <john.mcnamara@intel.com>; Kovacevic,
> Marko <marko.kovacevic@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> Richardson, Bruce <bruce.richardson@intel.com>; Padubidri, Sanjay A
> <sanjay.padubidri@intel.com>; Patel, Amol <amol.patel@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v6] doc/patches: add meson build to
> contributing guide
> 
> 13/02/2019 06:41, Vipin Varghese:
> > Patches has to be validated for meson devtool script for code and
> > document changes. Updating documentation for meson build steps in
> > checking Compilation category.
> >
> > Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> > Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
> > Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
> 
> Applied, thanks
> 
> 

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot.
  2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
@ 2019-04-01  4:08             ` Varghese, Vipin
  2019-04-01  4:08               ` Varghese, Vipin
  2 siblings, 1 reply; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-01  4:08 UTC (permalink / raw)
  To: Mcnamara, John, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev, Hemant Agrawal, Jacob, Jerin
  Cc: Padubidri, Sanjay A, Patel, Amol

Hi John and Marko,

Waiting for updates for changes if any, as these are not pushed for 19.02. 

Please do let me know if there are changes required any more?

Thanks
Vipin Varghese

> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 10:42 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 0/2] guide to debug and troubleshoot.
> 
> The patch series adds a how-to guide for debugging and troubleshooting tips.
> 
> Motivation
> ==========
> 
> DPDK proc-info tool is been enhanced to accommodate the debug information
> for the port, traffic manager crypto, ring and mempool contents. With these
> additional information, it becomes easy to analyze issues and performance
> variance.
> 
> But applications are designed based on the target platform, workload, poll mode
> drivers, and multi-process. This raises variance in debugging and collecting data.
> Hence attempt of patch series is identified such symptoms and share step by step
> guide to cover the cases.
> 
> Not all possible cases could be covered in a single attempt. But with feedback and
> support from the community, this can be expanded.
> 
> Status
> ======
> 
> Reviews and changes accommodated. ACK received for documentation and SVG
> files.
> 
> Change Log:
> ==========
> 
> V7:
>  - add space to note and indent - John Macnamara
> 
> V6:
>  - correction for word style and grammar - Thomas Monjalon
>  - add license for svg files - Vipin Varghese
> 
> v5:
>  - rework of content - Vipin Varghese
> 
> V4:
>  - Correction for word style - Shreyansh Jain
> 
> V3:
>  - reorder for removing warning in 'make doc-guides-html' - Thomas Monjalon
> 
> V2:
>  - add offload flag check - Vipin Varghese
>  - change tab to space - Marko Kovacevic
>  - spelling correction - Marko Kovacevic
>  - remove extra characters - Marko Kovacevic
>  - add ACK by Marko - Vipn Varghese
>  - add ACK from Marko - Vipin Varghese
> 
> 
> Vipin Varghese (2):
>   doc: add svg for debug and troubleshoot guide
>   doc: add guide for debug and troubleshoot
> 
>  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
>  doc/guides/howto/img/dtg_consumer_ring.svg    |  24 +
>  doc/guides/howto/img/dtg_crypto.svg           |  21 +
>  .../howto/img/dtg_distributor_worker.svg      |  36 ++
>  doc/guides/howto/img/dtg_mempool.svg          |  27 +
>  doc/guides/howto/img/dtg_pdump.svg            |  33 ++
>  doc/guides/howto/img/dtg_producer_ring.svg    |  24 +
>  doc/guides/howto/img/dtg_qos_tx.svg           |  29 ++
>  doc/guides/howto/img/dtg_rx_rate.svg          |  25 +
>  doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++
>  doc/guides/howto/img/dtg_sample_app_model.svg | 110 +++++
>  doc/guides/howto/img/dtg_service.svg          |  20 +
>  doc/guides/howto/index.rst                    |   1 +
>  13 files changed, 848 insertions(+)
>  create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
>  create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
>  create mode 100644 doc/guides/howto/img/dtg_crypto.svg
>  create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
>  create mode 100644 doc/guides/howto/img/dtg_mempool.svg
>  create mode 100644 doc/guides/howto/img/dtg_pdump.svg
>  create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
>  create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
>  create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
>  create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
>  create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
>  create mode 100644 doc/guides/howto/img/dtg_service.svg
> 
> --
> 2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot.
  2019-04-01  4:08             ` [dpdk-dev] [PATCH v7 " Varghese, Vipin
@ 2019-04-01  4:08               ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-01  4:08 UTC (permalink / raw)
  To: Mcnamara, John, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev, Hemant Agrawal, Jacob, Jerin
  Cc: Padubidri, Sanjay A, Patel, Amol

Hi John and Marko,

Waiting for updates for changes if any, as these are not pushed for 19.02. 

Please do let me know if there are changes required any more?

Thanks
Vipin Varghese

> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 10:42 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 0/2] guide to debug and troubleshoot.
> 
> The patch series adds a how-to guide for debugging and troubleshooting tips.
> 
> Motivation
> ==========
> 
> DPDK proc-info tool is been enhanced to accommodate the debug information
> for the port, traffic manager crypto, ring and mempool contents. With these
> additional information, it becomes easy to analyze issues and performance
> variance.
> 
> But applications are designed based on the target platform, workload, poll mode
> drivers, and multi-process. This raises variance in debugging and collecting data.
> Hence attempt of patch series is identified such symptoms and share step by step
> guide to cover the cases.
> 
> Not all possible cases could be covered in a single attempt. But with feedback and
> support from the community, this can be expanded.
> 
> Status
> ======
> 
> Reviews and changes accommodated. ACK received for documentation and SVG
> files.
> 
> Change Log:
> ==========
> 
> V7:
>  - add space to note and indent - John Macnamara
> 
> V6:
>  - correction for word style and grammar - Thomas Monjalon
>  - add license for svg files - Vipin Varghese
> 
> v5:
>  - rework of content - Vipin Varghese
> 
> V4:
>  - Correction for word style - Shreyansh Jain
> 
> V3:
>  - reorder for removing warning in 'make doc-guides-html' - Thomas Monjalon
> 
> V2:
>  - add offload flag check - Vipin Varghese
>  - change tab to space - Marko Kovacevic
>  - spelling correction - Marko Kovacevic
>  - remove extra characters - Marko Kovacevic
>  - add ACK by Marko - Vipn Varghese
>  - add ACK from Marko - Vipin Varghese
> 
> 
> Vipin Varghese (2):
>   doc: add svg for debug and troubleshoot guide
>   doc: add guide for debug and troubleshoot
> 
>  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
>  doc/guides/howto/img/dtg_consumer_ring.svg    |  24 +
>  doc/guides/howto/img/dtg_crypto.svg           |  21 +
>  .../howto/img/dtg_distributor_worker.svg      |  36 ++
>  doc/guides/howto/img/dtg_mempool.svg          |  27 +
>  doc/guides/howto/img/dtg_pdump.svg            |  33 ++
>  doc/guides/howto/img/dtg_producer_ring.svg    |  24 +
>  doc/guides/howto/img/dtg_qos_tx.svg           |  29 ++
>  doc/guides/howto/img/dtg_rx_rate.svg          |  25 +
>  doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++
>  doc/guides/howto/img/dtg_sample_app_model.svg | 110 +++++
>  doc/guides/howto/img/dtg_service.svg          |  20 +
>  doc/guides/howto/index.rst                    |   1 +
>  13 files changed, 848 insertions(+)
>  create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
>  create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
>  create mode 100644 doc/guides/howto/img/dtg_crypto.svg
>  create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
>  create mode 100644 doc/guides/howto/img/dtg_mempool.svg
>  create mode 100644 doc/guides/howto/img/dtg_pdump.svg
>  create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
>  create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
>  create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
>  create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
>  create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
>  create mode 100644 doc/guides/howto/img/dtg_service.svg
> 
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
@ 2019-04-01 14:56               ` Mcnamara, John
  2019-04-01 14:56                 ` Mcnamara, John
  2019-04-05  8:49                 ` Thomas Monjalon
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
  1 sibling, 2 replies; 43+ messages in thread
From: Mcnamara, John @ 2019-04-01 14:56 UTC (permalink / raw)
  To: Varghese, Vipin, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev
  Cc: Padubidri, Sanjay A, Patel, Amol



> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 5:12 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 2/2] doc: add guide for debug and troubleshoot
> 
> Add user guide on debugging and troubleshooting for common issues and
> bottleneck found in the sample application model.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
> ---
>  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
>  doc/guides/howto/index.rst                    |   1 +
>  2 files changed, 466 insertions(+)
>  create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
> 
> ...
>
> +.. note::
> +
> + It is difficult to cover all possible issues; in a single attempt.
> + With ``feedback and suggestions from the community, more cases can be
> covered``.

Do you really mean to `` quote (i.e., fixed width quote) the line above?

Apart from that:

Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-01 14:56               ` Mcnamara, John
@ 2019-04-01 14:56                 ` Mcnamara, John
  2019-04-05  8:49                 ` Thomas Monjalon
  1 sibling, 0 replies; 43+ messages in thread
From: Mcnamara, John @ 2019-04-01 14:56 UTC (permalink / raw)
  To: Varghese, Vipin, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev
  Cc: Padubidri, Sanjay A, Patel, Amol



> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 5:12 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 2/2] doc: add guide for debug and troubleshoot
> 
> Add user guide on debugging and troubleshooting for common issues and
> bottleneck found in the sample application model.
> 
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
> ---
>  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
>  doc/guides/howto/index.rst                    |   1 +
>  2 files changed, 466 insertions(+)
>  create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
> 
> ...
>
> +.. note::
> +
> + It is difficult to cover all possible issues; in a single attempt.
> + With ``feedback and suggestions from the community, more cases can be
> covered``.

Do you really mean to `` quote (i.e., fixed width quote) the line above?

Apart from that:

Acked-by: John McNamara <john.mcnamara@intel.com>



^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
@ 2019-04-01 14:56               ` Mcnamara, John
  2019-04-01 14:56                 ` Mcnamara, John
  0 siblings, 1 reply; 43+ messages in thread
From: Mcnamara, John @ 2019-04-01 14:56 UTC (permalink / raw)
  To: Varghese, Vipin, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev
  Cc: Padubidri, Sanjay A, Patel, Amol



> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 5:12 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide
> 
> Add svg images for debug and troubleshoot guide.
> 


Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide
  2019-04-01 14:56               ` Mcnamara, John
@ 2019-04-01 14:56                 ` Mcnamara, John
  0 siblings, 0 replies; 43+ messages in thread
From: Mcnamara, John @ 2019-04-01 14:56 UTC (permalink / raw)
  To: Varghese, Vipin, Kovacevic, Marko, thomas, Yigit, Ferruh,
	shreyansh.jain, dev
  Cc: Padubidri, Sanjay A, Patel, Amol



> -----Original Message-----
> From: Varghese, Vipin
> Sent: Monday, February 25, 2019 5:12 PM
> To: Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko
> <marko.kovacevic@intel.com>; thomas@monjalon.net; Yigit, Ferruh
> <ferruh.yigit@intel.com>; shreyansh.jain@nxp.com; dev@dpdk.org
> Cc: Padubidri, Sanjay A <sanjay.padubidri@intel.com>; Patel, Amol
> <amol.patel@intel.com>; Varghese, Vipin <vipin.varghese@intel.com>
> Subject: [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide
> 
> Add svg images for debug and troubleshoot guide.
> 


Acked-by: John McNamara <john.mcnamara@intel.com>




^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-01 14:56               ` Mcnamara, John
  2019-04-01 14:56                 ` Mcnamara, John
@ 2019-04-05  8:49                 ` Thomas Monjalon
  2019-04-05  8:49                   ` Thomas Monjalon
  2019-04-08  3:18                   ` Varghese, Vipin
  1 sibling, 2 replies; 43+ messages in thread
From: Thomas Monjalon @ 2019-04-05  8:49 UTC (permalink / raw)
  To: Varghese, Vipin
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

01/04/2019 16:56, Mcnamara, John:
> From: Varghese, Vipin
> >  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
> >  doc/guides/howto/index.rst                    |   1 +
> > +.. note::
> > +
> > + It is difficult to cover all possible issues; in a single attempt.
> > + With ``feedback and suggestions from the community, more cases can be
> > covered``.
> 
> Do you really mean to `` quote (i.e., fixed width quote) the line above?

I think the quote signs should be removed.

But it would be nice to have such quote for all the code symbols
used in this doc.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-05  8:49                 ` Thomas Monjalon
@ 2019-04-05  8:49                   ` Thomas Monjalon
  2019-04-08  3:18                   ` Varghese, Vipin
  1 sibling, 0 replies; 43+ messages in thread
From: Thomas Monjalon @ 2019-04-05  8:49 UTC (permalink / raw)
  To: Varghese, Vipin
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

01/04/2019 16:56, Mcnamara, John:
> From: Varghese, Vipin
> >  doc/guides/howto/debug_troubleshoot_guide.rst | 465 ++++++++++++++++++
> >  doc/guides/howto/index.rst                    |   1 +
> > +.. note::
> > +
> > + It is difficult to cover all possible issues; in a single attempt.
> > + With ``feedback and suggestions from the community, more cases can be
> > covered``.
> 
> Do you really mean to `` quote (i.e., fixed width quote) the line above?

I think the quote signs should be removed.

But it would be nice to have such quote for all the code symbols
used in this doc.



^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-05  8:49                 ` Thomas Monjalon
  2019-04-05  8:49                   ` Thomas Monjalon
@ 2019-04-08  3:18                   ` Varghese, Vipin
  2019-04-08  3:18                     ` Varghese, Vipin
  2019-04-08  6:45                     ` Thomas Monjalon
  1 sibling, 2 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-08  3:18 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

Hi Thomas and John,

Thanks for the comments and suggestion.

snipped
> > > +
> > > + It is difficult to cover all possible issues; in a single attempt.
> > > + With ``feedback and suggestions from the community, more cases can
> > > + be
> > > covered``.
> >
> > Do you really mean to `` quote (i.e., fixed width quote) the line above?
In my humble opinion it will be best to highlight.

> 
> I think the quote signs should be removed.
Ok

> 
> But it would be nice to have such quote for all the code symbols used in this doc.
Ok

Would like me to send a v8 or can the v7 be accepted with quotes removed while merge?

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-08  3:18                   ` Varghese, Vipin
@ 2019-04-08  3:18                     ` Varghese, Vipin
  2019-04-08  6:45                     ` Thomas Monjalon
  1 sibling, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-08  3:18 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

Hi Thomas and John,

Thanks for the comments and suggestion.

snipped
> > > +
> > > + It is difficult to cover all possible issues; in a single attempt.
> > > + With ``feedback and suggestions from the community, more cases can
> > > + be
> > > covered``.
> >
> > Do you really mean to `` quote (i.e., fixed width quote) the line above?
In my humble opinion it will be best to highlight.

> 
> I think the quote signs should be removed.
Ok

> 
> But it would be nice to have such quote for all the code symbols used in this doc.
Ok

Would like me to send a v8 or can the v7 be accepted with quotes removed while merge?

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-08  3:18                   ` Varghese, Vipin
  2019-04-08  3:18                     ` Varghese, Vipin
@ 2019-04-08  6:45                     ` Thomas Monjalon
  2019-04-08  6:45                       ` Thomas Monjalon
  2019-04-09  6:33                       ` Varghese, Vipin
  1 sibling, 2 replies; 43+ messages in thread
From: Thomas Monjalon @ 2019-04-08  6:45 UTC (permalink / raw)
  To: Varghese, Vipin
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

08/04/2019 05:18, Varghese, Vipin:
> Hi Thomas and John,
> 
> Thanks for the comments and suggestion.
> 
> snipped
> > > > +
> > > > + It is difficult to cover all possible issues; in a single attempt.
> > > > + With ``feedback and suggestions from the community, more cases can
> > > > + be
> > > > covered``.
> > >
> > > Do you really mean to `` quote (i.e., fixed width quote) the line above?
> In my humble opinion it will be best to highlight.
> 
> > 
> > I think the quote signs should be removed.
> Ok
> 
> > 
> > But it would be nice to have such quote for all the code symbols used in this doc.
> Ok
> 
> Would like me to send a v8 or can the v7 be accepted with quotes removed while merge?

No Vipin, you need to add quotes everywhere in the doc for the code symbols.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-08  6:45                     ` Thomas Monjalon
@ 2019-04-08  6:45                       ` Thomas Monjalon
  2019-04-09  6:33                       ` Varghese, Vipin
  1 sibling, 0 replies; 43+ messages in thread
From: Thomas Monjalon @ 2019-04-08  6:45 UTC (permalink / raw)
  To: Varghese, Vipin
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

08/04/2019 05:18, Varghese, Vipin:
> Hi Thomas and John,
> 
> Thanks for the comments and suggestion.
> 
> snipped
> > > > +
> > > > + It is difficult to cover all possible issues; in a single attempt.
> > > > + With ``feedback and suggestions from the community, more cases can
> > > > + be
> > > > covered``.
> > >
> > > Do you really mean to `` quote (i.e., fixed width quote) the line above?
> In my humble opinion it will be best to highlight.
> 
> > 
> > I think the quote signs should be removed.
> Ok
> 
> > 
> > But it would be nice to have such quote for all the code symbols used in this doc.
> Ok
> 
> Would like me to send a v8 or can the v7 be accepted with quotes removed while merge?

No Vipin, you need to add quotes everywhere in the doc for the code symbols.




^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 0/2] guide to debug and troubleshoot.
  2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
  2019-04-01 14:56               ` Mcnamara, John
@ 2019-04-09  6:33               ` Vipin Varghese
  2019-04-09  6:33                 ` Vipin Varghese
                                   ` (3 more replies)
  1 sibling, 4 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

The patch series adds a how-to guide for debugging and
troubleshooting tips.

Motivation
==========

DPDK proc-info tool is been enhanced to accommodate the debug information
for the port, traffic manager crypto, ring and mempool contents. With these
additional information, it becomes easy to analyze issues and performance
variance.

But applications are designed based on the target platform, workload, poll
mode drivers, and multi-process. This raises variance in debugging and
collecting data. Hence attempt of patch series is identified such symptoms
and share step by step guide to cover the cases.

Not all possible cases could be covered in a single attempt. But with
feedback and support from the community, this can be expanded.


Status
======

Reviews and changes accommodated. ACK received for documentation and SVG
files.


Change Log
==========

V8:
 - remove quotes from notes section - John Macnamara
 - add quotes for DPDK API and variables - Thomas Monjalon
 - update use of JUMBO for rx bottleneck - Vipin Varghese
 - Add ACK from v7 - Vipin Varghese

V7:
 - add space to note and indent - John Macnamara

V6:
 - correction for word style and grammar - Thomas Monjalon
 - add license for svg files - Vipin Varghese

v5:
 - rework of content - Vipin Varghese

V4:
 - Correction for word style - Shreyansh Jain

V3:
 - reorder for removing warning in 'make doc-guides-html' - Thomas Monjalon

V2:
 - add offload flag check - Vipin Varghese
 - change tab to space - Marko Kovacevic
 - spelling correction - Marko Kovacevic
 - remove extra characters - Marko Kovacevic
 - add ACK by Marko - Vipn Varghese
 - add ACK from Marko - Vipin Varghese

Vipin Varghese (2):
  doc: add svg for debug and troubleshoot guide
  doc: add guide for debug and troubleshoot

 doc/guides/howto/debug_troubleshoot_guide.rst | 464 ++++++++++++++++++
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_crypto.svg           |  21 +
 .../howto/img/dtg_distributor_worker.svg      |  36 ++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 ++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 +
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 +++++
 doc/guides/howto/img/dtg_service.svg          |  20 +
 doc/guides/howto/index.rst                    |   1 +
 13 files changed, 847 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

Future Work
===========

 - More use cases.
 - Runs as non root.
 - Effects of Cache partitioning.
 - How to run application as non root user.

-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 0/2] guide to debug and troubleshoot.
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
@ 2019-04-09  6:33                 ` Vipin Varghese
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
                                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

The patch series adds a how-to guide for debugging and
troubleshooting tips.

Motivation
==========

DPDK proc-info tool is been enhanced to accommodate the debug information
for the port, traffic manager crypto, ring and mempool contents. With these
additional information, it becomes easy to analyze issues and performance
variance.

But applications are designed based on the target platform, workload, poll
mode drivers, and multi-process. This raises variance in debugging and
collecting data. Hence attempt of patch series is identified such symptoms
and share step by step guide to cover the cases.

Not all possible cases could be covered in a single attempt. But with
feedback and support from the community, this can be expanded.


Status
======

Reviews and changes accommodated. ACK received for documentation and SVG
files.


Change Log
==========

V8:
 - remove quotes from notes section - John Macnamara
 - add quotes for DPDK API and variables - Thomas Monjalon
 - update use of JUMBO for rx bottleneck - Vipin Varghese
 - Add ACK from v7 - Vipin Varghese

V7:
 - add space to note and indent - John Macnamara

V6:
 - correction for word style and grammar - Thomas Monjalon
 - add license for svg files - Vipin Varghese

v5:
 - rework of content - Vipin Varghese

V4:
 - Correction for word style - Shreyansh Jain

V3:
 - reorder for removing warning in 'make doc-guides-html' - Thomas Monjalon

V2:
 - add offload flag check - Vipin Varghese
 - change tab to space - Marko Kovacevic
 - spelling correction - Marko Kovacevic
 - remove extra characters - Marko Kovacevic
 - add ACK by Marko - Vipn Varghese
 - add ACK from Marko - Vipin Varghese

Vipin Varghese (2):
  doc: add svg for debug and troubleshoot guide
  doc: add guide for debug and troubleshoot

 doc/guides/howto/debug_troubleshoot_guide.rst | 464 ++++++++++++++++++
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_crypto.svg           |  21 +
 .../howto/img/dtg_distributor_worker.svg      |  36 ++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 +
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 ++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 +
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 +++++
 doc/guides/howto/img/dtg_service.svg          |  20 +
 doc/guides/howto/index.rst                    |   1 +
 13 files changed, 847 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

Future Work
===========

 - More use cases.
 - Runs as non root.
 - Effects of Cache partitioning.
 - How to run application as non root user.

-- 
2.17.1


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
  2019-04-09  6:33                 ` Vipin Varghese
@ 2019-04-09  6:33                 ` Vipin Varghese
  2019-04-09  6:33                   ` Vipin Varghese
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
  2019-05-04 22:26                 ` [dpdk-dev] [PATCH v8 0/2] guide to " Thomas Monjalon
  3 siblings, 1 reply; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

Add svg images for debug and troubleshoot guide.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>

---
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_crypto.svg           |  21 ++++
 .../howto/img/dtg_distributor_worker.svg      |  36 ++++++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +++++
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++++++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 +++++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 ++++
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++++++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 ++++++++++++++++++
 doc/guides/howto/img/dtg_service.svg          |  20 ++++
 11 files changed, 382 insertions(+)
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

diff --git a/doc/guides/howto/img/dtg_consumer_ring.svg b/doc/guides/howto/img/dtg_consumer_ring.svg
new file mode 100644
index 000000000..d8cf0c292
--- /dev/null
+++ b/doc/guides/howto/img/dtg_consumer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>consumer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 177.864990234375,48.89100646972658) " id="svg_7" d="m155.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 434.864990234375,48.89100646972656) " id="svg_8" d="m412.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m225.937481,47.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m475.937481,46.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_crypto.svg b/doc/guides/howto/img/dtg_crypto.svg
new file mode 100644
index 000000000..969f8b5d5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_crypto.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="180" height="230" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>crypto</title>
+  <rect fill="#fff" id="canvas_background" height="232" width="182" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="369.4375" x="838.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="222.4375" x="39.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 7</text>
+  <rect stroke="#000" id="svg_26" height="44.000003" width="155.000001" y="151.437497" x="6.499997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_27" y="179.4375" x="13.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">CRYPTO PMD</text>
+  <ellipse stroke="#000" ry="41.5" rx="66.500001" id="svg_28" cy="48.9375" cx="87.999997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_29" y="57.4375" x="45.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Device</text>
+  <path stroke="#000" transform="rotate(-90.19718170166016 85.76751708984375,119.45785522460936) " id="svg_30" d="m40.743289,119.457895l26.106598,-13.915756l0,6.95786l37.835289,0l0,-6.95786l26.106586,13.915756l-26.106586,13.915682l0,-6.957842l-37.835289,0l0,6.957842l-26.106598,-13.915682z" stroke-opacity="null" stroke-width="0" fill="#845335"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_distributor_worker.svg b/doc/guides/howto/img/dtg_distributor_worker.svg
new file mode 100644
index 000000000..d2638ded8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_distributor_worker.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="600" height="235" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>distributor and worker</title>
+  <rect fill="#fff" id="canvas_background" height="237" width="602" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="89.999991" width="202.000004" y="21.000003" x="4" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start"
+   font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="47" x="7"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">PKT classify</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="96.5" x="25.992188" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Distribute</text>
+  <path id="svg_13" d="m334.224445,98.046256l16.252783,-5.432074l-16.252783,-5.429993l-16.256262,-5.427952l0,6.038517c-4.264321,-0.004069 -11.331234,-0.004069 -13.334561,-0.004069c-5.919233,-0.081711 -9.804243,-1.153783 -13.847174,-3.073397c-6.02597,-2.865095 -11.16889,-8.021466 -17.371313,-12.989922c-3.154554,-2.470933 -6.669049,-4.921502 -11.349751,-6.892119c-4.633926,-1.978838 -10.68815,-3.351144 -17.41807,-3.324591l-29.170102,0l0,9.646983l29.170102,0c4.056131,0.042884 6.623169,0.808657 10.124445,2.70786c5.179989,2.824261 10.230311,8.223602 17.195784,13.339136c6.826056,5.066481 17.329865,10.182006 32.564612,10.231017l13.436029,0l0,6.0385l16.256262,-5.427896zm-68.759273,-36.535597c0.184389,0.075572 0.379369,0.14089 0.559297,0.218526c5.559349,2.340242 9.573988,5.211493 12.751502,7.709001c0.730423,0.584013 1.377934,1.145611 2.071302,1.719456l37.120911,0l0,6.040581l16.256262,-5.42798l16.252783,-5.429962l-16.252783,-5.432037l-16.256262,-5.434093l0,6.036509l-52.503011,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFAC8D"/>
+  <rect stroke="#000" id="svg_17" height="110.999999" width="180" y="3.4375" x="353.5"
+   stroke-opacity="null" stroke-width="0" fill="#FABA6F"/>
+  <rect stroke="#000" id="svg_14" height="110.999999" width="180" y="31.4375" x="369.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_15" height="110.999999" width="180" y="58.4375" x="392.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFF093"/>
+  <rect stroke="#000" id="svg_16" height="110.999999" width="180" y="90.4375" x="413.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,142.60348030924797,64.2037038393319) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="71.490132" x="413.769676" stroke-opacity="null" stroke-width="0" fill="#000000">worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="101.332237" x="406.404514" stroke-opacity="null" stroke-width="0" fill="#000000">worker 2</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="58.700658" x="376.943866" stroke-opacity="null" stroke-width="0" fill="#000000">worker 3</text>
+  <text style="cursor: move;" stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="18.911184" x="350.429283" stroke-opacity="null" stroke-width="0" fill="#000000">worker 4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="139.4375" x="49.5"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_24" y="226.4375" x="404.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4,5</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_mempool.svg b/doc/guides/howto/img/dtg_mempool.svg
new file mode 100644
index 000000000..2f53a3ca8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_mempool.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="955" height="185" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>mempool</title>
+  <rect fill="#fff" id="canvas_background" height="187" width="957" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="370.4375" x="839.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <rect stroke="#000" id="svg_31" height="181.000002" width="951.000029" y="2.4375" x="3.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_32" y="167.4375" x="14.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">MBUF pool</text>
+  <rect id="svg_38" height="71" width="859" y="15.4375" x="18.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_39" height="71" width="859" y="32.4375" x="33.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_40" height="71" width="859" y="47.4375" x="52.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_41" height="71" width="859" y="62.4375" x="71.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect stroke="#000" id="svg_42" height="55.999999" width="403.000005" y="69.4375" x="486.499995" stroke-opacity="null" stroke-width="0" fill="#FFAC8D"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="103.4375" x="631.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Payload</text>
+  <rect stroke="#000" id="svg_44" height="56" width="140.999999" y="68.4375" x="292.500001" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_45" y="105.4375" x="303.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Metadata</text>
+  <rect stroke="#000" id="svg_46" height="53" width="185.999997" y="70.4375" x="90.5" stroke-opacity="null" stroke-width="0" fill="#EDFFFF"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_47" y="104.4375" x="105.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">struct mbuf</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_pdump.svg b/doc/guides/howto/img/dtg_pdump.svg
new file mode 100644
index 000000000..4b14fb7ce
--- /dev/null
+++ b/doc/guides/howto/img/dtg_pdump.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="860" height="140" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>pdump</title>
+  <rect fill="#fff" id="canvas_background" height="142" width="862" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_15" height="127.999992" width="568" y="7" x="8.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect id="svg_2" height="51" width="100" y="23" x="22.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_3" height="51" width="100" y="26" x="455.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <path id="svg_7" d="m208.364769,78.968848l12.704559,-5.623238l12.697917,-5.625551l-12.704644,-5.629525l-12.697836,-5.625202l0,6.255891c-3.112384,0 -6.729051,0 -7.940704,0c-5.776899,0.124913 -12.907107,-3.365352 -20.492742,-7.864703c-2.827801,-1.577599 -5.680695,-3.313223 -8.704363,-4.88042c3.023667,-1.569118 5.872475,-3.302747 8.704363,-4.880295c7.585635,-4.493132 14.715839,-7.98967 20.485292,-7.862546l7.94815,-0.002103l0,6.264275l12.697836,-5.627447l12.704644,-5.631775l-12.704644,-5.637807l-12.697836,-5.629547l0,6.260273l-7.944067,0c-11.799214,0.12679 -20.61742,5.506774 -28.333828,9.879239c-7.660201,4.613909 -14.545738,8.087381 -18.539115,7.862617l-22.780531,0l0,9.993806l22.788007,0c3.989952,-0.226969 10.878944,3.248761 18.53841,7.86254c7.71303,4.374678 16.52785,9.750196 28.330427,9.879312l7.940704,0l0,6.262203l0,0l0,0.000003z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <path id="svg_8" d="m439.457308,43.77545l-10.478696,-7.306254l0,8.12971l-18.805519,0c-3.29272,0.296972 -8.977707,-4.212008 -15.298608,-10.195089c-6.365074,-5.675375 -13.639418,-12.638687 -23.37938,-12.824984l-6.552957,0l0,12.959904l6.552957,0c4.770151,-0.167389 10.652051,4.360514 16.914219,10.203329c2.334186,2.041106 4.688512,4.292919 7.183208,6.326016c-2.494696,2.035766 -4.846223,4.290275 -7.183208,6.331424c-6.262164,5.826551 -12.144067,10.365242 -16.908056,10.200515l-6.559117,0l0,12.978808l6.555749,0c9.719269,-0.1646 16.996426,-7.14678 23.382185,-12.814082c6.32147,-5.983193 12.003677,-10.494803 15.299177,-10.203221l18.799357,0l0,8.129634l10.478696,-7.298036l10.484823,-7.303408l-10.484823,-7.314263l-0.000006,-0.000004z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="54" x="53.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_10" y="57" x="486.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_11" y="40" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="77" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="82" x="326.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="40" x="327.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q3</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="114.86203" x="234.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Primary</text>
+  <rect stroke="#000" id="svg_18" height="90.000001" width="201.999994" y="29.437499" x="654.5" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="102.4375" x="684.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Secondary</text>
+  <rect stroke="#000" id="svg_20" height="42.000001" width="184.000001" y="34.437499" x="664.499994" stroke-opacity="null" stroke-width="0" fill="#A0D58A"/>
+  <rect id="svg_21" height="1" width="0" y="366.4375" x="835.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="59.4375" x="668.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Ring BufferQ</text>
+  <path stroke="#000" transform="rotate(89.78996276855469 615.4766845703124,74.49395751953122) " id="svg_24" d="m599.023803,74.414257l17.255478,-33.667333l15.650356,33.667333l-8.226459,0l0,33.826726l-16.452915,0l0,-33.826726l-8.226459,0z" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="22.4375" x="714.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 0</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_producer_ring.svg b/doc/guides/howto/img/dtg_producer_ring.svg
new file mode 100644
index 000000000..e300234cd
--- /dev/null
+++ b/doc/guides/howto/img/dtg_producer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>producer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 197.864990234375,42.89100646972657) " id="svg_7" d="m175.364991,42.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 445.864990234375,47.89100646972657) " id="svg_8" d="m423.364991,47.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m120.937481,42.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m373.937481,45.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_qos_tx.svg b/doc/guides/howto/img/dtg_qos_tx.svg
new file mode 100644
index 000000000..9f1d3b80d
--- /dev/null
+++ b/doc/guides/howto/img/dtg_qos_tx.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="287" height="180" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>qos</title>
+  <rect fill="#fff" id="canvas_background" height="182" width="289" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="180" width="287" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CBFFFF"/>
+  <rect id="svg_10" height="82" width="78" y="17.808165" x="152.25" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="36.808165" x="171.25" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="59.808165" x="188.25" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="113.808165" x="211.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="161.808165" x="161.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="235.775764" x="531.631651" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500273,0,0,0.9358925757041695,106.13283890389599,-107.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="173.881425" x="192.8023" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="66.670315" x="-70.838675" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_18" height="103" width="104" y="26" x="26" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FABA6F"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="79" x="50" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="153" x="27" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 10</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_rate.svg b/doc/guides/howto/img/dtg_rx_rate.svg
new file mode 100644
index 000000000..02f8760c5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_rate.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="116" height="152" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx rate</title>
+  <rect fill="#fff" id="canvas_background" height="154" width="118" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.812613" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.812613" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.812613" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.812613" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.812613" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.621694" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002745,0,0,0.9358925757041695,-60.867161096103985,-178.0100101290174) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.29845" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_tx_drop.svg b/doc/guides/howto/img/dtg_rx_tx_drop.svg
new file mode 100644
index 000000000..ca1484862
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_tx_drop.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="275" height="154" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx-tx drops</title>
+  <rect fill="#fff" id="canvas_background" height="156" width="277" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.808165" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.808165" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.808165" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.808165" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.808165" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.616159" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500274,0,0,0.9358925757041695,-60.867161096103985,-178.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.292073" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_10" height="82" width="78" y="2.808165" x="159.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="21.808165" x="178.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="44.808165" x="195.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="98.808165" x="218.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="146.808165" x="168.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="217.105524" x="547.514971" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002734,0,0,0.9358925757041695,98.13283890389599,-176.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="45.160101" x="-53.681142" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_sample_app_model.svg b/doc/guides/howto/img/dtg_sample_app_model.svg
new file mode 100644
index 000000000..b876aa3b6
--- /dev/null
+++ b/doc/guides/howto/img/dtg_sample_app_model.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="1418" height="379" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>sample application model</title>
+  <rect fill="#fff" id="canvas_background" height="381" width="1420" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_84" height="378.999996" width="1417.999937" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect stroke="#000" id="svg_1" height="79.999993" width="187.000011" y="267" x="635.499996" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="28.000001" width="175.000003" y="271.437495" x="641" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="36.000002" width="142" y="304.437495" x="659" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.7497134942573729,0,0,0.7607963681117937,149.70768863149087,72.0554119542491) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="335.740664" x="684.214296"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="368.437495" x="685"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 7</text>
+  <text stroke="#000" transform="matrix(0.7446371555386645,0,0,0.7004599746900311,157.05848471617847,107.2548065316271) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="261.052167" x="658.840014"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+  <rect id="svg_26" height="91" width="88" y="89.4375" x="2"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_27" height="91" width="88" y="107.4375" x="24"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_28" y="166.4375" x="52"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_30" y="96.937501" x="-11.409091"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_33" y="128.4375" x="27.863636"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_34" y="216.4375" x="26"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core0</text>
+  <rect id="svg_35" height="91" width="88" y="55.4375" x="1303"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_36" height="91" width="88" y="73.4375" x="1325"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_37" y="132.4375" x="1352"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_40" y="184.4375" x="1327"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6296296119689941,200.86111453175545,24.236112266778946) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="74.319853" x="1811.681832"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6958672408102909,0,0,0.6184720487972513,537.7539486343405,-28.040291137315034) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_44" y="191.620936" x="1140.58332"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <rect stroke="#000" id="svg_45" height="62" width="83.000003" y="101.4375" x="1096"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_46" y="135.4375" x="1115"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <rect stroke="#000" id="svg_48" height="61" width="107" y="110.4375" x="649"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_49" y="145.4375" x="661"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">Crypto</text>
+  <rect stroke="#000" id="svg_50" height="70.999998" width="84.000002" y="65.4375" x="422"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_51" height="74.000003" width="90.000002" y="92.4375" x="444"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_52" height="71.999998" width="92" y="120.4375" x="468"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_53" y="-145.374996" x="553.425418"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_54" y="417.437503" x="420.257696" stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_55" y="-19.012521" x="530.011964"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <rect stroke="#000" id="svg_62" height="70.999998" width="84.000002" y="67.4375" x="865"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_63" height="74.000003" width="90.000002" y="94.4375" x="887"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_64" height="71.999998" width="92" y="122.4375" x="911"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_65" y="-143.687496" x="1238.132093"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_66" y="420.437503" x="1072.811052"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_67" y="-16.312521" x="1122.016685"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <path stroke="#000" id="svg_68" d="m653.747516,12.862181l19.36745,-10.781877l77.632553,0l0,53.999988l-97.000004,0l0,-43.218111z"
+   stroke-opacity="null" stroke-width="0" fill="#805064"/>
+  <text stroke="#000" transform="matrix(0.733815550804138,0,0,0.9629629850387573,306.63544338941574,-1.3912058547139168) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_69" y="33.322117" x="496.534253"
+   stroke-opacity="null" stroke-width="0" fill="#ffffff">Device</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_70" y="217.4375" x="457"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_71" y="197.4375" x="653"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 5</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_72" y="186.4375" x="1097"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_73" y="220.4375" x="885"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <rect stroke="#000" id="svg_74" height="88.000002" width="110.999999" y="104" x="206.000001"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text stroke="#000" transform="matrix(0.5661651903991256,0,0,1,107.56695064249905,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_75" y="133" x="182.901935"
+   stroke-opacity="null" stroke-width="0" fill="#000000">PKT classify</text>
+  <text stroke="#000" transform="matrix(0.5444634556770325,0,0,1,115.93405053019524,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_76" y="170" x="196.644877"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Distribute</text>
+  <path id="svg_77" d="m189.755816,142.38346l-9.615746,-5.572568l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.781769l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.14196,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552703 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.44398 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899092l6.015865,0c8.91886,-0.125542 15.596722,-5.450935 21.456596,-9.773453c5.800879,-4.563453 11.01514,-8.004512 14.039247,-7.782119l17.251176,0l0,6.200569l9.615746,-5.566299l9.621368,-5.570396l-9.621368,-5.578676l-0.000005,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_78" d="m417.79301,181.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.003899 -9.48466,-0.003899 -11.161519,-0.003899c-4.954616,-0.078306 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745716 -9.348773,-7.687237 -14.54043,-12.448672c-2.640478,-2.367977 -5.58224,-4.716439 -9.50016,-6.604946c-3.878767,-1.896386 -8.946375,-3.211512 -14.579566,-3.186066l-24.41645,0l0,9.245023l24.41645,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.71366,4.855376 14.505736,9.757754 27.25778,9.804723l11.246452,0l0,5.786895l13.60709,-5.201732zm-57.554046,-35.013272c0.15434,0.072423 0.317546,0.135019 0.468152,0.209421c4.65338,2.242732 8.013781,4.994346 10.673477,7.387791c0.611391,0.559679 1.153382,1.097877 1.733756,1.647811l31.071571,0l0,5.788888l13.60709,-5.201813l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.46277618408203 605.7476806640625,144.42587280273435) " id="svg_79" d="m590.864808,144.339395l14.882874,-35.951591l14.882874,35.951591l-7.441438,0l0,36.124583l-14.882873,0l0,-36.124583l-7.441438,0z" stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.74066925048828 697.6382446289062,81.67762756347659) " id="svg_80" d="m661.638136,81.677665l20.874103,-13.000079l0,6.500022l30.252035,0l0,-6.500022l20.874093,13.000079l-20.874093,13.000009l0,-6.500005l-30.252035,0l0,6.500005l-20.874103,-13.000009z" fill-opacity="null"
+   stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path id="svg_81" d="m858.79301,172.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.0039 -9.48466,-0.0039 -11.161519,-0.0039c-4.954616,-0.078305 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745715 -9.348773,-7.687236 -14.54043,-12.448672c-2.640477,-2.367977 -5.58224,-4.716438 -9.50016,-6.604945c-3.878767,-1.896387 -8.946375,-3.211513 -14.579566,-3.186067l-24.416451,0l0,9.245023l24.416451,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.713661,4.855376 14.505736,9.757754 27.257781,9.804723l11.246451,0l0,5.786894l13.60709,-5.201732zm-57.554045,-35.013272c0.15434,0.072424 0.317546,0.135019 0.468152,0.209421c4.65338,2.242731 8.013781,4.994346 10.673477,7.38779c0.61139,0.559679 1.153381,1.097878 1.733756,1.647812l31.07157,0l0,5.788888l13.60709,-5.201812l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_82" d="m1080.755816,127.38346l-9.615746,-5.572567l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.78177l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.141959,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552704 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.443981 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899093l6.015865,0c8.91886,-0.125543 15.596723,-5.450935 21.456596,-9.773454c5.800879,-4.563453 11.01514,-8.004512 14.039246,-7.782119l17.251177,0l0,6.20057l9.615746,-5.566299l9.621368,-5.570397l-9.621368,-5.578676l-0.000006,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" id="svg_83" d="m1269.963506,163.318859l13.567973,-4.653717l13.56088,-4.655631l-13.568064,-4.658919l-13.560793,-4.655342l0,5.177292c-3.323905,0 -7.186364,0 -8.480362,0c-6.169502,0.103377 -13.784287,-2.785121 -21.885448,-6.508723c-3.019981,-1.3056 -6.066761,-2.741979 -9.295919,-4.03897c3.229159,-1.298581 6.271574,-2.733309 9.295919,-4.038867c8.101162,-3.718456 15.715942,-6.612144 21.877492,-6.506938l8.488314,-0.001741l0,5.18423l13.560793,-4.6572l13.568064,-4.660782l-13.568064,-4.665774l-13.560793,-4.658938l0,5.180918l-8.483954,0c-12.6011,0.104929 -22.018599,4.557333 -30.259422,8.175926c-8.180795,3.81841 -15.53428,6.693008 -19.799052,6.506997l-24.328718,0l0,8.27074l24.336702,0c4.261113,-0.187837 11.618288,2.688631 19.798299,6.506933c8.237215,3.620425 17.651098,8.069132 30.25579,8.175987l8.480362,0l0,5.182516l0,0l0,0.000002z" fill-opacity="null"
+  stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_service.svg b/doc/guides/howto/img/dtg_service.svg
new file mode 100644
index 000000000..fa72de823
--- /dev/null
+++ b/doc/guides/howto/img/dtg_service.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="254" height="145" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>service</title>
+  <rect fill="#fff" id="canvas_background" height="147" width="256" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="109.999987" width="254.000014" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="37.000001" width="225" y="7.437494" x="4.5" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="45.000002" width="186.000003" y="58.437493" x="33.5" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="193.234194" x="-35.792216" stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="138.437495" x="45.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="141.982476" x="-63.753477" stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+ </g>
+</svg>
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
@ 2019-04-09  6:33                   ` Vipin Varghese
  0 siblings, 0 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

Add svg images for debug and troubleshoot guide.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>

---
 doc/guides/howto/img/dtg_consumer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_crypto.svg           |  21 ++++
 .../howto/img/dtg_distributor_worker.svg      |  36 ++++++
 doc/guides/howto/img/dtg_mempool.svg          |  27 +++++
 doc/guides/howto/img/dtg_pdump.svg            |  33 ++++++
 doc/guides/howto/img/dtg_producer_ring.svg    |  24 ++++
 doc/guides/howto/img/dtg_qos_tx.svg           |  29 +++++
 doc/guides/howto/img/dtg_rx_rate.svg          |  25 ++++
 doc/guides/howto/img/dtg_rx_tx_drop.svg       |  33 ++++++
 doc/guides/howto/img/dtg_sample_app_model.svg | 110 ++++++++++++++++++
 doc/guides/howto/img/dtg_service.svg          |  20 ++++
 11 files changed, 382 insertions(+)
 create mode 100644 doc/guides/howto/img/dtg_consumer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_crypto.svg
 create mode 100644 doc/guides/howto/img/dtg_distributor_worker.svg
 create mode 100644 doc/guides/howto/img/dtg_mempool.svg
 create mode 100644 doc/guides/howto/img/dtg_pdump.svg
 create mode 100644 doc/guides/howto/img/dtg_producer_ring.svg
 create mode 100644 doc/guides/howto/img/dtg_qos_tx.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_rate.svg
 create mode 100644 doc/guides/howto/img/dtg_rx_tx_drop.svg
 create mode 100644 doc/guides/howto/img/dtg_sample_app_model.svg
 create mode 100644 doc/guides/howto/img/dtg_service.svg

diff --git a/doc/guides/howto/img/dtg_consumer_ring.svg b/doc/guides/howto/img/dtg_consumer_ring.svg
new file mode 100644
index 000000000..d8cf0c292
--- /dev/null
+++ b/doc/guides/howto/img/dtg_consumer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>consumer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 177.864990234375,48.89100646972658) " id="svg_7" d="m155.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 434.864990234375,48.89100646972656) " id="svg_8" d="m412.364991,48.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m225.937481,47.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m475.937481,46.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_crypto.svg b/doc/guides/howto/img/dtg_crypto.svg
new file mode 100644
index 000000000..969f8b5d5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_crypto.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="180" height="230" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>crypto</title>
+  <rect fill="#fff" id="canvas_background" height="232" width="182" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="369.4375" x="838.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="222.4375" x="39.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 7</text>
+  <rect stroke="#000" id="svg_26" height="44.000003" width="155.000001" y="151.437497" x="6.499997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_27" y="179.4375" x="13.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">CRYPTO PMD</text>
+  <ellipse stroke="#000" ry="41.5" rx="66.500001" id="svg_28" cy="48.9375" cx="87.999997" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_29" y="57.4375" x="45.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Device</text>
+  <path stroke="#000" transform="rotate(-90.19718170166016 85.76751708984375,119.45785522460936) " id="svg_30" d="m40.743289,119.457895l26.106598,-13.915756l0,6.95786l37.835289,0l0,-6.95786l26.106586,13.915756l-26.106586,13.915682l0,-6.957842l-37.835289,0l0,6.957842l-26.106598,-13.915682z" stroke-opacity="null" stroke-width="0" fill="#845335"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_distributor_worker.svg b/doc/guides/howto/img/dtg_distributor_worker.svg
new file mode 100644
index 000000000..d2638ded8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_distributor_worker.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="600" height="235" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>distributor and worker</title>
+  <rect fill="#fff" id="canvas_background" height="237" width="602" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="89.999991" width="202.000004" y="21.000003" x="4" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start"
+   font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="47" x="7"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">PKT classify</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="96.5" x="25.992188" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Distribute</text>
+  <path id="svg_13" d="m334.224445,98.046256l16.252783,-5.432074l-16.252783,-5.429993l-16.256262,-5.427952l0,6.038517c-4.264321,-0.004069 -11.331234,-0.004069 -13.334561,-0.004069c-5.919233,-0.081711 -9.804243,-1.153783 -13.847174,-3.073397c-6.02597,-2.865095 -11.16889,-8.021466 -17.371313,-12.989922c-3.154554,-2.470933 -6.669049,-4.921502 -11.349751,-6.892119c-4.633926,-1.978838 -10.68815,-3.351144 -17.41807,-3.324591l-29.170102,0l0,9.646983l29.170102,0c4.056131,0.042884 6.623169,0.808657 10.124445,2.70786c5.179989,2.824261 10.230311,8.223602 17.195784,13.339136c6.826056,5.066481 17.329865,10.182006 32.564612,10.231017l13.436029,0l0,6.0385l16.256262,-5.427896zm-68.759273,-36.535597c0.184389,0.075572 0.379369,0.14089 0.559297,0.218526c5.559349,2.340242 9.573988,5.211493 12.751502,7.709001c0.730423,0.584013 1.377934,1.145611 2.071302,1.719456l37.120911,0l0,6.040581l16.256262,-5.42798l16.252783,-5.429962l-16.252783,-5.432037l-16.256262,-5.434093l0,6.036509l-52.503011,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFAC8D"/>
+  <rect stroke="#000" id="svg_17" height="110.999999" width="180" y="3.4375" x="353.5"
+   stroke-opacity="null" stroke-width="0" fill="#FABA6F"/>
+  <rect stroke="#000" id="svg_14" height="110.999999" width="180" y="31.4375" x="369.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_15" height="110.999999" width="180" y="58.4375" x="392.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFF093"/>
+  <rect stroke="#000" id="svg_16" height="110.999999" width="180" y="90.4375" x="413.5"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,142.60348030924797,64.2037038393319) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="71.490132" x="413.769676" stroke-opacity="null" stroke-width="0" fill="#000000">worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="101.332237" x="406.404514" stroke-opacity="null" stroke-width="0" fill="#000000">worker 2</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="58.700658" x="376.943866" stroke-opacity="null" stroke-width="0" fill="#000000">worker 3</text>
+  <text style="cursor: move;" stroke="#000" transform="matrix(0.678871691226959,0,0,0.7037037014961243,121.60348030924797,9.203703839331922) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="18.911184" x="350.429283" stroke-opacity="null" stroke-width="0" fill="#000000">worker 4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="139.4375" x="49.5"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_24" y="226.4375" x="404.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4,5</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_mempool.svg b/doc/guides/howto/img/dtg_mempool.svg
new file mode 100644
index 000000000..2f53a3ca8
--- /dev/null
+++ b/doc/guides/howto/img/dtg_mempool.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="955" height="185" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>mempool</title>
+  <rect fill="#fff" id="canvas_background" height="187" width="957" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="1" width="0" y="370.4375" x="839.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <rect stroke="#000" id="svg_31" height="181.000002" width="951.000029" y="2.4375" x="3.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_32" y="167.4375" x="14.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">MBUF pool</text>
+  <rect id="svg_38" height="71" width="859" y="15.4375" x="18.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_39" height="71" width="859" y="32.4375" x="33.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_40" height="71" width="859" y="47.4375" x="52.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect id="svg_41" height="71" width="859" y="62.4375" x="71.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8B4D4B"/>
+  <rect stroke="#000" id="svg_42" height="55.999999" width="403.000005" y="69.4375" x="486.499995" stroke-opacity="null" stroke-width="0" fill="#FFAC8D"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="103.4375" x="631.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Payload</text>
+  <rect stroke="#000" id="svg_44" height="56" width="140.999999" y="68.4375" x="292.500001" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_45" y="105.4375" x="303.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Metadata</text>
+  <rect stroke="#000" id="svg_46" height="53" width="185.999997" y="70.4375" x="90.5" stroke-opacity="null" stroke-width="0" fill="#EDFFFF"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_47" y="104.4375" x="105.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">struct mbuf</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_pdump.svg b/doc/guides/howto/img/dtg_pdump.svg
new file mode 100644
index 000000000..4b14fb7ce
--- /dev/null
+++ b/doc/guides/howto/img/dtg_pdump.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="860" height="140" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>pdump</title>
+  <rect fill="#fff" id="canvas_background" height="142" width="862" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_15" height="127.999992" width="568" y="7" x="8.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect id="svg_2" height="51" width="100" y="23" x="22.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_3" height="51" width="100" y="26" x="455.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CC7C65"/>
+  <path id="svg_7" d="m208.364769,78.968848l12.704559,-5.623238l12.697917,-5.625551l-12.704644,-5.629525l-12.697836,-5.625202l0,6.255891c-3.112384,0 -6.729051,0 -7.940704,0c-5.776899,0.124913 -12.907107,-3.365352 -20.492742,-7.864703c-2.827801,-1.577599 -5.680695,-3.313223 -8.704363,-4.88042c3.023667,-1.569118 5.872475,-3.302747 8.704363,-4.880295c7.585635,-4.493132 14.715839,-7.98967 20.485292,-7.862546l7.94815,-0.002103l0,6.264275l12.697836,-5.627447l12.704644,-5.631775l-12.704644,-5.637807l-12.697836,-5.629547l0,6.260273l-7.944067,0c-11.799214,0.12679 -20.61742,5.506774 -28.333828,9.879239c-7.660201,4.613909 -14.545738,8.087381 -18.539115,7.862617l-22.780531,0l0,9.993806l22.788007,0c3.989952,-0.226969 10.878944,3.248761 18.53841,7.86254c7.71303,4.374678 16.52785,9.750196 28.330427,9.879312l7.940704,0l0,6.262203l0,0l0,0.000003z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <path id="svg_8" d="m439.457308,43.77545l-10.478696,-7.306254l0,8.12971l-18.805519,0c-3.29272,0.296972 -8.977707,-4.212008 -15.298608,-10.195089c-6.365074,-5.675375 -13.639418,-12.638687 -23.37938,-12.824984l-6.552957,0l0,12.959904l6.552957,0c4.770151,-0.167389 10.652051,4.360514 16.914219,10.203329c2.334186,2.041106 4.688512,4.292919 7.183208,6.326016c-2.494696,2.035766 -4.846223,4.290275 -7.183208,6.331424c-6.262164,5.826551 -12.144067,10.365242 -16.908056,10.200515l-6.559117,0l0,12.978808l6.555749,0c9.719269,-0.1646 16.996426,-7.14678 23.382185,-12.814082c6.32147,-5.983193 12.003677,-10.494803 15.299177,-10.203221l18.799357,0l0,8.129634l10.478696,-7.298036l10.484823,-7.303408l-10.484823,-7.314263l-0.000006,-0.000004z" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#559E84"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="54" x="53.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_10" y="57" x="486.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_11" y="40" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_12" y="77" x="243.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="82" x="326.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="40" x="327.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Q3</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="114.86203" x="234.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Primary</text>
+  <rect stroke="#000" id="svg_18" height="90.000001" width="201.999994" y="29.437499" x="654.5" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="102.4375" x="684.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Secondary</text>
+  <rect stroke="#000" id="svg_20" height="42.000001" width="184.000001" y="34.437499" x="664.499994" stroke-opacity="null" stroke-width="0" fill="#A0D58A"/>
+  <rect id="svg_21" height="1" width="0" y="366.4375" x="835.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#A0D58A"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_22" y="59.4375" x="668.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Ring BufferQ</text>
+  <path stroke="#000" transform="rotate(89.78996276855469 615.4766845703124,74.49395751953122) " id="svg_24" d="m599.023803,74.414257l17.255478,-33.667333l15.650356,33.667333l-8.226459,0l0,33.826726l-16.452915,0l0,-33.826726l-8.226459,0z" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#7AD6CA"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="22.4375" x="714.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core 0</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_producer_ring.svg b/doc/guides/howto/img/dtg_producer_ring.svg
new file mode 100644
index 000000000..e300234cd
--- /dev/null
+++ b/doc/guides/howto/img/dtg_producer_ring.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="634" height="97" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>producer ring</title>
+  <rect fill="#fff" id="canvas_background" height="99" width="636" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="95" width="135" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_2" height="95" width="135" y="2" x="252" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <rect id="svg_3" height="95" width="135" y="2" x="499" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="45" x="10" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 1</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="52" x="268" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_6" y="53" x="517" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Stage 3</text>
+  <path transform="rotate(90.19324493408203 197.864990234375,42.89100646972657) " id="svg_7" d="m175.364991,42.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path transform="rotate(90.19324493408203 445.864990234375,47.89100646972657) " id="svg_8" d="m423.364991,47.766198l22.499998,-51.875196l22.499998,51.875196l-11.25,0l0,52.12481l-22.499996,0l0,-52.12481l-11.25,0z" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#4D2425"/>
+  <path id="svg_10" d="m120.937481,42.95781l0,0c0,-10.493411 8.282734,-19 18.500005,-19l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564971c3.469424,3.563191 5.418523,8.395917 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999998 -18.5,18.999998l0,0c-10.217271,0 -18.500005,-8.506591 -18.500005,-18.999998zm18.500005,-19l0,37.999998m-18.500005,-18.999998l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+  <path id="svg_11" d="m373.937481,45.95781l0,0c0,-10.493411 8.282734,-19.000001 18.500005,-19.000001l0,0c4.906504,0 9.612052,2.00178 13.081477,5.564972c3.469424,3.563191 5.418523,8.395916 5.418523,13.435029l0,0c0,10.493408 -8.282732,18.999997 -18.5,18.999997l0,0c-10.217271,0 -18.500005,-8.50659 -18.500005,-18.999997zm18.500005,-19.000001l0,37.999998m-18.500005,-18.999997l37.000005,0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#8CD79F"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_qos_tx.svg b/doc/guides/howto/img/dtg_qos_tx.svg
new file mode 100644
index 000000000..9f1d3b80d
--- /dev/null
+++ b/doc/guides/howto/img/dtg_qos_tx.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="287" height="180" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>qos</title>
+  <rect fill="#fff" id="canvas_background" height="182" width="289" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_21" height="180" width="287" y="0" x="0" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CBFFFF"/>
+  <rect id="svg_10" height="82" width="78" y="17.808165" x="152.25" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="36.808165" x="171.25" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="59.808165" x="188.25" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="113.808165" x="211.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="161.808165" x="161.25" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="235.775764" x="531.631651" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500273,0,0,0.9358925757041695,106.13283890389599,-107.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="173.881425" x="192.8023" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="66.670315" x="-70.838675" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_18" height="103" width="104" y="26" x="26" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FABA6F"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_19" y="79" x="50" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_20" y="153" x="27" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 10</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_rate.svg b/doc/guides/howto/img/dtg_rx_rate.svg
new file mode 100644
index 000000000..02f8760c5
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_rate.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="116" height="152" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx rate</title>
+  <rect fill="#fff" id="canvas_background" height="154" width="118" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.812613" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.812613" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.812613" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.812613" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.812613" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.621694" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002745,0,0,0.9358925757041695,-60.867161096103985,-178.0100101290174) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.29845" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_rx_tx_drop.svg b/doc/guides/howto/img/dtg_rx_tx_drop.svg
new file mode 100644
index 000000000..ca1484862
--- /dev/null
+++ b/doc/guides/howto/img/dtg_rx_tx_drop.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="275" height="154" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>rx-tx drops</title>
+  <rect fill="#fff" id="canvas_background" height="156" width="277" y="-1" x="-1"/>
+  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
+   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
+  </g>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect id="svg_1" height="82" width="78" y="0.808165" x="0.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_2" height="82" width="78" y="19.808165" x="19.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_3" height="82" width="78" y="42.808165" x="36.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_4" y="96.808165" x="59.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_5" y="144.808165" x="9.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core0</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_7" y="214.616159" x="210.788594" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.3615568424500274,0,0,0.9358925757041695,-60.867161096103985,-178.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_8" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_9" y="42.292073" x="-417.420836" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+  <rect id="svg_10" height="82" width="78" y="2.808165" x="159.75" stroke-width="1.5" stroke="#000" fill="#CC7C65"/>
+  <rect id="svg_11" height="82" width="78" y="21.808165" x="178.75" stroke-width="1.5" stroke="#000" fill="#CE7975"/>
+  <rect id="svg_12" height="82" width="78" y="44.808165" x="195.75" stroke-width="1.5" stroke="#000" fill="#8B4D4B"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_13" y="98.808165" x="218.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_14" y="146.808165" x="168.75" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">Core1</text>
+  <text stroke="#000" transform="matrix(0.47219348024375296,0,0,0.8034176367619965,-95.87709913037096,-156.57412588945806) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_15" y="217.105524" x="547.514971" stroke-opacity="null" stroke-width="0" fill="#000000">NIC1</text>
+  <text stroke="#000" transform="matrix(0.36155684245002734,0,0,0.9358925757041695,98.13283890389599,-176.01445723901463) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_16" y="231.580355" x="235.672461" stroke-opacity="null" stroke-width="0" fill="#000000">NIC2</text>
+  <text stroke="#000" transform="matrix(0.4371257876803068,0,0,0.6973431388181265,223.6990186363727,31.828115819425847) " font-style="italic" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_17" y="45.160101" x="-53.681142" stroke-opacity="null" stroke-width="0" fill="#000000">NIC3</text>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_sample_app_model.svg b/doc/guides/howto/img/dtg_sample_app_model.svg
new file mode 100644
index 000000000..b876aa3b6
--- /dev/null
+++ b/doc/guides/howto/img/dtg_sample_app_model.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="1418" height="379" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>sample application model</title>
+  <rect fill="#fff" id="canvas_background" height="381" width="1420" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_84" height="378.999996" width="1417.999937" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#B1FFFF"/>
+  <rect stroke="#000" id="svg_1" height="79.999993" width="187.000011" y="267" x="635.499996" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="28.000001" width="175.000003" y="271.437495" x="641" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="36.000002" width="142" y="304.437495" x="659" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(0.7497134942573729,0,0,0.7607963681117937,149.70768863149087,72.0554119542491) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="335.740664" x="684.214296"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="368.437495" x="685"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 7</text>
+  <text stroke="#000" transform="matrix(0.7446371555386645,0,0,0.7004599746900311,157.05848471617847,107.2548065316271) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="261.052167" x="658.840014"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+  <rect id="svg_26" height="91" width="88" y="89.4375" x="2"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_27" height="91" width="88" y="107.4375" x="24"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_28" y="166.4375" x="52"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">RX</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_30" y="96.937501" x="-11.409091"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6666666865348816,14.972222477197647,39.14583100005984) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_33" y="128.4375" x="27.863636"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_34" y="216.4375" x="26"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core0</text>
+  <rect id="svg_35" height="91" width="88" y="55.4375" x="1303"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#FFA9A2"/>
+  <rect id="svg_36" height="91" width="88" y="73.4375" x="1325"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#CE7975"/>
+  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_37" y="132.4375" x="1352"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">TX</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_40" y="184.4375" x="1327"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core1</text>
+  <text stroke="#000" transform="matrix(0.6111111044883728,0,0,0.6296296119689941,200.86111453175545,24.236112266778946) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_43" y="74.319853" x="1811.681832"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 1</text>
+  <text stroke="#000" transform="matrix(0.6958672408102909,0,0,0.6184720487972513,537.7539486343405,-28.040291137315034) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_44" y="191.620936" x="1140.58332"
+   stroke-opacity="null" stroke-width="0" fill="#000000">NIC 2</text>
+  <rect stroke="#000" id="svg_45" height="62" width="83.000003" y="101.4375" x="1096"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_46" y="135.4375" x="1115"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">QoS</text>
+  <rect stroke="#000" id="svg_48" height="61" width="107" y="110.4375" x="649"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_49" y="145.4375" x="661"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#ffffff">Crypto</text>
+  <rect stroke="#000" id="svg_50" height="70.999998" width="84.000002" y="65.4375" x="422"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_51" height="74.000003" width="90.000002" y="92.4375" x="444"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_52" height="71.999998" width="92" y="120.4375" x="468"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_53" y="-145.374996" x="553.425418"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_54" y="417.437503" x="420.257696" stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_55" y="-19.012521" x="530.011964"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <rect stroke="#000" id="svg_62" height="70.999998" width="84.000002" y="67.4375" x="865"
+   stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <rect stroke="#000" id="svg_63" height="74.000003" width="90.000002" y="94.4375" x="887"
+   stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_64" height="71.999998" width="92" y="122.4375" x="911"
+   stroke-opacity="null" stroke-width="0" fill="#C48157"/>
+  <text stroke="#000" transform="matrix(0.6528342962265015,0,0,0.5925925970077515,63.70490664243698,168.43749817460775) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_65" y="-143.687496" x="1238.132093"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 1</text>
+  <text stroke="#000" transform="matrix(0.678871691226959,0,0,0.6666666865348816,166.69894686341286,-165.52084343507886) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_66" y="420.437503" x="1072.811052"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 2</text>
+  <text stroke="#000" transform="matrix(0.7483048439025879,0,0,0.7407407164573669,76.38947987556458,153.33566251024604) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_67" y="-16.312521" x="1122.016685"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Worker 3</text>
+  <path stroke="#000" id="svg_68" d="m653.747516,12.862181l19.36745,-10.781877l77.632553,0l0,53.999988l-97.000004,0l0,-43.218111z"
+   stroke-opacity="null" stroke-width="0" fill="#805064"/>
+  <text stroke="#000" transform="matrix(0.733815550804138,0,0,0.9629629850387573,306.63544338941574,-1.3912058547139168) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_69" y="33.322117" x="496.534253"
+   stroke-opacity="null" stroke-width="0" fill="#ffffff">Device</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_70" y="217.4375" x="457"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_71" y="197.4375" x="653"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 5</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_72" y="186.4375" x="1097"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_73" y="220.4375" x="885"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 2,3,4</text>
+  <rect stroke="#000" id="svg_74" height="88.000002" width="110.999999" y="104" x="206.000001"
+   stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <text stroke="#000" transform="matrix(0.5661651903991256,0,0,1,107.56695064249905,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_75" y="133" x="182.901935"
+   stroke-opacity="null" stroke-width="0" fill="#000000">PKT classify</text>
+  <text stroke="#000" transform="matrix(0.5444634556770325,0,0,1,115.93405053019524,0) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_76" y="170" x="196.644877"
+   stroke-opacity="null" stroke-width="0" fill="#000000">Distribute</text>
+  <path id="svg_77" d="m189.755816,142.38346l-9.615746,-5.572568l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.781769l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.14196,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552703 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.44398 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899092l6.015865,0c8.91886,-0.125542 15.596722,-5.450935 21.456596,-9.773453c5.800879,-4.563453 11.01514,-8.004512 14.039247,-7.782119l17.251176,0l0,6.200569l9.615746,-5.566299l9.621368,-5.570396l-9.621368,-5.578676l-0.000005,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_78" d="m417.79301,181.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.003899 -9.48466,-0.003899 -11.161519,-0.003899c-4.954616,-0.078306 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745716 -9.348773,-7.687237 -14.54043,-12.448672c-2.640478,-2.367977 -5.58224,-4.716439 -9.50016,-6.604946c-3.878767,-1.896386 -8.946375,-3.211512 -14.579566,-3.186066l-24.41645,0l0,9.245023l24.41645,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.71366,4.855376 14.505736,9.757754 27.25778,9.804723l11.246452,0l0,5.786895l13.60709,-5.201732zm-57.554046,-35.013272c0.15434,0.072423 0.317546,0.135019 0.468152,0.209421c4.65338,2.242732 8.013781,4.994346 10.673477,7.387791c0.611391,0.559679 1.153382,1.097877 1.733756,1.647811l31.071571,0l0,5.788888l13.60709,-5.201813l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.46277618408203 605.7476806640625,144.42587280273435) " id="svg_79" d="m590.864808,144.339395l14.882874,-35.951591l14.882874,35.951591l-7.441438,0l0,36.124583l-14.882873,0l0,-36.124583l-7.441438,0z" stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path stroke="#000" transform="rotate(89.74066925048828 697.6382446289062,81.67762756347659) " id="svg_80" d="m661.638136,81.677665l20.874103,-13.000079l0,6.500022l30.252035,0l0,-6.500022l20.874093,13.000079l-20.874093,13.000009l0,-6.500005l-30.252035,0l0,6.500005l-20.874103,-13.000009z" fill-opacity="null"
+   stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+  <path id="svg_81" d="m858.79301,172.072084l13.604178,-5.205736l-13.604178,-5.203742l-13.60709,-5.201786l0,5.786911c-3.569394,-0.0039 -9.48466,-0.0039 -11.161519,-0.0039c-4.954616,-0.078305 -8.206513,-1.105708 -11.590595,-2.945338c-5.043959,-2.745715 -9.348773,-7.687236 -14.54043,-12.448672c-2.640477,-2.367977 -5.58224,-4.716438 -9.50016,-6.604945c-3.878767,-1.896387 -8.946375,-3.211513 -14.579566,-3.186067l-24.416451,0l0,9.245023l24.416451,0c3.395131,0.041097 5.543836,0.774963 8.474533,2.595032c4.335842,2.706583 8.563147,7.88095 14.393505,12.783335c5.713661,4.855376 14.505736,9.757754 27.257781,9.804723l11.246451,0l0,5.786894l13.60709,-5.201732zm-57.554045,-35.013272c0.15434,0.072424 0.317546,0.135019 0.468152,0.209421c4.65338,2.242731 8.013781,4.994346 10.673477,7.38779c0.61139,0.559679 1.153381,1.097878 1.733756,1.647812l31.07157,0l0,5.788888l13.60709,-5.201812l13.604178,-5.203713l-13.604178,-5.205701l-13.60709,-5.207671l0,5.784986l-43.946955,0z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path id="svg_82" d="m1080.755816,127.38346l-9.615746,-5.572567l0,6.200627l-17.256831,0c-3.021555,0.226504 -8.238368,-3.212549 -14.038725,-7.775916c-5.840892,-4.328677 -12.516173,-9.639678 -21.454022,-9.78177l-6.013302,0l0,9.884674l6.013302,0c4.377316,-0.12767 9.774825,3.325816 15.521285,7.782201c2.141959,1.556776 4.3024,3.274261 6.59165,4.824928c-2.28925,1.552704 -4.447123,3.272244 -6.59165,4.829053c-5.746457,4.443981 -11.143969,7.905694 -15.51563,7.780055l-6.018955,0l0,9.899093l6.015865,0c8.91886,-0.125543 15.596723,-5.450935 21.456596,-9.773454c5.800879,-4.563453 11.01514,-8.004512 14.039246,-7.782119l17.251177,0l0,6.20057l9.615746,-5.566299l9.621368,-5.570397l-9.621368,-5.578676l-0.000006,-0.000003z"
+   stroke-opacity="null" stroke-width="0" stroke="#000" fill="#619E73"/>
+  <path stroke="#000" id="svg_83" d="m1269.963506,163.318859l13.567973,-4.653717l13.56088,-4.655631l-13.568064,-4.658919l-13.560793,-4.655342l0,5.177292c-3.323905,0 -7.186364,0 -8.480362,0c-6.169502,0.103377 -13.784287,-2.785121 -21.885448,-6.508723c-3.019981,-1.3056 -6.066761,-2.741979 -9.295919,-4.03897c3.229159,-1.298581 6.271574,-2.733309 9.295919,-4.038867c8.101162,-3.718456 15.715942,-6.612144 21.877492,-6.506938l8.488314,-0.001741l0,5.18423l13.560793,-4.6572l13.568064,-4.660782l-13.568064,-4.665774l-13.560793,-4.658938l0,5.180918l-8.483954,0c-12.6011,0.104929 -22.018599,4.557333 -30.259422,8.175926c-8.180795,3.81841 -15.53428,6.693008 -19.799052,6.506997l-24.328718,0l0,8.27074l24.336702,0c4.261113,-0.187837 11.618288,2.688631 19.798299,6.506933c8.237215,3.620425 17.651098,8.069132 30.25579,8.175987l8.480362,0l0,5.182516l0,0l0,0.000002z" fill-opacity="null"
+  stroke-opacity="null" stroke-width="0" fill="#619E73"/>
+ </g>
+</svg>
diff --git a/doc/guides/howto/img/dtg_service.svg b/doc/guides/howto/img/dtg_service.svg
new file mode 100644
index 000000000..fa72de823
--- /dev/null
+++ b/doc/guides/howto/img/dtg_service.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Method Draw (https://editor.method.ac/) -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(c) 2018-2019 Intel Corporation -->
+
+<svg width="254" height="145" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <title>service</title>
+  <rect fill="#fff" id="canvas_background" height="147" width="256" y="-1" x="-1"/>
+ </g>
+ <g>
+  <title>Layer 1</title>
+  <rect stroke="#000" id="svg_1" height="109.999987" width="254.000014" y="0" x="0" stroke-opacity="null" stroke-width="0" fill="#9ACEE6"/>
+  <rect stroke="#000" id="svg_14" height="37.000001" width="225" y="7.437494" x="4.5" stroke-opacity="null" stroke-width="0" fill="#FFB27C"/>
+  <rect stroke="#000" id="svg_16" height="45.000002" width="186.000003" y="58.437493" x="33.5" stroke-opacity="null" stroke-width="0" fill="#FFE7A2"/>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_18" y="193.234194" x="-35.792216" stroke-opacity="null" stroke-width="0" fill="#000000">Health Check</text>
+  <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_23" y="138.437495" x="45.5" stroke-opacity="null" stroke-width="0" stroke="#000" fill="#000000">core 6</text>
+  <text stroke="#000" transform="matrix(1.0013854504218995,0,0,1.0926463039877063,73.76856116958965,-122.08861649089796) " xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="24" id="svg_25" y="141.982476" x="-63.753477" stroke-opacity="null" stroke-width="0" fill="#000000">Stats Collector</text>
+ </g>
+</svg>
-- 
2.17.1


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
  2019-04-09  6:33                 ` Vipin Varghese
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
@ 2019-04-09  6:33                 ` Vipin Varghese
  2019-04-09  6:33                   ` Vipin Varghese
  2019-05-04 22:26                 ` [dpdk-dev] [PATCH v8 0/2] guide to " Thomas Monjalon
  3 siblings, 1 reply; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

Add user guide on debugging and troubleshooting for common
issues and bottleneck found in the sample application model.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/howto/debug_troubleshoot_guide.rst | 464 ++++++++++++++++++
 doc/guides/howto/index.rst                    |   1 +
 2 files changed, 465 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst

diff --git a/doc/guides/howto/debug_troubleshoot_guide.rst b/doc/guides/howto/debug_troubleshoot_guide.rst
new file mode 100644
index 000000000..6abddcd32
--- /dev/null
+++ b/doc/guides/howto/debug_troubleshoot_guide.rst
@@ -0,0 +1,464 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018 Intel Corporation.
+
+Debug & Troubleshoot guide
+==========================
+
+DPDK applications can be designed to have simple or complex pipeline processing
+stages making use of single or multiple threads. Applications can use poll mode
+hardware devices which helps in offloading CPU cycles too. It is common to find
+solutions designed with
+
+* single or multiple primary processes
+
+* single primary and single secondary
+
+* single primary and multiple secondaries
+
+In all the above cases, it is tedious to isolate, debug, and understand various
+behaviors which occur randomly or periodically. The goal of the guide is to
+consolidate a few commonly seen issues for reference. Then, isolate to identify
+the root cause through step by step debug at various stages.
+
+.. note::
+
+ It is difficult to cover all possible issues; in a single attempt. With
+ feedback and suggestions from the community, more cases can be covered.
+
+
+Application Overview
+--------------------
+
+By making use of the application model as a reference, we can discuss multiple
+causes of issues in the guide. Let us assume the sample makes use of a single
+primary process, with various processing stages running on multiple cores. The
+application may also make uses of Poll Mode Driver, and libraries like service
+cores, mempool, mbuf, eventdev, cryptodev, QoS, and ethdev.
+
+The overview of an application modeled using PMD is shown in
+:numref:`dtg_sample_app_model`.
+
+.. _dtg_sample_app_model:
+
+.. figure:: img/dtg_sample_app_model.*
+
+   Overview of pipeline stage of an application
+
+
+Bottleneck Analysis
+-------------------
+
+A couple of factors that lead the design decision could be the platform, scale
+factor, and target. This distinct preference leads to multiple combinations,
+that are built using PMD and libraries of DPDK. While the compiler, library
+mode, and optimization flags are the components are to be constant, that
+affects the application too.
+
+
+Is there mismatch in packet (received < desired) rate?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX Port and associated core :numref:`dtg_rx_rate`.
+
+.. _dtg_rx_rate:
+
+.. figure:: img/dtg_rx_rate.*
+
+   RX packet rate compared against received rate.
+
+#. Is the configuration for the RX setup correctly?
+
+   * Identify if port Speed and Duplex is matching to desired values with
+     ``rte_eth_link_get``.
+
+   * Check ``DEV_RX_OFFLOAD_JUMBO_FRAME`` is set with ``rte_eth_dev_info_get``.
+
+   * Check promiscuous mode if the drops do not occur for unique MAC address
+     with ``rte_eth_promiscuous_get``.
+
+#. Is the drop isolated to certain NIC only?
+
+   * Make use of ``rte_eth_dev_stats`` to identify the drops cause.
+
+   * If there are mbuf drops, check nb_desc for RX descriptor as it might not
+     be sufficient for the application.
+
+   * If ``rte_eth_dev_stats`` shows drops are on specific RX queues, ensure RX
+     lcore threads has enough cycles for ``rte_eth_rx_burst`` on the port queue
+     pair.
+
+   * If there are redirect to a specific port queue pair with, ensure RX lcore
+     threads gets enough cycles.
+
+   * Check the RSS configuration ``rte_eth_dev_rss_hash_conf_get`` if the
+     spread is not even and causing drops.
+
+   * If PMD stats are not updating, then there might be offload or configuration
+     which is dropping the incoming traffic.
+
+#. Is there drops still seen?
+
+   * If there are multiple port queue pair, it might be the RX thread, RX
+     distributor, or event RX adapter not having enough cycles.
+
+   * If there are drops seen for RX adapter or RX distributor, try using
+     ``rte_prefetch_non_temporal`` which intimates the core that the mbuf in the
+     cache is temporary.
+
+
+Is there packet drops at receive or transmit?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX-TX port and associated cores :numref:`dtg_rx_tx_drop`.
+
+.. _dtg_rx_tx_drop:
+
+.. figure:: img/dtg_rx_tx_drop.*
+
+   RX-TX drops
+
+#. At RX
+
+   * Identify if there are multiple RX queue configured for port by
+     ``nb_rx_queues`` using ``rte_eth_dev_info_get``.
+
+   * Using ``rte_eth_dev_stats`` fetch drops in q_errors, check if RX thread
+     is configured to fetch packets from the port queue pair.
+
+   * Using ``rte_eth_dev_stats`` shows drops in ``rx_nombuf``, check if RX
+     thread has enough cycles to consume the packets from the queue.
+
+#. At TX
+
+   * If the TX rate is falling behind the application fill rate, identify if
+     there are enough descriptors with ``rte_eth_dev_info_get`` for TX.
+
+   * Check the ``nb_pkt`` in ``rte_eth_tx_burst`` is done for multiple packets.
+
+   * Check ``rte_eth_tx_burst`` invokes the vector function call for the PMD.
+
+   * If oerrors are getting incremented, TX packet validations are failing.
+     Check if there queue specific offload failures.
+
+   * If the drops occur for large size packets, check MTU and multi-segment
+     support configured for NIC.
+
+
+Is there object drops in producer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Producer point for ring :numref:`dtg_producer_ring`.
+
+.. _dtg_producer_ring:
+
+.. figure:: img/dtg_producer_ring.*
+
+   Producer point for Rings
+
+#. Performance issue isolation at producer
+
+   * Use ``rte_ring_dump`` to validate for all single producer flag is set to
+     ``RING_F_SP_ENQ``.
+
+   * There should be sufficient ``rte_ring_free_count`` at any point in time.
+
+   * Extreme stalls in dequeue stage of the pipeline will cause
+     ``rte_ring_full`` to be true.
+
+
+Is there object drops in consumer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Consumer point for ring :numref:`dtg_consumer_ring`.
+
+.. _dtg_consumer_ring:
+
+.. figure:: img/dtg_consumer_ring.*
+
+   Consumer point for Rings
+
+#. Performance issue isolation at consumer
+
+   * Use ``rte_ring_dump`` to validate for all single consumer flag is set to
+     ``RING_F_SC_DEQ``.
+
+   * If the desired burst dequeue falls behind the actual dequeue, the enqueue
+     stage is not filling up the ring as required.
+
+   * Extreme stall in the enqueue will lead to ``rte_ring_empty`` to be true.
+
+
+Is there a variance in packet or object processing rate in the pipeline?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Memory objects close to NUMA :numref:`dtg_mempool`.
+
+.. _dtg_mempool:
+
+.. figure:: img/dtg_mempool.*
+
+   Memory objects have to be close to the device per NUMA.
+
+#. Stall in processing pipeline can be attributes of MBUF release delays.
+   These can be narrowed down to
+
+   * Heavy processing cycles at single or multiple processing stages.
+
+   * Cache is spread due to the increased stages in the pipeline.
+
+   * CPU thread responsible for TX is not able to keep up with the burst of
+     traffic.
+
+   * Extra cycles to linearize multi-segment buffer and software offload like
+     checksum, TSO, and VLAN strip.
+
+   * Packet buffer copy in fast path also results in stalls in MBUF release if
+     not done selectively.
+
+   * Application logic sets ``rte_pktmbuf_refcnt_set`` to higher than the
+     desired value and frequently uses ``rte_pktmbuf_prefree_seg`` and does
+     not release MBUF back to mempool.
+
+#. Lower performance between the pipeline processing stages can be
+
+   * The NUMA instance for packets or objects from NIC, mempool, and ring
+     should be the same.
+
+   * Drops on a specific socket are due to insufficient objects in the pool.
+     Use ``rte_mempool_get_count`` or ``rte_mempool_avail_count`` to monitor
+     when drops occurs.
+
+   * Try prefetching the content in processing pipeline logic to minimize the
+     stalls.
+
+#. Performance issue can be due to special cases
+
+   * Check if MBUF continuous with ``rte_pktmbuf_is_contiguous`` as certain
+     offload requires the same.
+
+   * Use ``rte_mempool_cache_create`` for user threads require access to
+     mempool objects.
+
+   * If the variance is absent for larger huge pages, then try rte_mem_lock_page
+     on the objects, packets, lookup tables to isolate the issue.
+
+
+Is there a variance in cryptodev performance?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Crypto device and PMD :numref:`dtg_crypto`.
+
+.. _dtg_crypto:
+
+.. figure:: img/dtg_crypto.*
+
+   CRYPTO and interaction with PMD device.
+
+#. Performance issue isolation for enqueue
+
+   * Ensure cryptodev, resources and enqueue is running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using ``rte_cryptodev_stats``.
+
+   * Parallelize enqueue thread for varied multiple queue pair.
+
+#. Performance issue isolation for dequeue
+
+   * Ensure cryptodev, resources and dequeue are running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using ``rte_cryptodev_stats``.
+
+   * Parallelize dequeue thread for varied multiple queue pair.
+
+#. Performance issue isolation for crypto operation
+
+   * If the cryptodev software-assist is in use, ensure the library is built
+     with right (SIMD) flags or check if the queue pair using CPU ISA for
+     feature_flags AVX|SSE|NEON using ``rte_cryptodev_info_get``.
+
+   * If the cryptodev hardware-assist is in use, ensure both firmware and
+     drivers are up to date.
+
+#. Configuration issue isolation
+
+   * Identify cryptodev instances with ``rte_cryptodev_count`` and
+     ``rte_cryptodev_info_get``.
+
+
+Is user functions performance is not as expected?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Custom worker function :numref:`dtg_distributor_worker`.
+
+.. _dtg_distributor_worker:
+
+.. figure:: img/dtg_distributor_worker.*
+
+   Custom worker function performance drops.
+
+#. Performance issue isolation
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with ``rte_lcore`` and lcore index
+     mapping with CPU using ``rte_lcore_index``.
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with ``rte_lcore`` and lcore index
+     mapping with CPU using ``rte_lcore_index``.
+
+   * Use ``rte_thread_get_affinity`` to isolate functions running on the same
+     CPU core.
+
+#. Configuration issue isolation
+
+   * Identify core role using ``rte_eal_lcore_role`` to identify RTE, OFF and
+     SERVICE. Check performance functions are mapped to run on the cores.
+
+   * For high-performance execution logic ensure running it on correct NUMA
+     and non-master core.
+
+   * Analyze run logic with ``rte_dump_stack``, ``rte_dump_registers`` and
+     ``rte_memdump`` for more insights.
+
+   * Make use of objdump to ensure opcode is matching to the desired state.
+
+
+Is the execution cycles for dynamic service functions are not frequent?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+service functions on service cores :numref:`dtg_service`.
+
+.. _dtg_service:
+
+.. figure:: img/dtg_service.*
+
+   functions running on service cores
+
+#. Performance issue isolation
+
+   * Services configured for parallel execution should have
+     ``rte_service_lcore_count`` should be equal to
+     ``rte_service_lcore_count_services``.
+
+   * A service to run parallel on all cores should return
+     ``RTE_SERVICE_CAP_MT_SAFE`` for ``rte_service_probe_capability`` and
+     ``rte_service_map_lcore_get`` returns unique lcore.
+
+   * If service function execution cycles for dynamic service functions are
+     not frequent?
+
+   * If services share the lcore, overall execution should fit budget.
+
+#. Configuration issue isolation
+
+   * Check if service is running with ``rte_service_runstate_get``.
+
+   * Generic debug via ``rte_service_dump``.
+
+
+Is there a bottleneck in the performance of eventdev?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Check for generic configuration
+
+   * Ensure the event devices created are right NUMA using
+     ``rte_event_dev_count`` and ``rte_event_dev_socket_id``.
+
+   * Check for event stages if the events are looped back into the same queue.
+
+   * If the failure is on the enqueue stage for events, check if queue depth
+     with ``rte_event_dev_info_get``.
+
+#. If there are performance drops in the enqueue stage
+
+   * Use ``rte_event_dev_dump`` to dump the eventdev information.
+
+   * Periodically checks stats for queue and port to identify the starvation.
+
+   * Check the in-flight events for the desired queue for enqueue and dequeue.
+
+
+Is there a variance in traffic manager?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Traffic Manager on TX interface :numref:`dtg_qos_tx`.
+
+.. _dtg_qos_tx:
+
+.. figure:: img/dtg_qos_tx.*
+
+   Traffic Manager just before TX.
+
+#. Identify the cause for a variance from expected behavior, is due to
+   insufficient CPU cycles. Use ``rte_tm_capabilities_get`` to fetch features
+   for hierarchies, WRED and priority schedulers to be offloaded hardware.
+
+#. Undesired flow drops can be narrowed down to WRED, priority, and rates
+   limiters.
+
+#. Isolate the flow in which the undesired drops occur. Use
+   ``rte_tn_get_number_of_leaf_node`` and flow table to ping down the leaf
+   where drops occur.
+
+#. Check the stats using ``rte_tm_stats_update`` and ``rte_tm_node_stats_read``
+   for drops for hierarchy, schedulers and WRED configurations.
+
+
+Is the packet not in the unexpected format?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Packet capture before and after processing :numref:`dtg_pdump`.
+
+.. _dtg_pdump:
+
+.. figure:: img/dtg_pdump.*
+
+   Capture points of Traffic at RX-TX.
+
+#. To isolate the possible packet corruption in the processing pipeline,
+   carefully staged capture packets are to be implemented.
+
+   * First, isolate at NIC entry and exit.
+
+     Use pdump in primary to allow secondary to access port-queue pair. The
+     packets get copied over in RX|TX callback by the secondary process using
+     ring buffers.
+
+   * Second, isolate at pipeline entry and exit.
+
+     Using hooks or callbacks capture the packet middle of the pipeline stage
+     to copy the packets, which can be shared to the secondary debug process
+     via user-defined custom rings.
+
+.. note::
+
+   Use similar analysis to objects and metadata corruption.
+
+
+Does the issue still persist?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The issue can be further narrowed down to the following causes.
+
+#. If there are vendor or application specific metadata, check for errors due
+   to META data error flags. Dumping private meta-data in the objects can give
+   insight into details for debugging.
+
+#. If there are multi-process for either data or configuration, check for
+   possible errors in the secondary process where the configuration fails and
+   possible data corruption in the data plane.
+
+#. Random drops in the RX or TX when opening other application is an indication
+   of the effect of a noisy neighbor. Try using the cache allocation technique
+   to minimize the effect between applications.
+
+
+How to develop a custom code to debug?
+--------------------------------------
+
+#. For an application that runs as the primary process only, debug functionality
+   is added in the same process. These can be invoked by timer call-back,
+   service core and signal handler.
+
+#. For the application that runs as multiple processes. debug functionality in
+   a standalone secondary process.
diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst
index a642a2be1..9527fa84d 100644
--- a/doc/guides/howto/index.rst
+++ b/doc/guides/howto/index.rst
@@ -18,3 +18,4 @@ HowTo Guides
     virtio_user_as_exceptional_path
     packet_capture_framework
     telemetry
+    debug_troubleshoot_guide
-- 
2.17.1

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
@ 2019-04-09  6:33                   ` Vipin Varghese
  0 siblings, 0 replies; 43+ messages in thread
From: Vipin Varghese @ 2019-04-09  6:33 UTC (permalink / raw)
  To: dev, marko.kovacevic, john.mcnamara, shreyansh.jain
  Cc: keith.wiles, amit.tamboli, sanjay.padubidri, amol.patel,
	ferruh.yigit, Vipin Varghese

Add user guide on debugging and troubleshooting for common
issues and bottleneck found in the sample application model.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/howto/debug_troubleshoot_guide.rst | 464 ++++++++++++++++++
 doc/guides/howto/index.rst                    |   1 +
 2 files changed, 465 insertions(+)
 create mode 100644 doc/guides/howto/debug_troubleshoot_guide.rst

diff --git a/doc/guides/howto/debug_troubleshoot_guide.rst b/doc/guides/howto/debug_troubleshoot_guide.rst
new file mode 100644
index 000000000..6abddcd32
--- /dev/null
+++ b/doc/guides/howto/debug_troubleshoot_guide.rst
@@ -0,0 +1,464 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018 Intel Corporation.
+
+Debug & Troubleshoot guide
+==========================
+
+DPDK applications can be designed to have simple or complex pipeline processing
+stages making use of single or multiple threads. Applications can use poll mode
+hardware devices which helps in offloading CPU cycles too. It is common to find
+solutions designed with
+
+* single or multiple primary processes
+
+* single primary and single secondary
+
+* single primary and multiple secondaries
+
+In all the above cases, it is tedious to isolate, debug, and understand various
+behaviors which occur randomly or periodically. The goal of the guide is to
+consolidate a few commonly seen issues for reference. Then, isolate to identify
+the root cause through step by step debug at various stages.
+
+.. note::
+
+ It is difficult to cover all possible issues; in a single attempt. With
+ feedback and suggestions from the community, more cases can be covered.
+
+
+Application Overview
+--------------------
+
+By making use of the application model as a reference, we can discuss multiple
+causes of issues in the guide. Let us assume the sample makes use of a single
+primary process, with various processing stages running on multiple cores. The
+application may also make uses of Poll Mode Driver, and libraries like service
+cores, mempool, mbuf, eventdev, cryptodev, QoS, and ethdev.
+
+The overview of an application modeled using PMD is shown in
+:numref:`dtg_sample_app_model`.
+
+.. _dtg_sample_app_model:
+
+.. figure:: img/dtg_sample_app_model.*
+
+   Overview of pipeline stage of an application
+
+
+Bottleneck Analysis
+-------------------
+
+A couple of factors that lead the design decision could be the platform, scale
+factor, and target. This distinct preference leads to multiple combinations,
+that are built using PMD and libraries of DPDK. While the compiler, library
+mode, and optimization flags are the components are to be constant, that
+affects the application too.
+
+
+Is there mismatch in packet (received < desired) rate?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX Port and associated core :numref:`dtg_rx_rate`.
+
+.. _dtg_rx_rate:
+
+.. figure:: img/dtg_rx_rate.*
+
+   RX packet rate compared against received rate.
+
+#. Is the configuration for the RX setup correctly?
+
+   * Identify if port Speed and Duplex is matching to desired values with
+     ``rte_eth_link_get``.
+
+   * Check ``DEV_RX_OFFLOAD_JUMBO_FRAME`` is set with ``rte_eth_dev_info_get``.
+
+   * Check promiscuous mode if the drops do not occur for unique MAC address
+     with ``rte_eth_promiscuous_get``.
+
+#. Is the drop isolated to certain NIC only?
+
+   * Make use of ``rte_eth_dev_stats`` to identify the drops cause.
+
+   * If there are mbuf drops, check nb_desc for RX descriptor as it might not
+     be sufficient for the application.
+
+   * If ``rte_eth_dev_stats`` shows drops are on specific RX queues, ensure RX
+     lcore threads has enough cycles for ``rte_eth_rx_burst`` on the port queue
+     pair.
+
+   * If there are redirect to a specific port queue pair with, ensure RX lcore
+     threads gets enough cycles.
+
+   * Check the RSS configuration ``rte_eth_dev_rss_hash_conf_get`` if the
+     spread is not even and causing drops.
+
+   * If PMD stats are not updating, then there might be offload or configuration
+     which is dropping the incoming traffic.
+
+#. Is there drops still seen?
+
+   * If there are multiple port queue pair, it might be the RX thread, RX
+     distributor, or event RX adapter not having enough cycles.
+
+   * If there are drops seen for RX adapter or RX distributor, try using
+     ``rte_prefetch_non_temporal`` which intimates the core that the mbuf in the
+     cache is temporary.
+
+
+Is there packet drops at receive or transmit?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RX-TX port and associated cores :numref:`dtg_rx_tx_drop`.
+
+.. _dtg_rx_tx_drop:
+
+.. figure:: img/dtg_rx_tx_drop.*
+
+   RX-TX drops
+
+#. At RX
+
+   * Identify if there are multiple RX queue configured for port by
+     ``nb_rx_queues`` using ``rte_eth_dev_info_get``.
+
+   * Using ``rte_eth_dev_stats`` fetch drops in q_errors, check if RX thread
+     is configured to fetch packets from the port queue pair.
+
+   * Using ``rte_eth_dev_stats`` shows drops in ``rx_nombuf``, check if RX
+     thread has enough cycles to consume the packets from the queue.
+
+#. At TX
+
+   * If the TX rate is falling behind the application fill rate, identify if
+     there are enough descriptors with ``rte_eth_dev_info_get`` for TX.
+
+   * Check the ``nb_pkt`` in ``rte_eth_tx_burst`` is done for multiple packets.
+
+   * Check ``rte_eth_tx_burst`` invokes the vector function call for the PMD.
+
+   * If oerrors are getting incremented, TX packet validations are failing.
+     Check if there queue specific offload failures.
+
+   * If the drops occur for large size packets, check MTU and multi-segment
+     support configured for NIC.
+
+
+Is there object drops in producer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Producer point for ring :numref:`dtg_producer_ring`.
+
+.. _dtg_producer_ring:
+
+.. figure:: img/dtg_producer_ring.*
+
+   Producer point for Rings
+
+#. Performance issue isolation at producer
+
+   * Use ``rte_ring_dump`` to validate for all single producer flag is set to
+     ``RING_F_SP_ENQ``.
+
+   * There should be sufficient ``rte_ring_free_count`` at any point in time.
+
+   * Extreme stalls in dequeue stage of the pipeline will cause
+     ``rte_ring_full`` to be true.
+
+
+Is there object drops in consumer point for the ring library?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Consumer point for ring :numref:`dtg_consumer_ring`.
+
+.. _dtg_consumer_ring:
+
+.. figure:: img/dtg_consumer_ring.*
+
+   Consumer point for Rings
+
+#. Performance issue isolation at consumer
+
+   * Use ``rte_ring_dump`` to validate for all single consumer flag is set to
+     ``RING_F_SC_DEQ``.
+
+   * If the desired burst dequeue falls behind the actual dequeue, the enqueue
+     stage is not filling up the ring as required.
+
+   * Extreme stall in the enqueue will lead to ``rte_ring_empty`` to be true.
+
+
+Is there a variance in packet or object processing rate in the pipeline?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Memory objects close to NUMA :numref:`dtg_mempool`.
+
+.. _dtg_mempool:
+
+.. figure:: img/dtg_mempool.*
+
+   Memory objects have to be close to the device per NUMA.
+
+#. Stall in processing pipeline can be attributes of MBUF release delays.
+   These can be narrowed down to
+
+   * Heavy processing cycles at single or multiple processing stages.
+
+   * Cache is spread due to the increased stages in the pipeline.
+
+   * CPU thread responsible for TX is not able to keep up with the burst of
+     traffic.
+
+   * Extra cycles to linearize multi-segment buffer and software offload like
+     checksum, TSO, and VLAN strip.
+
+   * Packet buffer copy in fast path also results in stalls in MBUF release if
+     not done selectively.
+
+   * Application logic sets ``rte_pktmbuf_refcnt_set`` to higher than the
+     desired value and frequently uses ``rte_pktmbuf_prefree_seg`` and does
+     not release MBUF back to mempool.
+
+#. Lower performance between the pipeline processing stages can be
+
+   * The NUMA instance for packets or objects from NIC, mempool, and ring
+     should be the same.
+
+   * Drops on a specific socket are due to insufficient objects in the pool.
+     Use ``rte_mempool_get_count`` or ``rte_mempool_avail_count`` to monitor
+     when drops occurs.
+
+   * Try prefetching the content in processing pipeline logic to minimize the
+     stalls.
+
+#. Performance issue can be due to special cases
+
+   * Check if MBUF continuous with ``rte_pktmbuf_is_contiguous`` as certain
+     offload requires the same.
+
+   * Use ``rte_mempool_cache_create`` for user threads require access to
+     mempool objects.
+
+   * If the variance is absent for larger huge pages, then try rte_mem_lock_page
+     on the objects, packets, lookup tables to isolate the issue.
+
+
+Is there a variance in cryptodev performance?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Crypto device and PMD :numref:`dtg_crypto`.
+
+.. _dtg_crypto:
+
+.. figure:: img/dtg_crypto.*
+
+   CRYPTO and interaction with PMD device.
+
+#. Performance issue isolation for enqueue
+
+   * Ensure cryptodev, resources and enqueue is running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using ``rte_cryptodev_stats``.
+
+   * Parallelize enqueue thread for varied multiple queue pair.
+
+#. Performance issue isolation for dequeue
+
+   * Ensure cryptodev, resources and dequeue are running on NUMA cores.
+
+   * Isolate if the cause of errors for err_count using ``rte_cryptodev_stats``.
+
+   * Parallelize dequeue thread for varied multiple queue pair.
+
+#. Performance issue isolation for crypto operation
+
+   * If the cryptodev software-assist is in use, ensure the library is built
+     with right (SIMD) flags or check if the queue pair using CPU ISA for
+     feature_flags AVX|SSE|NEON using ``rte_cryptodev_info_get``.
+
+   * If the cryptodev hardware-assist is in use, ensure both firmware and
+     drivers are up to date.
+
+#. Configuration issue isolation
+
+   * Identify cryptodev instances with ``rte_cryptodev_count`` and
+     ``rte_cryptodev_info_get``.
+
+
+Is user functions performance is not as expected?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Custom worker function :numref:`dtg_distributor_worker`.
+
+.. _dtg_distributor_worker:
+
+.. figure:: img/dtg_distributor_worker.*
+
+   Custom worker function performance drops.
+
+#. Performance issue isolation
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with ``rte_lcore`` and lcore index
+     mapping with CPU using ``rte_lcore_index``.
+
+   * The functions running on CPU cores without context switches are the
+     performing scenarios. Identify lcore with ``rte_lcore`` and lcore index
+     mapping with CPU using ``rte_lcore_index``.
+
+   * Use ``rte_thread_get_affinity`` to isolate functions running on the same
+     CPU core.
+
+#. Configuration issue isolation
+
+   * Identify core role using ``rte_eal_lcore_role`` to identify RTE, OFF and
+     SERVICE. Check performance functions are mapped to run on the cores.
+
+   * For high-performance execution logic ensure running it on correct NUMA
+     and non-master core.
+
+   * Analyze run logic with ``rte_dump_stack``, ``rte_dump_registers`` and
+     ``rte_memdump`` for more insights.
+
+   * Make use of objdump to ensure opcode is matching to the desired state.
+
+
+Is the execution cycles for dynamic service functions are not frequent?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+service functions on service cores :numref:`dtg_service`.
+
+.. _dtg_service:
+
+.. figure:: img/dtg_service.*
+
+   functions running on service cores
+
+#. Performance issue isolation
+
+   * Services configured for parallel execution should have
+     ``rte_service_lcore_count`` should be equal to
+     ``rte_service_lcore_count_services``.
+
+   * A service to run parallel on all cores should return
+     ``RTE_SERVICE_CAP_MT_SAFE`` for ``rte_service_probe_capability`` and
+     ``rte_service_map_lcore_get`` returns unique lcore.
+
+   * If service function execution cycles for dynamic service functions are
+     not frequent?
+
+   * If services share the lcore, overall execution should fit budget.
+
+#. Configuration issue isolation
+
+   * Check if service is running with ``rte_service_runstate_get``.
+
+   * Generic debug via ``rte_service_dump``.
+
+
+Is there a bottleneck in the performance of eventdev?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Check for generic configuration
+
+   * Ensure the event devices created are right NUMA using
+     ``rte_event_dev_count`` and ``rte_event_dev_socket_id``.
+
+   * Check for event stages if the events are looped back into the same queue.
+
+   * If the failure is on the enqueue stage for events, check if queue depth
+     with ``rte_event_dev_info_get``.
+
+#. If there are performance drops in the enqueue stage
+
+   * Use ``rte_event_dev_dump`` to dump the eventdev information.
+
+   * Periodically checks stats for queue and port to identify the starvation.
+
+   * Check the in-flight events for the desired queue for enqueue and dequeue.
+
+
+Is there a variance in traffic manager?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Traffic Manager on TX interface :numref:`dtg_qos_tx`.
+
+.. _dtg_qos_tx:
+
+.. figure:: img/dtg_qos_tx.*
+
+   Traffic Manager just before TX.
+
+#. Identify the cause for a variance from expected behavior, is due to
+   insufficient CPU cycles. Use ``rte_tm_capabilities_get`` to fetch features
+   for hierarchies, WRED and priority schedulers to be offloaded hardware.
+
+#. Undesired flow drops can be narrowed down to WRED, priority, and rates
+   limiters.
+
+#. Isolate the flow in which the undesired drops occur. Use
+   ``rte_tn_get_number_of_leaf_node`` and flow table to ping down the leaf
+   where drops occur.
+
+#. Check the stats using ``rte_tm_stats_update`` and ``rte_tm_node_stats_read``
+   for drops for hierarchy, schedulers and WRED configurations.
+
+
+Is the packet not in the unexpected format?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Packet capture before and after processing :numref:`dtg_pdump`.
+
+.. _dtg_pdump:
+
+.. figure:: img/dtg_pdump.*
+
+   Capture points of Traffic at RX-TX.
+
+#. To isolate the possible packet corruption in the processing pipeline,
+   carefully staged capture packets are to be implemented.
+
+   * First, isolate at NIC entry and exit.
+
+     Use pdump in primary to allow secondary to access port-queue pair. The
+     packets get copied over in RX|TX callback by the secondary process using
+     ring buffers.
+
+   * Second, isolate at pipeline entry and exit.
+
+     Using hooks or callbacks capture the packet middle of the pipeline stage
+     to copy the packets, which can be shared to the secondary debug process
+     via user-defined custom rings.
+
+.. note::
+
+   Use similar analysis to objects and metadata corruption.
+
+
+Does the issue still persist?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The issue can be further narrowed down to the following causes.
+
+#. If there are vendor or application specific metadata, check for errors due
+   to META data error flags. Dumping private meta-data in the objects can give
+   insight into details for debugging.
+
+#. If there are multi-process for either data or configuration, check for
+   possible errors in the secondary process where the configuration fails and
+   possible data corruption in the data plane.
+
+#. Random drops in the RX or TX when opening other application is an indication
+   of the effect of a noisy neighbor. Try using the cache allocation technique
+   to minimize the effect between applications.
+
+
+How to develop a custom code to debug?
+--------------------------------------
+
+#. For an application that runs as the primary process only, debug functionality
+   is added in the same process. These can be invoked by timer call-back,
+   service core and signal handler.
+
+#. For the application that runs as multiple processes. debug functionality in
+   a standalone secondary process.
diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst
index a642a2be1..9527fa84d 100644
--- a/doc/guides/howto/index.rst
+++ b/doc/guides/howto/index.rst
@@ -18,3 +18,4 @@ HowTo Guides
     virtio_user_as_exceptional_path
     packet_capture_framework
     telemetry
+    debug_troubleshoot_guide
-- 
2.17.1


^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-08  6:45                     ` Thomas Monjalon
  2019-04-08  6:45                       ` Thomas Monjalon
@ 2019-04-09  6:33                       ` Varghese, Vipin
  2019-04-09  6:33                         ` Varghese, Vipin
  1 sibling, 1 reply; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-09  6:33 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

snipped
> >
> > Would like me to send a v8 or can the v7 be accepted with quotes removed
> while merge?
> 
> No Vipin, you need to add quotes everywhere in the doc for the code symbols.
> 
> 
Thanks, shared v8

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot
  2019-04-09  6:33                       ` Varghese, Vipin
@ 2019-04-09  6:33                         ` Varghese, Vipin
  0 siblings, 0 replies; 43+ messages in thread
From: Varghese, Vipin @ 2019-04-09  6:33 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Mcnamara, John, Kovacevic, Marko, Yigit, Ferruh,
	shreyansh.jain, Padubidri, Sanjay A, Patel, Amol

snipped
> >
> > Would like me to send a v8 or can the v7 be accepted with quotes removed
> while merge?
> 
> No Vipin, you need to add quotes everywhere in the doc for the code symbols.
> 
> 
Thanks, shared v8

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v8 0/2] guide to debug and troubleshoot.
  2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
                                   ` (2 preceding siblings ...)
  2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
@ 2019-05-04 22:26                 ` Thomas Monjalon
  2019-05-04 22:26                   ` Thomas Monjalon
  3 siblings, 1 reply; 43+ messages in thread
From: Thomas Monjalon @ 2019-05-04 22:26 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: dev, marko.kovacevic, john.mcnamara, shreyansh.jain, keith.wiles,
	amit.tamboli, sanjay.padubidri, amol.patel, ferruh.yigit

09/04/2019 08:33, Vipin Varghese:
> The patch series adds a how-to guide for debugging and
> troubleshooting tips.
> 
> Motivation
> ==========
> 
> DPDK proc-info tool is been enhanced to accommodate the debug information
> for the port, traffic manager crypto, ring and mempool contents. With these
> additional information, it becomes easy to analyze issues and performance
> variance.
> 
> But applications are designed based on the target platform, workload, poll
> mode drivers, and multi-process. This raises variance in debugging and
> collecting data. Hence attempt of patch series is identified such symptoms
> and share step by step guide to cover the cases.
> 
> Not all possible cases could be covered in a single attempt. But with
> feedback and support from the community, this can be expanded.

I removed _guide at the end of the filename,
and applied, thanks.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [dpdk-dev] [PATCH v8 0/2] guide to debug and troubleshoot.
  2019-05-04 22:26                 ` [dpdk-dev] [PATCH v8 0/2] guide to " Thomas Monjalon
@ 2019-05-04 22:26                   ` Thomas Monjalon
  0 siblings, 0 replies; 43+ messages in thread
From: Thomas Monjalon @ 2019-05-04 22:26 UTC (permalink / raw)
  To: Vipin Varghese
  Cc: dev, marko.kovacevic, john.mcnamara, shreyansh.jain, keith.wiles,
	amit.tamboli, sanjay.padubidri, amol.patel, ferruh.yigit

09/04/2019 08:33, Vipin Varghese:
> The patch series adds a how-to guide for debugging and
> troubleshooting tips.
> 
> Motivation
> ==========
> 
> DPDK proc-info tool is been enhanced to accommodate the debug information
> for the port, traffic manager crypto, ring and mempool contents. With these
> additional information, it becomes easy to analyze issues and performance
> variance.
> 
> But applications are designed based on the target platform, workload, poll
> mode drivers, and multi-process. This raises variance in debugging and
> collecting data. Hence attempt of patch series is identified such symptoms
> and share step by step guide to cover the cases.
> 
> Not all possible cases could be covered in a single attempt. But with
> feedback and support from the community, this can be expanded.

I removed _guide at the end of the filename,
and applied, thanks.




^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2019-05-04 22:26 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-30  4:56 [dpdk-dev] [PATCH v1] doc: add meson build to contributing guide Vipin Varghese
2018-10-30 10:54 ` Bruce Richardson
2018-10-30 14:13 ` [dpdk-dev] [PATCH v2] " Vipin Varghese
2018-10-30 14:18   ` [dpdk-dev] [PATCH v3] " Vipin Varghese
2018-11-14 14:30     ` Kovacevic, Marko
2018-11-24 18:57       ` Thomas Monjalon
2019-01-10 16:37         ` Varghese, Vipin
2019-01-24 23:05     ` [dpdk-dev] [PATCH v4] doc/patches: " Vipin Varghese
2019-01-28  0:39       ` Thomas Monjalon
2019-01-28 14:27         ` Varghese, Vipin
2019-01-28 14:52           ` Thomas Monjalon
2019-01-28 15:40             ` Varghese, Vipin
2019-01-29 10:10       ` [dpdk-dev] [PATCH v5] " Vipin Varghese
2019-02-12  9:36         ` Thomas Monjalon
2019-02-13  5:38           ` Varghese, Vipin
2019-02-13  5:41         ` [dpdk-dev] [PATCH v6] " Vipin Varghese
2019-02-25 17:12           ` [dpdk-dev] [PATCH v7 0/2] guide to debug and troubleshoot Vipin Varghese
2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
2019-04-01 14:56               ` Mcnamara, John
2019-04-01 14:56                 ` Mcnamara, John
2019-02-25 17:12             ` [dpdk-dev] [PATCH v7 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
2019-04-01 14:56               ` Mcnamara, John
2019-04-01 14:56                 ` Mcnamara, John
2019-04-05  8:49                 ` Thomas Monjalon
2019-04-05  8:49                   ` Thomas Monjalon
2019-04-08  3:18                   ` Varghese, Vipin
2019-04-08  3:18                     ` Varghese, Vipin
2019-04-08  6:45                     ` Thomas Monjalon
2019-04-08  6:45                       ` Thomas Monjalon
2019-04-09  6:33                       ` Varghese, Vipin
2019-04-09  6:33                         ` Varghese, Vipin
2019-04-09  6:33               ` [dpdk-dev] [PATCH v8 0/2] guide to " Vipin Varghese
2019-04-09  6:33                 ` Vipin Varghese
2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
2019-04-09  6:33                   ` Vipin Varghese
2019-04-09  6:33                 ` [dpdk-dev] [PATCH v8 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
2019-04-09  6:33                   ` Vipin Varghese
2019-05-04 22:26                 ` [dpdk-dev] [PATCH v8 0/2] guide to " Thomas Monjalon
2019-05-04 22:26                   ` Thomas Monjalon
2019-04-01  4:08             ` [dpdk-dev] [PATCH v7 " Varghese, Vipin
2019-04-01  4:08               ` Varghese, Vipin
2019-02-27 11:41           ` [dpdk-dev] [PATCH v6] doc/patches: add meson build to contributing guide Thomas Monjalon
2019-02-27 12:13             ` Varghese, Vipin

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/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 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


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