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

2020-08-04 Thread YU, Xiangning
Hi Maxim, So glad that you find this useful! Please stay tuned, I will take a look at this problem. Something might have gone wrong while merging the code with net-next. Thanks, - Xiangning On 8/4/20 3:37 AM, Maxim Mikityanskiy wrote: > On 2020-07-08 19:38, YU, Xiangning wrote: >>

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* effort

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 >&

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: >>>> >>>>

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

2020-07-09 Thread YU, Xiangning
On 7/9/20 3:22 PM, Eric Dumazet wrote: > > > On 7/9/20 11:20 AM, YU, Xiangning wrote: >> >> >> On 7/9/20 10:15 AM, Eric Dumazet wrote: >>> >>> Well, at Google we no longer have this issue. >>> >>> We adopted EDT model, so that

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

2020-07-09 Thread YU, Xiangning
On 7/9/20 10:15 AM, Eric Dumazet wrote: > > > On 7/9/20 10:04 AM, YU, Xiangning wrote: >> >> >> On 7/8/20 6:24 PM, Eric Dumazet wrote: >>> >>> >>> On 7/8/20 5:58 PM, YU, Xiangning wrote: >>>> >>>> >>>>

Re: [PATCH iproute2-next v2] iproute2 Support lockless token bucket (ltb)

2020-07-09 Thread YU, Xiangning
On 7/8/20 11:33 PM, Stephen Hemminger wrote: > On Thu, 09 Jul 2020 00:38:27 +0800 > "YU, Xiangning" wrote: > >> +static int ltb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, >> + struct nlmsghdr *n, const char *dev) >

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

2020-07-09 Thread YU, Xiangning
On 7/8/20 6:24 PM, Eric Dumazet wrote: > > > On 7/8/20 5:58 PM, YU, Xiangning wrote: >> >> >> On 7/8/20 5:08 PM, Eric Dumazet wrote: >>> >>> >>> On 7/8/20 4:59 PM, YU, Xiangning wrote: >>> >>>> >>>> Yes

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

2020-07-08 Thread YU, Xiangning
On 7/8/20 5:08 PM, Eric Dumazet wrote: > > > On 7/8/20 4:59 PM, YU, Xiangning wrote: > >> >> Yes, we are touching a cache line here to make sure aggregation tasklet is >> scheduled immediately. In most cases it is a call to test_and_set_bit(). > >

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

2020-07-08 Thread YU, Xiangning
On 7/8/20 3:29 PM, Eric Dumazet wrote: > > > On 7/8/20 9:38 AM, YU, Xiangning wrote: >> 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

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

2020-07-08 Thread YU, Xiangning
On 7/8/20 2:37 PM, Eric Dumazet wrote: > > > On 7/8/20 9:38 AM, YU, Xiangning wrote: >> 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 lim

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

2020-07-08 Thread YU, Xiangning
On 7/8/20 2:14 PM, Eric Dumazet wrote: > > > On 7/8/20 9:38 AM, YU, Xiangning wrote: >> 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

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 c

Re: [PATCH net-next v2 1/2] irq_work: Export symbol "irq_work_queue_on"

2020-07-08 Thread YU, Xiangning
On 7/8/20 12:37 PM, David Miller wrote: > From: "YU, Xiangning" > Date: Thu, 09 Jul 2020 00:38:16 +0800 > >> @@ -111,7 +111,7 @@ bool irq_work_queue_on(struct irq_work *work, int cpu) >> return true; >> #endif /* CONFIG_SMP */ >> } &

Re: [PATCH net-next v2 1/2] irq_work: Export symbol "irq_work_queue_on"

2020-07-08 Thread YU, Xiangning
On 7/8/20 1:27 PM, Eric Dumazet wrote: > > > On 7/8/20 12:37 PM, David Miller wrote: >> From: "YU, Xiangning" >> Date: Thu, 09 Jul 2020 00:38:16 +0800 >> >>> @@ -111,7 +111,7 @@ bool irq_work_queue_on(struct irq_work *work, int cpu)

Re: [PATCH net-next v2 1/2] irq_work: Export symbol "irq_work_queue_on"

2020-07-08 Thread YU, Xiangning
On 7/8/20 9:55 AM, Eric Dumazet wrote: > > > On 7/8/20 9:38 AM, YU, Xiangning wrote: >> Unlike other irq APIs, irq_work_queue_on is not exported. It makes sense to >> export it so other modules could use it. >> >> Signed-off-by: Xiangning Yu >> ---

[PATCH iproute2-next v2] iproute2 Support lockless token bucket (ltb)

2020-07-08 Thread YU, Xiangning
Introduce a new tc command parameter "ltb" to allow configuring lockless token bucket qdisc. For example: # tc qdisc add dev eth0 root handle 1: ltb default 10 # tc class add dev eth0 parent 1: classid 1:10 ltb \ rate 3000Mbit ceil 9000Mbit prio 3 Signed-off-by: X

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

2020-07-08 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/

[PATCH net-next v2 0/2] Lockless Token Bucket (LTB) Qdisc

2020-07-08 Thread YU, Xiangning
Both Cong and David have pointed out it's not a good idea to have a per-qdisc kernel thread. In this patch we replaced it with a delayed work. Also applied other code review comments. Changes in v2: - Replace kernel thread with a delayed work. - Check SPEED_UNKNOWN for link speed. -

[PATCH net-next v2 1/2] irq_work: Export symbol "irq_work_queue_on"

2020-07-08 Thread YU, Xiangning
Unlike other irq APIs, irq_work_queue_on is not exported. It makes sense to export it so other modules could use it. Signed-off-by: Xiangning Yu --- kernel/irq_work.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/irq_work.c b/kernel/irq_work.c index eca83965b631..e0e

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 lt

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 &

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) >> +{ >> + st

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; &

Re: [PATCH iproute2-next] iproute2 Support lockless token bucket (LTB)

2020-07-06 Thread YU, Xiangning
On 7/6/20 11:40 AM, Stephen Hemminger wrote: > On Tue, 07 Jul 2020 02:08:21 +0800 > "YU, Xiangning" wrote: > >> +static int ltb_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt) >> +{ >> +struct rtattr *tb[TCA_LTB_MAX + 1]; >> +

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

2020-07-06 Thread YU, Xiangning
Hello netdev, Lockless Token Bucket(LTB) is a high performance traffic control (TC) qdisc kernel module. The idea is to scale bandwidth sharing in data center networks. Such that online latency sensitive applications could be deployed together with big data applications. Many thanks to the lockl

[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/

[PATCH net-next 1/2] irq_work: Export symbol "irq_work_queue_on"

2020-07-06 Thread YU, Xiangning
Unlike other irq APIs, irq_work_queue_on is not exported. It makes sense to export it so other modules could use it. Signed-off-by: Xiangning Yu --- kernel/irq_work.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/irq_work.c b/kernel/irq_work.c index eca8396..e0ed16d

[PATCH iproute2-next] iproute2 Support lockless token bucket (LTB)

2020-07-06 Thread YU, Xiangning
Introduce a new tc command parameter "ltb" to allow configuring lockless token bucket qdisc. For example: # tc qdisc add dev eth0 root handle 1: ltb default 10 # tc class add dev eth0 parent 1: classid 1:10 ltb \ rate 3000Mbit ceil 9000Mbit prio 3 Signed-off-by: X