From: Koki Sanagi <sanagi.koki@jp.fujitsu.com>
To: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, davem@davemloft.net,
kaneshige.kenji@jp.fujitsu.com, izumi.taku@jp.fujitsu.com,
kosaki.motohiro@jp.fujitsu.com, nhorman@tuxdriver.com,
laijs@cn.fujitsu.com, scott.a.mcmillan@intel.com,
rostedt@goodmis.org, eric.dumazet@gmail.com, fweisbec@gmail.com,
mathieu.desnoyers@polymtl.ca
Subject: [PATCH v4 3/5] netdev: add tracepoints to netdev layer
Date: Mon, 23 Aug 2010 18:45:02 +0900 [thread overview]
Message-ID: <4C72431E.3000901@jp.fujitsu.com> (raw)
In-Reply-To: <4C72422C.5070102@jp.fujitsu.com>
This patch adds tracepoint to dev_queue_xmit, dev_hard_start_xmit, netif_rx and
netif_receive_skb. These tracepoints help you to monitor network driver's
input/output.
<idle>-0 [001] 112447.902030: netif_rx: dev=eth1 skbaddr=f3ef0900 len=84
<idle>-0 [001] 112447.902039: netif_receive_skb: dev=eth1 skbaddr=f3ef0900 len=84
sshd-6828 [000] 112447.903257: net_dev_queue: dev=eth4 skbaddr=f3fca538 len=226
sshd-6828 [000] 112447.903260: net_dev_xmit: dev=eth4 skbaddr=f3fca538 len=226 rc=0
Signed-off-by: Koki Sanagi <sanagi.koki@jp.fujitsu.com>
---
include/trace/events/net.h | 82 ++++++++++++++++++++++++++++++++++++++++++++
net/core/dev.c | 6 +++
net/core/net-traces.c | 1 +
3 files changed, 89 insertions(+), 0 deletions(-)
diff --git a/include/trace/events/net.h b/include/trace/events/net.h
new file mode 100644
index 0000000..5f247f5
--- /dev/null
+++ b/include/trace/events/net.h
@@ -0,0 +1,82 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM net
+
+#if !defined(_TRACE_NET_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_NET_H
+
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <linux/ip.h>
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(net_dev_xmit,
+
+ TP_PROTO(struct sk_buff *skb,
+ int rc),
+
+ TP_ARGS(skb, rc),
+
+ TP_STRUCT__entry(
+ __field( void *, skbaddr )
+ __field( unsigned int, len )
+ __field( int, rc )
+ __string( name, skb->dev->name )
+ ),
+
+ TP_fast_assign(
+ __entry->skbaddr = skb;
+ __entry->len = skb->len;
+ __entry->rc = rc;
+ __assign_str(name, skb->dev->name);
+ ),
+
+ TP_printk("dev=%s skbaddr=%p len=%u rc=%d",
+ __get_str(name), __entry->skbaddr, __entry->len, __entry->rc)
+);
+
+DECLARE_EVENT_CLASS(net_dev_template,
+
+ TP_PROTO(struct sk_buff *skb),
+
+ TP_ARGS(skb),
+
+ TP_STRUCT__entry(
+ __field( void *, skbaddr )
+ __field( unsigned int, len )
+ __string( name, skb->dev->name )
+ ),
+
+ TP_fast_assign(
+ __entry->skbaddr = skb;
+ __entry->len = skb->len;
+ __assign_str(name, skb->dev->name);
+ ),
+
+ TP_printk("dev=%s skbaddr=%p len=%u",
+ __get_str(name), __entry->skbaddr, __entry->len)
+)
+
+DEFINE_EVENT(net_dev_template, net_dev_queue,
+
+ TP_PROTO(struct sk_buff *skb),
+
+ TP_ARGS(skb)
+);
+
+DEFINE_EVENT(net_dev_template, netif_receive_skb,
+
+ TP_PROTO(struct sk_buff *skb),
+
+ TP_ARGS(skb)
+);
+
+DEFINE_EVENT(net_dev_template, netif_rx,
+
+ TP_PROTO(struct sk_buff *skb),
+
+ TP_ARGS(skb)
+);
+#endif /* _TRACE_NET_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/net/core/dev.c b/net/core/dev.c
index 7cd5237..c9b026a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -128,6 +128,7 @@
#include <linux/jhash.h>
#include <linux/random.h>
#include <trace/events/napi.h>
+#include <trace/events/net.h>
#include <linux/pci.h>
#include "net-sysfs.h"
@@ -1978,6 +1979,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
}
rc = ops->ndo_start_xmit(skb, dev);
+ trace_net_dev_xmit(skb, rc);
if (rc == NETDEV_TX_OK)
txq_trans_update(txq);
return rc;
@@ -1998,6 +2000,7 @@ gso:
skb_dst_drop(nskb);
rc = ops->ndo_start_xmit(nskb, dev);
+ trace_net_dev_xmit(nskb, rc);
if (unlikely(rc != NETDEV_TX_OK)) {
if (rc & ~NETDEV_TX_MASK)
goto out_kfree_gso_skb;
@@ -2186,6 +2189,7 @@ int dev_queue_xmit(struct sk_buff *skb)
#ifdef CONFIG_NET_CLS_ACT
skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS);
#endif
+ trace_net_dev_queue(skb);
if (q->enqueue) {
rc = __dev_xmit_skb(skb, q, dev, txq);
goto out;
@@ -2525,6 +2529,7 @@ int netif_rx(struct sk_buff *skb)
if (netdev_tstamp_prequeue)
net_timestamp_check(skb);
+ trace_netif_rx(skb);
#ifdef CONFIG_RPS
{
struct rps_dev_flow voidflow, *rflow = &voidflow;
@@ -2841,6 +2846,7 @@ static int __netif_receive_skb(struct sk_buff *skb)
if (!netdev_tstamp_prequeue)
net_timestamp_check(skb);
+ trace_netif_receive_skb(skb);
if (vlan_tx_tag_present(skb) && vlan_hwaccel_do_receive(skb))
return NET_RX_SUCCESS;
diff --git a/net/core/net-traces.c b/net/core/net-traces.c
index afa6380..7f1bb2a 100644
--- a/net/core/net-traces.c
+++ b/net/core/net-traces.c
@@ -26,6 +26,7 @@
#define CREATE_TRACE_POINTS
#include <trace/events/skb.h>
+#include <trace/events/net.h>
#include <trace/events/napi.h>
EXPORT_TRACEPOINT_SYMBOL_GPL(kfree_skb);
next prev parent reply other threads:[~2010-08-23 9:44 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-23 9:41 [PATCH v4 0/5] netdev: show a process of packets Koki Sanagi
2010-08-23 9:42 ` [PATCH v4 1/5] irq: add tracepoint to softirq_raise Koki Sanagi
2010-09-03 15:29 ` Frederic Weisbecker
2010-09-03 15:39 ` Steven Rostedt
2010-09-03 15:42 ` Frederic Weisbecker
2010-09-03 15:43 ` Steven Rostedt
2010-09-03 15:50 ` Frederic Weisbecker
2010-09-06 1:46 ` Koki Sanagi
2010-09-08 8:33 ` [tip:perf/core] irq: Add " tip-bot for Lai Jiangshan
2010-09-08 11:25 ` [sparc build bug] " Ingo Molnar
2010-09-08 12:26 ` [PATCH] irq: Fix circular headers dependency Frederic Weisbecker
2010-09-09 19:54 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2010-10-18 9:44 ` [sparc build bug] Re: [tip:perf/core] irq: Add tracepoint to softirq_raise Peter Zijlstra
2010-10-18 10:11 ` Peter Zijlstra
2010-10-18 10:26 ` Heiko Carstens
2010-10-18 10:48 ` Peter Zijlstra
2010-10-19 10:58 ` Koki Sanagi
2010-10-19 11:25 ` Peter Zijlstra
2010-10-19 13:00 ` [PATCH] tracing: Cleanup the convoluted softirq tracepoints Thomas Gleixner
2010-10-19 13:08 ` Peter Zijlstra
2010-10-19 13:22 ` Mathieu Desnoyers
2010-10-19 13:41 ` Thomas Gleixner
2010-10-19 13:54 ` Steven Rostedt
2010-10-19 14:07 ` Thomas Gleixner
2010-10-19 14:28 ` Mathieu Desnoyers
2010-10-19 19:49 ` Thomas Gleixner
2010-10-19 20:55 ` Steven Rostedt
2010-10-19 21:07 ` Thomas Gleixner
2010-10-19 21:23 ` Steven Rostedt
2010-10-19 21:48 ` H. Peter Anvin
2010-10-19 22:23 ` Steven Rostedt
2010-10-19 22:26 ` H. Peter Anvin
2010-10-19 22:27 ` Peter Zijlstra
2010-10-19 23:39 ` H. Peter Anvin
2010-10-19 23:45 ` Steven Rostedt
2010-10-20 0:43 ` Jason Baron
2010-10-19 22:41 ` Mathieu Desnoyers
2010-10-19 22:49 ` H. Peter Anvin
2010-10-19 23:05 ` Steven Rostedt
2010-10-19 23:09 ` H. Peter Anvin
2010-10-20 15:27 ` Jason Baron
2010-10-20 15:41 ` Mathieu Desnoyers
2010-10-25 21:54 ` H. Peter Anvin
2010-10-25 22:01 ` Mathieu Desnoyers
2010-10-25 22:12 ` H. Peter Anvin
2010-10-25 22:19 ` H. Peter Anvin
2010-10-25 22:55 ` Mathieu Desnoyers
2010-10-26 0:39 ` Steven Rostedt
2010-10-26 1:14 ` Mathieu Desnoyers
2010-10-19 22:04 ` Thomas Gleixner
2010-10-19 22:33 ` Steven Rostedt
2010-10-21 16:18 ` Thomas Gleixner
2010-10-21 17:05 ` Steven Rostedt
2010-10-21 19:56 ` Thomas Gleixner
2010-10-25 22:31 ` H. Peter Anvin
2010-10-19 21:45 ` Thomas Gleixner
2010-10-19 22:14 ` Steven Rostedt
2010-10-19 21:16 ` David Daney
2010-10-19 21:32 ` Jason Baron
2010-10-19 21:38 ` David Daney
2010-10-19 21:47 ` Steven Rostedt
2010-10-19 21:28 ` Jason Baron
2010-10-19 21:55 ` Thomas Gleixner
2010-10-19 22:17 ` Thomas Gleixner
2010-10-20 1:36 ` Steven Rostedt
2010-10-20 1:52 ` Jason Baron
2010-10-25 22:32 ` H. Peter Anvin
2010-10-19 22:38 ` Jason Baron
2010-10-19 22:44 ` H. Peter Anvin
2010-10-19 22:56 ` Steven Rostedt
2010-10-19 22:57 ` H. Peter Anvin
2010-10-19 14:46 ` Steven Rostedt
2010-10-19 14:00 ` Mathieu Desnoyers
2010-10-21 14:52 ` [tip:perf/core] " tip-bot for Thomas Gleixner
2010-08-23 9:43 ` [PATCH v4 2/5] napi: convert trace_napi_poll to TRACE_EVENT Koki Sanagi
2010-08-24 3:52 ` David Miller
2010-09-08 8:34 ` [tip:perf/core] napi: Convert " tip-bot for Neil Horman
2010-08-23 9:45 ` Koki Sanagi [this message]
2010-08-24 3:53 ` [PATCH v4 3/5] netdev: add tracepoints to netdev layer David Miller
2010-09-08 8:34 ` [tip:perf/core] netdev: Add " tip-bot for Koki Sanagi
2010-08-23 9:46 ` [PATCH v4 4/5] skb: add tracepoints to freeing skb Koki Sanagi
2010-08-24 3:53 ` David Miller
2010-09-08 8:35 ` [tip:perf/core] skb: Add " tip-bot for Koki Sanagi
2010-08-23 9:47 ` [PATCH v4 5/5] perf:add a script shows a process of packet Koki Sanagi
2010-08-24 3:53 ` David Miller
2010-09-07 16:57 ` Frederic Weisbecker
2010-09-08 8:35 ` [tip:perf/core] perf: Add a script to show packets processing tip-bot for Koki Sanagi
2010-08-30 23:50 ` [PATCH v4 0/5] netdev: show a process of packets Steven Rostedt
2010-09-03 2:10 ` Koki Sanagi
2010-09-03 2:17 ` David Miller
2010-09-03 2:55 ` Koki Sanagi
2010-09-03 4:46 ` Frederic Weisbecker
2010-09-03 5:12 ` Koki Sanagi
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=4C72431E.3000901@jp.fujitsu.com \
--to=sanagi.koki@jp.fujitsu.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=fweisbec@gmail.com \
--cc=izumi.taku@jp.fujitsu.com \
--cc=kaneshige.kenji@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=netdev@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=rostedt@goodmis.org \
--cc=scott.a.mcmillan@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 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.