Re: [hybi] hum #3: Message

Julian Reschke <julian.reschke@gmx.de> Thu, 05 August 2010 20:33 UTC

Return-Path: <julian.reschke@gmx.de>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 993973A68B2 for <hybi@core3.amsl.com>; Thu, 5 Aug 2010 13:33:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.501
X-Spam-Level:
X-Spam-Status: No, score=-103.501 tagged_above=-999 required=5 tests=[AWL=-0.902, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QX7Rb+nCZ9uJ for <hybi@core3.amsl.com>; Thu, 5 Aug 2010 13:33:32 -0700 (PDT)
Received: from mail.gmx.net (mailout-de.gmx.net [213.165.64.23]) by core3.amsl.com (Postfix) with SMTP id F39DB3A68AF for <hybi@ietf.org>; Thu, 5 Aug 2010 13:33:31 -0700 (PDT)
Received: (qmail invoked by alias); 05 Aug 2010 20:33:58 -0000
Received: from p508FDFA2.dip.t-dialin.net (EHLO [192.168.178.33]) [80.143.223.162] by mail.gmx.net (mp015) with SMTP; 05 Aug 2010 22:33:58 +0200
X-Authenticated: #1915285
X-Provags-ID: V01U2FsdGVkX193IRNmDZZ3SR7iCRv0DqZeoRkIS/7nuoZYJW4qEg Nc/SsYJEXHynX6
Message-ID: <4C5B2029.90403@gmx.de>
Date: Thu, 05 Aug 2010 22:33:45 +0200
From: Julian Reschke <julian.reschke@gmx.de>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.11) Gecko/20100711 Lightning/1.0b1 Thunderbird/3.0.6
MIME-Version: 1.0
To: Maciej Stachowiak <mjs@apple.com>
References: <4C5AE93D.4040803@ericsson.com> <Pine.LNX.4.64.1008051758290.5947@ps20323.dreamhostps.com> <AANLkTik0kbh14s2JZARY2MFh0iNGV7H+B4Px4yG+wX44@mail.gmail.com> <71BCE4BF-D3F6-4F94-BE76-306BDF6A2E67@apple.com> <Pine.LNX.4.64.1008051930160.5947@ps20323.dreamhostps.com> <4C5B1695.6070704@gmx.de> <F8E2F702-9F74-4316-B3B2-D5A731409ABF@apple.com>
In-Reply-To: <F8E2F702-9F74-4316-B3B2-D5A731409ABF@apple.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Y-GMX-Trusted: 0
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] hum #3: Message
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 05 Aug 2010 20:33:33 -0000

On 05.08.2010 22:21, Maciej Stachowiak wrote:
>
> On Aug 5, 2010, at 12:52 PM, Julian Reschke wrote:
>
>> On 05.08.2010 21:31, Ian Hickson wrote:
>>> On Thu, 5 Aug 2010, Maciej Stachowiak wrote:
>>>>
>>>> That being said, I think you're misunderstanding Ian's point. He
>>>> expressed concern about the overhead for small messages to having a
>>>> large fixed length, not the overhead to large messages of a chunked
>>>> encoding.
>>>
>>> I was trying to express both.
>>>
>>> Having to split a 2GB file into a bazilion pieces and write each one out
>>> individually with frame headers, compared to just writing the whole thing
>>> at once, seems inefficient far beyond simply the concern about the
>>> on-the-wire overhead.
>>
>> Hum, where exactly do you see the additional overhead? It's not like you need to split it into inidividual *files* - you just interleave the data with the frame headers while writing to the stream...
>
> Sending a file from disk to the network without processing it in any way is more efficient than cutting it into slices and interleaving with headers. The IP layer is already going to cut it into slices, in a way that almost certainly won't line up with WebSocket-level fragment boundaries.

There's no way to "send a file over the network without processing". You 
need to read it into memory, and then write it to the network. Of course 
adding frame headers *is* overhead, but it's really identical or close 
to the overhead on the wire, nothing more.

> It's also more efficient for the receiver if they know the length up front. That way they can determine whether to allocate a large enough buffer, or just start spooling to persistent storage immediately.

Absolutely. When the length is known (see video streaming and on-the-fly 
compression). Thus, it might be good to be able to announce the eppected 
size upfront.

Best regards, Julian