[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