Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-10 Thread YU, Xiangning
On 7/9/20 11:21 PM, Cong Wang wrote: > On Thu, Jul 9, 2020 at 11:07 PM YU, Xiangning > wrote: >> >> >> On 7/9/20 10:20 PM, Cong Wang wrote: >>> On Thu, Jul 9, 2020 at 10:04 PM Cong Wang wrote: IOW, without these *additional* efforts, it is broken in terms of out-of-order. >>> >>

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-10 Thread YU, Xiangning
On 7/9/20 11:09 PM, Cong Wang wrote: > On Thu, Jul 9, 2020 at 10:49 PM YU, Xiangning > wrote: >> >> Well, we do ask packets from a flow to be classified to a single class, not >> multiple ones. It doesn't have to be socket priority, it could be five tuple >> hash, or even container classid. >

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread Cong Wang
On Thu, Jul 9, 2020 at 11:07 PM YU, Xiangning wrote: > > > On 7/9/20 10:20 PM, Cong Wang wrote: > > On Thu, Jul 9, 2020 at 10:04 PM Cong Wang wrote: > >> IOW, without these *additional* efforts, it is broken in terms of > >> out-of-order. > >> > > > > Take a look at fq_codel, it provides a hash f

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread Cong Wang
On Thu, Jul 9, 2020 at 10:49 PM YU, Xiangning wrote: > > Well, we do ask packets from a flow to be classified to a single class, not > multiple ones. It doesn't have to be socket priority, it could be five tuple > hash, or even container classid. I don't see how it is so in your code, without s

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread YU, Xiangning
On 7/9/20 10:20 PM, Cong Wang wrote: > On Thu, Jul 9, 2020 at 10:04 PM Cong Wang wrote: >> IOW, without these *additional* efforts, it is broken in terms of >> out-of-order. >> > > Take a look at fq_codel, it provides a hash function for flow classification, > fq_codel_hash(), as default, thus

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread YU, Xiangning
On 7/9/20 10:04 PM, Cong Wang wrote: > On Wed, Jul 8, 2020 at 2:07 PM YU, Xiangning > wrote: >> >> >> >> On 7/8/20 1:24 PM, Cong Wang wrote: >>> On Tue, Jul 7, 2020 at 2:24 PM YU, Xiangning >>> wrote: The key is to avoid classifying packets from a same flow into different class

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread Cong Wang
On Thu, Jul 9, 2020 at 10:04 PM Cong Wang wrote: > IOW, without these *additional* efforts, it is broken in terms of > out-of-order. > Take a look at fq_codel, it provides a hash function for flow classification, fq_codel_hash(), as default, thus its default configuration does not have such issue

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-09 Thread Cong Wang
On Wed, Jul 8, 2020 at 2:07 PM YU, Xiangning wrote: > > > > On 7/8/20 1:24 PM, Cong Wang wrote: > > On Tue, Jul 7, 2020 at 2:24 PM YU, Xiangning > > wrote: > >> > >> The key is to avoid classifying packets from a same flow into different > >> classes. So we use socket priority to classify packet

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-08 Thread YU, Xiangning
On 7/8/20 1:24 PM, Cong Wang wrote: > On Tue, Jul 7, 2020 at 2:24 PM YU, Xiangning > wrote: >> >> The key is to avoid classifying packets from a same flow into different >> classes. So we use socket priority to classify packets. It's always going to >> be correctly classified. >> >> Not sure

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-08 Thread Cong Wang
On Tue, Jul 7, 2020 at 2:24 PM YU, Xiangning wrote: > > The key is to avoid classifying packets from a same flow into different > classes. So we use socket priority to classify packets. It's always going to > be correctly classified. > > Not sure what do you mean by default configuration. But we

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-07 Thread YU, Xiangning
On 7/7/20 1:06 PM, Cong Wang wrote: > On Mon, Jul 6, 2020 at 1:34 PM YU, Xiangning > wrote: >> >> >> >> On 7/6/20 1:10 PM, Cong Wang wrote: >>> On Mon, Jul 6, 2020 at 11:11 AM YU, Xiangning >>> wrote: +static int ltb_enqueue(struct sk_buff *skb, struct Qdisc *sch, spinlock_t *root_l

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-07 Thread Cong Wang
On Mon, Jul 6, 2020 at 1:34 PM YU, Xiangning wrote: > > > > On 7/6/20 1:10 PM, Cong Wang wrote: > > On Mon, Jul 6, 2020 at 11:11 AM YU, Xiangning > > wrote: > >> +static int ltb_enqueue(struct sk_buff *skb, struct Qdisc *sch, spinlock_t > >> *root_lock, > >> + struct sk_buff

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-07 Thread kernel test robot
Hi Xiangning", Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/YU-Xiangning/Lockless-Token-Bucket-LTB-Qdisc/20200707-020918 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread YU, Xiangning
On 7/6/20 1:29 PM, David Miller wrote: > From: "YU, Xiangning" > Date: Tue, 07 Jul 2020 02:08:13 +0800 > >> Lockless Token Bucket (LTB) is a qdisc implementation that controls the >> use of outbound bandwidth on a shared link. With the help of lockless >> qdisc, and by decoupling rate limiting

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread YU, Xiangning
On 7/6/20 1:10 PM, Cong Wang wrote: > On Mon, Jul 6, 2020 at 11:11 AM YU, Xiangning > wrote: >> +static int ltb_enqueue(struct sk_buff *skb, struct Qdisc *sch, spinlock_t >> *root_lock, >> + struct sk_buff **to_free) >> +{ >> + struct ltb_sched *ltb = qdisc_priv(sch)

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread David Miller
From: "YU, Xiangning" Date: Tue, 07 Jul 2020 02:08:13 +0800 > Lockless Token Bucket (LTB) is a qdisc implementation that controls the > use of outbound bandwidth on a shared link. With the help of lockless > qdisc, and by decoupling rate limiting and bandwidth sharing, LTB is > designed to scale

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread Cong Wang
On Mon, Jul 6, 2020 at 11:11 AM YU, Xiangning wrote: > +static int ltb_enqueue(struct sk_buff *skb, struct Qdisc *sch, spinlock_t > *root_lock, > + struct sk_buff **to_free) > +{ > + struct ltb_sched *ltb = qdisc_priv(sch); > + struct ltb_pcpu_sched *pcpu_q; > +

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread YU, Xiangning
On 7/6/20 11:37 AM, Stephen Hemminger wrote: > On Tue, 07 Jul 2020 02:08:13 +0800 > "YU, Xiangning" wrote: > >> +static inline int ltb_drain(struct ltb_class *cl) >> +{ >> +typeof(&cl->drain_queue) queue; >> +struct sk_buff *skb; >> +int npkts, bytes; >> +unsigned long now = NO

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread Stephen Hemminger
On Tue, 07 Jul 2020 02:08:13 +0800 "YU, Xiangning" wrote: > +static inline int ltb_drain(struct ltb_class *cl) > +{ > + typeof(&cl->drain_queue) queue; > + struct sk_buff *skb; > + int npkts, bytes; > + unsigned long now = NOW(); > + int cpu; > + struct ltb_sched *ltb = qd

Re: [PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread Stephen Hemminger
On Tue, 07 Jul 2020 02:08:13 +0800 "YU, Xiangning" wrote: > +static inline s64 get_linkspeed(struct net_device *dev) This is not performance sensitive and should not be marked inline. > +{ > + struct ethtool_link_ksettings ecmd; > + > + ASSERT_RTNL(); > + if (netif_running(dev) &&

[PATCH net-next 2/2] net: sched: Lockless Token Bucket (LTB) Qdisc

2020-07-06 Thread YU, Xiangning
Lockless Token Bucket (LTB) is a qdisc implementation that controls the use of outbound bandwidth on a shared link. With the help of lockless qdisc, and by decoupling rate limiting and bandwidth sharing, LTB is designed to scale in the cloud data centers. Signed-off-by: Xiangning Yu --- include/