Skip to content

Commit

Permalink
net_sched: add a tracepoint for qdisc creation
Browse files Browse the repository at this point in the history
With this tracepoint, we could know when qdisc's are created,
especially those default qdisc's.

Sample output:

  tc-736   [001] ...1    56.230107: qdisc_create: dev=ens3 kind=pfifo parent=1:0
  tc-736   [001] ...1    56.230113: qdisc_create: dev=ens3 kind=hfsc parent=ffff:ffff
  tc-738   [001] ...1    56.256816: qdisc_create: dev=ens3 kind=pfifo parent=1:100
  tc-739   [001] ...1    56.267584: qdisc_create: dev=ens3 kind=pfifo parent=1:200
  tc-740   [001] ...1    56.279649: qdisc_create: dev=ens3 kind=fq_codel parent=1:100
  tc-741   [001] ...1    56.289996: qdisc_create: dev=ens3 kind=pfifo_fast parent=1:200
  tc-745   [000] .N.1   111.687483: qdisc_create: dev=ens3 kind=ingress parent=ffff:fff1

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Cong Wang authored and David S. Miller committed May 27, 2020
1 parent a34dac0 commit f5a7833
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
23 changes: 23 additions & 0 deletions include/trace/events/qdisc.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,29 @@ TRACE_EVENT(qdisc_destroy,
TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
);

TRACE_EVENT(qdisc_create,

TP_PROTO(const struct Qdisc_ops *ops, struct net_device *dev, u32 parent),

TP_ARGS(ops, dev, parent),

TP_STRUCT__entry(
__string( dev, dev->name )
__string( kind, ops->id )
__field( u32, parent )
),

TP_fast_assign(
__assign_str(dev, dev->name);
__assign_str(kind, ops->id);
__entry->parent = parent;
),

TP_printk("dev=%s kind=%s parent=%x:%x",
__get_str(dev), __get_str(kind),
TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent))
);

#endif /* _TRACE_QDISC_H */

/* This part must be outside protection */
Expand Down
3 changes: 3 additions & 0 deletions net/sched/sch_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
#include <net/pkt_sched.h>
#include <net/pkt_cls.h>

#include <trace/events/qdisc.h>

/*
Short review.
Expand Down Expand Up @@ -1283,6 +1285,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev,
}

qdisc_hash_add(sch, false);
trace_qdisc_create(ops, dev, parent);

return sch;

Expand Down
4 changes: 3 additions & 1 deletion net/sched/sch_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -896,8 +896,10 @@ struct Qdisc *qdisc_create_dflt(struct netdev_queue *dev_queue,
}
sch->parent = parentid;

if (!ops->init || ops->init(sch, NULL, extack) == 0)
if (!ops->init || ops->init(sch, NULL, extack) == 0) {
trace_qdisc_create(ops, dev_queue->dev, parentid);
return sch;
}

qdisc_put(sch);
return NULL;
Expand Down

0 comments on commit f5a7833

Please sign in to comment.