[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


To: Daniel Manley <dmanley@tucows.com>
Cc: "'ietf-provreg@cafax.se'" <ietf-provreg@cafax.se>
From: Dave Crocker <dcrocker@brandenburg.com>
Date: Thu, 23 Aug 2001 13:09:00 -0700
In-Reply-To: <3B8549C7.6030000@tucows.com>
Sender: owner-ietf-provreg@cafax.se
Subject: Re: Message Pushing and TCP Transport

At 11:21 AM 8/23/2001, Daniel Manley wrote:
>>>... somewhere along the line, a process or thread will have to poll 
>>>something to see if there's anything to do.
>>
>>
>>wrong.
>
>You keep saying that I'm wrong without describing your alternative. That's 
>not very fair, is it?

thought it was obvious.  instead of having the consumer constantly polling 
the queue, the producer just dispatches the consumer, after adding to the 
queue.


>>>Except for queuing when the message can't be delivered taken right away.
>>
>>queuing is an entirely separate bit of mechanism and overhead, with equal 
>>overhead on top of push or pull.
>
>If you're going to push queued messages, then I don't see how it's an 
>entirely separate mechanism.  Yes, with equal overhead, except that 
>pulling is not done by the server, so the load is distributed a little 
>more equally between client and server.

pulling isn't done by the server?  interesting idea.  please explain how 
the client obtains the data without any work beihng done by the server.

I think you meant that pulling is not INITIATED by the server and, of 
course, that is the definitional difference between push and pull.


>>the point that is being missed is polling permits only a subset of the 
>>behaviors and efficiencies that push permits.  Push demonstrates vastly 
>>better scaling properties.
>
>Can you enumerate these behaviours, efficiencies and scaling properties? I 
>see the same messages being passed either way so the argument is over the 
>delivery method.

it has now been explained repeatedly:  constantly polling means that a 
request and a response is sent and received.  Most of the time, the queue 
is empty, so the poll is wasted effort.

A server with a large number of clients, therefore, processes a large 
number of polling requests.  That makes for amount of wasted overhead.


>But that was in a really controlled environment.  Only a handfull of big 
>clients.  Provreg is defining a generic protocol which will have many 
>application groups.  I don't think it would be fair to the smaller players 
>to impose a heavy-duty protocol.

fine.  I agree.  (I hope it is not necessary to note that I have 
substantial appreciation for the issues of getting successful Internet 
protocols designed and adopted.)

Is it fair on the larger players to impose heavy-duty 
inefficiencies?  (Please skip the obvious path of citing some current 
larger players as saying that they do not want push.)


>>The server needs to get the data to the client, no matter what.  You seem 
>>to feel that sending it immediately, rather having to wait an arbitrary 
>>amount of time, somehow incurs onerous overhead.  It doesn't.
>
>We seem to be going in circles here.  I'm saying there are two 
>activities:  generating messages and delivering messages.  Pushing puts 
>these two activities in the server, while polling splits them between the 
>server and the client, respectively.

It does no such thing.  The server is still a full participant in getting 
the data to the client.  What is changed is ONLY the question of how the 
exchange is initiated.


>   With the client pinging anyway (yes, an integral part of my argument), 
> the total overhead is roughly the same, but balanced better between two 
> parties.
>
>>Frankly I can't figure out the processing model that you are describing, 
>>since you seem to view queuing as intimately involved in the i/o model, 
>>although it does not need to be.
>
>Then *please* present an alternative so I can understand your point of 
>view better.
>
>>>What happens if there is a persistent queue for a particular registrar? 
>>>If there are a bunch of old (but not yet expired) transfer notifications 
>>>waiting around and a notification of low balance shows up, which do you 
>>>try to send the transfers first?  Do you implement a prioritized 
>>>queue?  If you do, should we include the message priorities in the 
>>>protocol spec?  Then registrars have to additionally deal with message 
>>>priorities.
>>
>>None of this is relevant to the choice of mechanism that sends the "next" 
>>entry from the queue.
>
>So you're saying that the queuing of a backlog of message must obey the 
>order in which the messages were issued?

I am saying no such thing.  I am saying that the mechanism for sorting the 
queue is independent of the mechanism for initiating transfer of the top of 
the queue to the consumer.

d/

----------
Dave Crocker  <mailto:dcrocker@brandenburg.com>
Brandenburg InternetWorking  <http://www.brandenburg.com>
tel +1.408.246.8253;  fax +1.408.273.6464


Home | Date list | Subject list