[PD-dev] about [tcpserver] (mrpeach and iemnet)
Hans-Christoph Steiner
hans at at.or.at
Mon Dec 13 17:43:31 CET 2010
On Dec 13, 2010, at 10:19 AM, Roman Haefeli wrote:
> On Fri, 2010-12-10 at 10:54 -0500, Hans-Christoph Steiner wrote:
>> On Dec 10, 2010, at 5:12 AM, IOhannes m zmölnig wrote:
>>> On 12/09/2010 10:28 PM, Roman Haefeli wrote:
>>>>
>>>> @ IOhannes
>>>> Though I like this 'stable'/reliable behaviour of iemnet's
>>>> [tcpserver],
>>>> I wonder what happens, if it keeps sending data to the unreachable
>>>> client. Will it just go on and buffer everything until the whole
>>>> RAM of
>>>> the computer is consumed? If so, wouldn't it be more wise to just
>>>> disconnect that client at some point in order to avoid the box
>>>> running
>>>> out of memory?
>>>
>>> you can query the fillstate of the buffer from within the patch and
>>> act
>>> upon that: if you prefer to disconnect after 300MB (because of the
>>> 2.5GB
>>> memory you have, 2GB are only swap), or if you rather go and crash
>>> or
>>> whatever...it's up to you.
>
> Great! That's even better than to disconnect clients at some arbitrary
> buffer size.
>
>> A 300 MB network buffer! That sounds scary.
>
> It's not really a network buffer. If I understand correctly, it's the
> RAM used by the Pd process that grows, when this buffer is filled. I
> guess, there is nothing to be really scared about.
>
> Anyway, there is no 'real' alternative to buffering data. When a
> certain
> client is not totally responsive, you either have to make the server
> blocking ([netsend]/[maxlib/netserver]), or you decide to discard data
> that cannot be delivered ([mrpeach/tcpserver]), or you buffer the data
> ([iemnet/tcpserver]). The last option is definitely the best, in my
> opinion.
>
> Doing "networking with Pd" is special in that you use a real-time
> oriented framework (Pd) together with a 'time-agnostic' one. TCP only
> cares about _what_ is delivered, but not _when_. Accordingly, special
> measures are necessary to join both worlds in a reliable way.
>
> Roman
I've never heard of an app do so much network buffering. At some
point, that data needs to be processed, not just buffered. If you end
up having a giant buffer, chances are there is a problem that needs to
be dealt with. Might as well deal with it after a couple of megs are
filled rather than just some
From what I've seen, most network buffering is done with a ring
buffer, so a fixed size. That's my two bits...
.hc
----------------------------------------------------------------------------
Using ReBirth is like trying to play an 808 with a long stick. -
David Zicarelli
More information about the Pd-dev
mailing list