All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eran Ben Elisha <eranbe@mellanox.com>
To: Cong Wang <xiyou.wangcong@gmail.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: Jiri Pirko <jiri@mellanox.com>
Subject: Re: [Patch net-next] net: add a generic tracepoint for TX queue timeout
Date: Wed, 1 May 2019 13:11:11 +0000	[thread overview]
Message-ID: <68f5b7e3-4022-edd4-8d18-752b3dfc500f@mellanox.com> (raw)
In-Reply-To: <20190430185009.20456-1-xiyou.wangcong@gmail.com>



On 4/30/2019 9:50 PM, Cong Wang wrote:
> Although devlink health report does a nice job on reporting TX
> timeout and other NIC errors, unfortunately it requires drivers
> to support it but currently only mlx5 has implemented it.

The devlink health was never intended to be the generic mechanism for 
monitoring all driver's TX timeouts notifications. mlx5e driver chose to 
handle TX timeout notification by reporting it to the newly devlink 
health mechanism.

> Before other drivers could catch up, it is useful to have a
> generic tracepoint to monitor this kind of TX timeout. We have
> been suffering TX timeout with different drivers, we plan to
> start to monitor it with rasdaemon which just needs a new tracepoint.

Great idea to suggest a generic trace message that can be monitored over 
all drivers.

> 
> Sample output:
> 
>    ksoftirqd/1-16    [001] ..s2   144.043173: net_dev_xmit_timeout: dev=ens3 driver=e1000 queue=0
> 
> Cc: Eran Ben Elisha <eranbe@mellanox.com>
> Cc: Jiri Pirko <jiri@mellanox.com>
> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
> ---
>   include/trace/events/net.h | 23 +++++++++++++++++++++++
>   net/sched/sch_generic.c    |  2 ++
>   2 files changed, 25 insertions(+)
> 
> diff --git a/include/trace/events/net.h b/include/trace/events/net.h
> index 1efd7d9b25fe..002d6f04b9e5 100644
> --- a/include/trace/events/net.h
> +++ b/include/trace/events/net.h
> @@ -303,6 +303,29 @@ DEFINE_EVENT(net_dev_rx_exit_template, netif_receive_skb_list_exit,
>   	TP_ARGS(ret)
>   );
>   

I would have put this next to net_dev_xmit trace event declaration.

> +TRACE_EVENT(net_dev_xmit_timeout,
> +
> +	TP_PROTO(struct net_device *dev,
> +		 int queue_index),
> +
> +	TP_ARGS(dev, queue_index),
> +
> +	TP_STRUCT__entry(
> +		__string(	name,		dev->name	)
> +		__string(	driver,		netdev_drivername(dev))
> +		__field(	int,		queue_index	)
> +	),
> +
> +	TP_fast_assign(
> +		__assign_str(name, dev->name);
> +		__assign_str(driver, netdev_drivername(dev));
> +		__entry->queue_index = queue_index;
> +	),
> +
> +	TP_printk("dev=%s driver=%s queue=%d",
> +		__get_str(name), __get_str(driver), __entry->queue_index)
> +);
> +
>   #endif /* _TRACE_NET_H */
>   
>   /* This part must be outside protection */
> diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
> index 848aab3693bd..cce1e9ee85af 100644
> --- a/net/sched/sch_generic.c
> +++ b/net/sched/sch_generic.c
> @@ -32,6 +32,7 @@
>   #include <net/pkt_sched.h>
>   #include <net/dst.h>
>   #include <trace/events/qdisc.h>
> +#include <trace/events/net.h>
>   #include <net/xfrm.h>
>   
>   /* Qdisc to use by default */
> @@ -441,6 +442,7 @@ static void dev_watchdog(struct timer_list *t)
>   			}
>   
>   			if (some_queue_timedout) {
> +				trace_net_dev_xmit_timeout(dev, i);
>   				WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s (%s): transmit queue %u timed out\n",
>   				       dev->name, netdev_drivername(dev), i);
>   				dev->netdev_ops->ndo_tx_timeout(dev);
> 

  reply	other threads:[~2019-05-01 13:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-30 18:50 [Patch net-next] net: add a generic tracepoint for TX queue timeout Cong Wang
2019-05-01 13:11 ` Eran Ben Elisha [this message]
2019-05-01 20:55   ` Saeed Mahameed
2019-05-02  0:50   ` Cong Wang

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=68f5b7e3-4022-edd4-8d18-752b3dfc500f@mellanox.com \
    --to=eranbe@mellanox.com \
    --cc=jiri@mellanox.com \
    --cc=netdev@vger.kernel.org \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.