From: Thomas Monjalon <thomas@monjalon.net>
To: Vipin Varghese <vipin.varghese@intel.com>,
john.mcnamara@intel.com, marko.kovacevic@intel.com
Cc: dev@dpdk.org, shreyansh.jain@nxp.com, amol.patel@intel.com,
sanjay.padubidri@intel.com
Subject: Re: [dpdk-dev] [PATCH v5 2/2] doc: add guide for debug and troubleshoot
Date: Mon, 28 Jan 2019 02:30:32 +0100 [thread overview]
Message-ID: <4205846.5ZvrQ4I3CE@xps> (raw)
In-Reply-To: <20190121104144.67365-3-vipin.varghese@intel.com>
Hi,
I feel this doc will be updated to provide a complete debug checklist,
and will become useful to many users hopefully.
One general comment about documentation,
It is better to wrap lines logically, for example, always start sentences
at the beginning of a new line. It will make further update patches
simpler to review.
Few more nits below,
21/01/2019 11:41, Vipin Varghese:
> +.. _debug_troubleshoot_via_pmd:
No need of such anchor.
> +
> +Debug & Troubleshoot guide via PMD
> +==================================
Why "via PMD"? Do we use PMD for troubleshooting?
Or is it dedicated to troubleshoot the PMD behaviour?
> +
> +DPDK applications can be designed to run as single thread simple stage to
> +multiple threads with complex pipeline stages. These application can use poll
applications
> +mode devices which helps in offloading CPU cycles. A few models are
help
A colon would be nice at the end of the line before the list.
> +
> + * single primary
> + * multiple primary
> + * single primary single secondary
> + * single primary multiple secondary
> +
> +In all the above cases, it is a tedious task to isolate, debug and understand
> +odd behaviour which occurs randomly or periodically. The goal of guide is to
> +share and explore a few commonly seen patterns and behaviour. Then, isolate
> +and identify the root cause via step by step debug at various processing
> +stages.
I don't understand how this introduction is related to "via PMD" in the title.
> +
> +Application Overview
> +--------------------
> +
> +Let us take up an example application as reference for explaining issues and
> +patterns commonly seen. The sample application in discussion makes use of
> +single primary model with various pipeline stages. The application uses PMD
> +and libraries such as service cores, mempool, pkt mbuf, event, crypto, QoS
> +and eth.
"pkt mbuf" can be called simply mbuf, but event, crypto and eth
should be eventdev, cryptodev 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
> +-------------------
> +
> +To debug the bottleneck and performance issues the desired application
missing comma after "issues"?
> +is made to run in an environment matching as below
colon missing
> +
> +#. Linux 64-bit|32-bit
> +#. DPDK PMD and libraries are used
Isn't it always the case with DPDK?
> +#. Libraries and PMD are either static or shared. But not both
Strange assumption. Why would it be both?
> +#. Machine flag optimizations of gcc or compiler are made constant
What do you mean?
> +
> +Is there mismatch in packet rate (received < send)?
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +RX Port and associated core :numref:`dtg_rx_rate`.
> +
> +.. _dtg_rx_rate:
> +
> +.. figure:: img/dtg_rx_rate.*
> +
> + RX send rate compared against Received rate
RX send ?
> +
> +#. Are generic configuration correct?
Are -> Is
> + - What is port Speed, Duplex? rte_eth_link_get()
> + - Are packets of higher sizes are dropped? rte_eth_get_mtu()
are dropped -> dropped
> + - Are only specific MAC received? rte_eth_promiscuous_get()
> +
> +#. Are there NIC specific drops?
> + - Check rte_eth_rx_queue_info_get() for nb_desc and scattered_rx
> + - Is RSS enabled? rte_eth_dev_rss_hash_conf_get()
> + - Are packets spread on all queues? rte_eth_dev_stats()
> + - If stats for RX and drops updated on same queue? check receive thread
> + - If packet does not reach PMD? check if offload for port and queue
> + matches to traffic pattern send.
> +
> +#. If problem still persists, this might be at RX lcore thread
> + - Check if RX thread, distributor or event rx adapter? these may be
> + processing less than required
> + - Is the application is build using processing pipeline with RX stage? If
is build -> built
> + there are multiple port-pair tied to a single RX core, try to debug by
> + using rte_prefetch_non_temporal(). This will intimate the mbuf in cache
> + is temporary.
I stop nit-picking review here.
Marko, John, please could you check english grammar?
Thanks
next prev parent reply other threads:[~2019-01-28 1:30 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-26 7:08 [dpdk-dev] [PATCH v3 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
2018-11-26 7:08 ` [dpdk-dev] [PATCH v3 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
2019-01-04 6:37 ` Shreyansh Jain
2019-01-04 7:01 ` Varghese, Vipin
2019-01-16 14:54 ` [dpdk-dev] [PATCH v4 0/2] doci/howto: add debug and troubleshoot guide Vipin Varghese
2019-01-16 14:54 ` [dpdk-dev] [PATCH v4 1/2] doc: add svg for " Vipin Varghese
2019-01-16 14:54 ` [dpdk-dev] [PATCH v4 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
2019-01-18 15:28 ` Kovacevic, Marko
2019-01-21 3:38 ` Varghese, Vipin
2019-01-21 10:41 ` [dpdk-dev] [PATCH v5 0/2] doc/howto: add debug and troubleshoot guide Vipin Varghese
2019-01-21 10:41 ` [dpdk-dev] [PATCH v5 1/2] doc: add svg for " Vipin Varghese
2019-01-28 1:08 ` Thomas Monjalon
2019-01-28 14:28 ` Varghese, Vipin
2019-02-19 15:57 ` [dpdk-dev] [PATCH v6 0/2] guide to debug and troubleshoot Vipin Varghese
2019-02-19 15:57 ` [dpdk-dev] [PATCH v6 1/2] doc: add svg for debug and troubleshoot guide Vipin Varghese
2019-02-19 15:57 ` [dpdk-dev] [PATCH v6 2/2] doc: add guide for debug and troubleshoot Vipin Varghese
2019-02-25 11:34 ` Mcnamara, John
2019-02-25 15:46 ` Varghese, Vipin
2019-01-21 10:41 ` [dpdk-dev] [PATCH v5 " Vipin Varghese
2019-01-28 1:30 ` Thomas Monjalon [this message]
2019-01-28 14:51 ` Varghese, Vipin
2019-01-28 15:59 ` Thomas Monjalon
2019-02-08 9:21 ` Varghese, Vipin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4205846.5ZvrQ4I3CE@xps \
--to=thomas@monjalon.net \
--cc=amol.patel@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=sanjay.padubidri@intel.com \
--cc=shreyansh.jain@nxp.com \
--cc=vipin.varghese@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).