From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ie0-x234.google.com (mail-ie0-x234.google.com [IPv6:2607:f8b0:4001:c03::234]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id EDB5721F22A for ; Mon, 27 Apr 2015 08:30:52 -0700 (PDT) Received: by iedfl3 with SMTP id fl3so145851159ied.1 for ; Mon, 27 Apr 2015 08:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:subject:from:to:cc:date:in-reply-to:references :content-type:mime-version:content-transfer-encoding; bh=wkpAlVSv1TNtqDtzWm6NkrJ+ooZJ8BNG9RErKBjmEmY=; b=ZVqq+I4mGgXtoM1KqoMKgIWTTpgA/ATn+zn8JrH0lZa36fSrbhnuN0bm2FuUtLZOTT mTi7YHrD7LpHrJARnEjKk8spfc4dovQ+P8BePucoR21aq+C8Uxj39GRbi2HQlS3M/Ktr 8i5fCyhsdbaw3e5hz56+hMFtZVeXi46sRwYi0kha+ecRtp+5VZJZm+4jIcgKoCNb4Mxi 6y8qi8saYJr3yKgYdURlq88P11ZIN3HqmkXPlwOr6RSKHr3xCq9Ekk4h57C8KWw7fADP 2tfhn6CzK7s7JVDYj8NIRqZhFKTwCyJ0H7tqdDbIqSchyesdhuC07BiT8wysZSt5EsT1 Dmuw== X-Received: by 10.107.18.170 with SMTP id 42mr15102977ios.38.1430148649948; Mon, 27 Apr 2015 08:30:49 -0700 (PDT) Received: from [172.29.160.213] ([172.29.160.213]) by mx.google.com with ESMTPSA id o2sm5330301igr.9.2015.04.27.08.30.48 (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128/128); Mon, 27 Apr 2015 08:30:49 -0700 (PDT) Message-ID: <1430148648.22254.223.camel@edumazet-glaptop2.roam.corp.google.com> From: Eric Dumazet To: "Bill Ver Steeg (versteb)" Date: Mon, 27 Apr 2015 08:30:48 -0700 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Cc: "bloat@lists.bufferbloat.net" Subject: Re: [Bloat] sch_fq and sk->sk_pacing_rate X-BeenThere: bloat@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: General list for discussing Bufferbloat List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Apr 2015 15:31:26 -0000 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@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat