Return-Path: X-Original-To: apmail-httpd-dev-archive@www.apache.org Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 722D118F1F for ; Sat, 28 Nov 2015 21:29:35 +0000 (UTC) Received: (qmail 17665 invoked by uid 500); 28 Nov 2015 21:29:34 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 17603 invoked by uid 500); 28 Nov 2015 21:29:34 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 17593 invoked by uid 99); 28 Nov 2015 21:29:34 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 28 Nov 2015 21:29:34 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 55944180A17 for ; Sat, 28 Nov 2015 21:29:34 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.1 X-Spam-Level: X-Spam-Status: No, score=-0.1 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=qqmail.nl Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id q2p3sjpeh8uO for ; Sat, 28 Nov 2015 21:29:24 +0000 (UTC) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 04D6020230 for ; Sat, 28 Nov 2015 21:29:24 +0000 (UTC) Received: by wmuu63 with SMTP id u63so88357718wmu.0 for ; Sat, 28 Nov 2015 13:29:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qqmail.nl; s=google; h=from:to:references:in-reply-to:subject:date:message-id:mime-version :content-type:content-transfer-encoding:thread-index :content-language; bh=RTvwRaT6yS3o5wu27wdSbOO5Dhmjf5PSPvx/As55NzI=; b=JCk/UxoR5wWHM2J5YmJS4Dm6abhg6wbPoK0B7KgvVbc4dqZoDO5K+iOIXBi/97wPJ1 2Sk2SJr8C60j4pBRHzgQAixtOhU3grwV0Gp5FANl7LyRbCtQggzRSiVtnpM/Q6jOriTL uNtcUvsZ0zW0+Cl3u/SwbK33N4L0wrZtZG6bk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:references:in-reply-to:subject:date :message-id:mime-version:content-type:content-transfer-encoding :thread-index:content-language; bh=RTvwRaT6yS3o5wu27wdSbOO5Dhmjf5PSPvx/As55NzI=; b=lWzGqq28uE1BkJh5oYOOZKv+gzyX8EdwnMijm7+FM/Zsw+5HzToRfJczY753n9BhUc utEEqF5YnY5Se/t1+rmnjJ6rYYwoj5+vpBSil1IewgWdbh8kABQfHheoHjZVf66Ubrap FMSOCTt/GYjW8+sPfJ0FHZHwXNgCm+HN1caNba08ZzrerAEeOyyYfU/MFJ4nTG/ZNJ4y 4ja16eZjjqTPExsD6ni0R//Nnk0a+kEWQkQ1Y3U4VyiB8y37EaBMyibM8EX81BQoLH2Y CjdKvtepvahzmDr+3bKacRKknvTC7Gi1MClRD0lE7VzjJokJKUlG1KDUOk/EsxtxiIFO oZBw== X-Gm-Message-State: ALoCoQkbzGpKrni3ENp23PWO0JIIodc5YocdbY4UQ3R45l5o94VhBjJE1lEsryA978pK6MmmrHKK X-Received: by 10.28.187.4 with SMTP id l4mr18197684wmf.33.1448746157179; Sat, 28 Nov 2015 13:29:17 -0800 (PST) Received: from i72600 ([2001:610:66e:0:52e5:49ff:fee1:96b7]) by smtp.gmail.com with ESMTPSA id z1sm39084483wje.35.2015.11.28.13.29.16 for (version=TLSv1/SSLv3 cipher=OTHER); Sat, 28 Nov 2015 13:29:16 -0800 (PST) From: "Bert Huijben" To: References: <02f401d12912$fcba4130$f62ec390$@qqmail.nl> <030501d12916$cf7e1120$6e7a3360$@qqmail.nl> <56599792.3060402@greenbytes.de> <03a401d129dd$fafdbfe0$f0f93fa0$@qqmail.nl> <03aa01d129e1$2d49d990$87dd8cb0$@qqmail.nl> In-Reply-To: <03aa01d129e1$2d49d990$87dd8cb0$@qqmail.nl> Subject: RE: No H2 Window updates! Date: Sat, 28 Nov 2015 22:29:03 +0100 Message-ID: <040101d12a23$ced65530$6c82ff90$@qqmail.nl> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJt5VCTIFs6KteEjCgZz0PozG8d2QIIvd2DAZcYZYkCyYw91gGJZW1znTjeQnA= Content-Language: nl > -----Original Message----- > From: Bert Huijben [mailto:bert@qqmail.nl] > Sent: zaterdag 28 november 2015 14:32 > To: stefan.eissing@greenbytes.de; dev@httpd.apache.org > Subject: RE: No H2 Window updates! > In case of Subversion's real usage, I want to commit potentially hundreds of > MByte, so a connection level window of more than a few bytes would be > very > welcome.... With HTTP/1 we send out the data as fast as we can and the TCP > windowing handles this from the httpd side... Now the http/2 level > windowing > should handle this. > > > Mod_dav and mod_dav_svn are usually fast readers; just limited by trivial > disk io or xml processing in the common operations, so I don't expect real > problems there. For my commits against the svn-master.apache.org repository my latency/ping time is +- 142 ms. With the current simple algorithm and a maximum window of 64 Kbyte/connection, I can send a theoretical maximum of 64 Kbyte/142 ms per connection to that server... which would be about 450 Kbyte/s. (=1/0.142*65536/1024) That is < 1/30th of the bandwidth I have at my disposal (+- 150 Mbit). But currently I don't even get anywhere near that as my window continues to shrink because some data is missed in accounting even after my simple patch. For httpd we have to think carefully which algorithm we want to implement here. Preferably the algorithm should be better than TCP could, as we know the specifics of the http algorithm better than plain TCP could for HTTP/1,1. TCP does send a lot of window updates though... Almost every packet does. Solving the really hard problems, like this one, is the reason I didn't think the nghttp2 library would really be the solution for serf. It is nice for such a library to provide a head start on the protocol level, but there is no way a standard library can really solve this scheduling problem in a generic way. (If it could do it, we had used that solution for TCP... and never had to resort to designing a HTTP/2 in the first place). See https://en.wikipedia.org/wiki/TCP_window_scale_option for some introduction on how TCP was extended to work above the limit that currently applies to H2. Dynamic window sizing/scaling will have to be implemented at some point, at both the stream and the connection level... This will involve timing, measuring, etc. etc. Things nghttp2 can't do for us right now. And if I'm right this might take continuous optimizing for years to come. When I connect to sites like google I immediately receive a large connection level window, to allow me to post huge blobs without a delay. (Haven't tested their stream level windows behavior yet) In serf I do something similar... and then apply a bit of throttling at the stream level. I would guess some clients have already implemented some of this, so we might be able to learn from their implementations... Clients will see much more incoming data than servers of course :). Bert