[Bloat] sch_fq and sk->sk_pacing_rate
Eric Dumazet
eric.dumazet at gmail.com
Mon Apr 27 11:30:48 EDT 2015
Hi Bill
I am confused, because it looks like this is already there in the kernel
Look for SO_MAX_PACING_RATE setsockopt() ?
It works for all sockets, not only TCP ;)
http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=62748f32d501f5d3712a7c372bbb92abc7c62bc7
Instead of doing the test in sch_fq (under potential qdisc lock),
its done in TCP (under socket spinlock, which is more scalable)
On Mon, 2015-04-27 at 14:49 +0000, Bill Ver Steeg (versteb) wrote:
> Bloaters (and particularly Eric)
>
>
>
> I will try to not confuse the list, as this question is about host
> behaviors rather than middlebox behaviors. Having said that……
>
>
>
> I am playing around with some application code that would benefit from
> pacing. The example I have in mind is MPEG-DASH style vide, but any
> type of ABR flow would probably benefit from the scheme I have in
> mind. I have done some work with client based pacing via RWND, but it
> is very clunky.
>
>
>
> I am thinking of having the server tell the kernel the rate at which
> it wants data delivered to the client. (The client would probably tell
> the server via an HTTP pragma, but that is a separate can of worms….)
> So, the HTTP server would tell the kernel that it wants to deliver the
> TCP data at or below a certain max rate. There are currently hooks in
> sch_fq for the TCP layer to set sk_pacing_rate. It seems that I would
> need to add another pacing variable and have the data sent at the min
> of q->flow_max_rate, skb->sk->sk_pacing_rate, and this new
> app_pacing_rate. In other words, the old code
>
>
>
> rate = q->flow_max_rate;
> if (skb->sk)
> rate = min(skb->sk->sk_pacing_rate, rate);
>
>
>
> would become
>
>
>
> rate = q->flow_max_rate;
> if (skb->sk)
> {
> rate = min(skb->sk->sk_pacing_rate, rate);
> if (skb->sk->app_pacing_rate)
> rate = (min(skb->sk->app_pacing_rate, rate);
> }
>
>
>
>
>
> Thoughts?
>
>
>
> Bill VerSteeg
>
>
> _______________________________________________
> Bloat mailing list
> Bloat at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat
More information about the Bloat
mailing list