Upload speeds with Comanche

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Upload speeds with Comanche

Patrick Collison
Hi,

On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it takes Comanche
190 seconds to read a request containing a 5MB file upload. By
comparison, the same request takes Apache 1.3 about 0.3 seconds.

By changing SocketStream>>bufferSize to use a 100kb buffer (instead of
the standard 2kb), I got that down to 8 seconds, but at the cost of
rapidly ballooning memory usage after a few hundred requests.

Has anyone modified a stock Comanche/Smalltalk combination to get
things running a bit faster, or get any suggestions as to how I can
improve things?

Cheers,

Patrick
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Janko Mivšek
Hi Patrick,

Just for comparison, recently I measured Swazoo 2.0 performance on
Squeak and VW and achieved  230KB/sec download on Squeak and 3MB/sec on
VW. For upload I achieved also 3MB/sec on VW, so I expect same 230KB/sec
on Squeak. In all cases a streaming directly to/from a file was used.

To compare with your results: 5MB upload/download would take 22s on
Squeak and 1.6s on VW.

Measurements were done on Linux, 3.2GHz CPU, 2GB ram.

Best regards
JAnko

Patrick Collison wrote:

> Hi,
>
> On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it takes Comanche
> 190 seconds to read a request containing a 5MB file upload. By
> comparison, the same request takes Apache 1.3 about 0.3 seconds.
>
> By changing SocketStream>>bufferSize to use a 100kb buffer (instead of
> the standard 2kb), I got that down to 8 seconds, but at the cost of
> rapidly ballooning memory usage after a few hundred requests.
>
> Has anyone modified a stock Comanche/Smalltalk combination to get
> things running a bit faster, or get any suggestions as to how I can
> improve things?
>
> Cheers,
>
> Patrick
> _______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>

--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

RE: Upload speeds with Comanche

Sebastian Sastre-2
Looks good Janko,

        anybody knows if there is any effort being made in Squeak to make
Seaside work with Swazoo instead of Comanche?

        regards,

Sebastian Sastre

> -----Mensaje original-----
> De: [hidden email]
> [mailto:[hidden email]] En nombre
> de Janko Mivšek
> Enviado el: Viernes, 24 de Agosto de 2007 12:28
> Para: Seaside - general discussion
> Asunto: Re: [Seaside] Upload speeds with Comanche
>
> Hi Patrick,
>
> Just for comparison, recently I measured Swazoo 2.0
> performance on Squeak and VW and achieved  230KB/sec download
> on Squeak and 3MB/sec on VW. For upload I achieved also
> 3MB/sec on VW, so I expect same 230KB/sec on Squeak. In all
> cases a streaming directly to/from a file was used.
>
> To compare with your results: 5MB upload/download would take
> 22s on Squeak and 1.6s on VW.
>
> Measurements were done on Linux, 3.2GHz CPU, 2GB ram.
>
> Best regards
> JAnko
>
> Patrick Collison wrote:
> > Hi,
> >
> > On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it
> takes Comanche
> > 190 seconds to read a request containing a 5MB file upload. By
> > comparison, the same request takes Apache 1.3 about 0.3 seconds.
> >
> > By changing SocketStream>>bufferSize to use a 100kb buffer
> (instead of
> > the standard 2kb), I got that down to 8 seconds, but at the cost of
> > rapidly ballooning memory usage after a few hundred requests.
> >
> > Has anyone modified a stock Comanche/Smalltalk combination to get
> > things running a bit faster, or get any suggestions as to how I can
> > improve things?
> >
> > Cheers,
> >
> > Patrick
> > _______________________________________________
> > Seaside mailing list
> > [hidden email]
> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >
>
> --
> Janko Mivšek
> AIDA/Web
> Smalltalk Web Application Server
> http://www.aidaweb.si
> _______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Janko Mivšek
Hi Sebastian,

Sebastian Sastre wrote:

> Looks good Janko,
>
> anybody knows if there is any effort being made in Squeak to make
> Seaside work with Swazoo instead of Comanche?

And anyone who will stand-up and take that job, can count on all my support!

Best regards
Janko



>> -----Mensaje original-----
>> De: [hidden email]
>> [mailto:[hidden email]] En nombre
>> de Janko Mivšek
>> Enviado el: Viernes, 24 de Agosto de 2007 12:28
>> Para: Seaside - general discussion
>> Asunto: Re: [Seaside] Upload speeds with Comanche
>>
>> Hi Patrick,
>>
>> Just for comparison, recently I measured Swazoo 2.0
>> performance on Squeak and VW and achieved  230KB/sec download
>> on Squeak and 3MB/sec on VW. For upload I achieved also
>> 3MB/sec on VW, so I expect same 230KB/sec on Squeak. In all
>> cases a streaming directly to/from a file was used.
>>
>> To compare with your results: 5MB upload/download would take
>> 22s on Squeak and 1.6s on VW.
>>
>> Measurements were done on Linux, 3.2GHz CPU, 2GB ram.
>>
>> Best regards
>> JAnko
>>
>> Patrick Collison wrote:
>>> Hi,
>>>
>>> On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it
>> takes Comanche
>>> 190 seconds to read a request containing a 5MB file upload. By
>>> comparison, the same request takes Apache 1.3 about 0.3 seconds.
>>>
>>> By changing SocketStream>>bufferSize to use a 100kb buffer
>> (instead of
>>> the standard 2kb), I got that down to 8 seconds, but at the cost of
>>> rapidly ballooning memory usage after a few hundred requests.
>>>
>>> Has anyone modified a stock Comanche/Smalltalk combination to get
>>> things running a bit faster, or get any suggestions as to how I can
>>> improve things?
>>>
>>> Cheers,
>>>
>>> Patrick


--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Colin Putney
In reply to this post by Patrick Collison

On Aug 24, 2007, at 8:05 AM, Patrick Collison wrote:

> Hi,
>
> On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it takes Comanche
> 190 seconds to read a request containing a 5MB file upload. By
> comparison, the same request takes Apache 1.3 about 0.3 seconds.
>
> By changing SocketStream>>bufferSize to use a 100kb buffer (instead of
> the standard 2kb), I got that down to 8 seconds, but at the cost of
> rapidly ballooning memory usage after a few hundred requests.
>
> Has anyone modified a stock Comanche/Smalltalk combination to get
> things running a bit faster, or get any suggestions as to how I can
> improve things?

Göran wrote FastSocketStream, which should give you a significant  
speed boost. I just did a quick test, and I found I could stream an  
11 MB file to disk in 4.6 seconds. Still quite a bit slower than  
Apache, but way faster than SocketStream.

Colin_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Patrick Collison
On 24/08/07, Colin Putney <[hidden email]> wrote:
> Göran wrote FastSocketStream, which should give you a significant
> speed boost. I just did a quick test, and I found I could stream an
> 11 MB file to disk in 4.6 seconds. Still quite a bit slower than
> Apache, but way faster than SocketStream.

Cool, thanks for the heads up -- this works perfectly. By the same
benchmark, I'm down to 1.8 seconds, which is a tolerable 5x slower
than Apache :).

> Colin_______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Lukas Renggli
In reply to this post by Colin Putney
> Göran wrote FastSocketStream, which should give you a significant
> speed boost. I just did a quick test, and I found I could stream an
> 11 MB file to disk in 4.6 seconds. Still quite a bit slower than
> Apache, but way faster than SocketStream.

FYI, FastSocketStream was renamed to SocketStream in Squeak 3.9.

--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Upload speeds with Comanche

Göran Krampe
In reply to this post by Patrick Collison
Hi!

"Patrick Collison" <[hidden email]> wrote:
> Hi,
>
> On a dual-core 2.16Ghz MacBook Pro with 2GB of RAM, it takes Comanche
> 190 seconds to read a request containing a 5MB file upload. By
> comparison, the same request takes Apache 1.3 about 0.3 seconds.
>
> By changing SocketStream>>bufferSize to use a 100kb buffer (instead of
> the standard 2kb), I got that down to 8 seconds, but at the cost of
> rapidly ballooning memory usage after a few hundred requests.

First of all - which version of Squeak is this? As others have replied I
rewrote SocketStream as FastSocketStream a while back and it is from
update 6744 the standard SocketStream implementation in Squeak. So if
you use 3.8.1 it's there. It is only in 3.7 and older images that you
would need to install it from SM and use it explicitly (since the class
then is called FastSocketStream instead of SocketStream).

The trigger for me to rewrite it (way back) was in fact the web upload
mechanism you mention because it relies on #upToAll: IIRC which had both
at least one bug and also an "exponential slowdown" problem. The larger
file the slower it was rapidly approaching infinitely slow. :)

And when I started tearing that code apart I ended up writing the
fastest code I could muster - avoiding copying at all costs, working
directly on buffers, deliberately using methods with fast underlying
primitives instead of falling back on dead slow byte-per-byte handling
etc etc.

regards, Göran
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside