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 > [email protected] > https://lists.bufferbloat.net/listinfo/bloat _______________________________________________ Bloat mailing list [email protected] https://lists.bufferbloat.net/listinfo/bloat
