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:
>>
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
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
>&
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
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:
>>>>
>>>>
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
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:
>>>>
>>>>
>>>>
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)
>
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
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().
>
>
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
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
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
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
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 */
>> }
&
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)
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
>> ---
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
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/
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.
-
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
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
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
&
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
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;
&
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];
>> +
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
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/
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
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
30 matches
Mail list logo