[Seaside] Final try for Kom/Seaside file upload tuning
philippe.marschall at gmail.com
Tue Aug 5 13:42:17 UTC 2008
2008/8/5 Göran Krampe <goran at krampe.se>:
> Hi all!
> Ok, the little "competition" between me and Janko regarding Swazoo/Aida
> vs Kom/Seaside regarding receiving HTTP file uploads has produced some
> faster code in both codebases - good!
> This post summarizes my last effort, and I really don't know how to
> squeeze more juice out of it now, profiling just shows primitives taking
> all the time and it looks like it behaves "as it should".
> This code was tested in a 3.10.2-7179 image with Seaside installed via
> SM. I also used the very latest VM from squeakvm.org, manually compiled
> on my Xubuntu box.
> I hope Janko will run and post one final test comparing numbers - note
> Janko that SocketStream now starts with a 8kb inBuffer and grows it
> dynamically to a maximum of 8Mb IIRC.
> Note that the Kom/Seaside code uses the base SocketStream included in
> Squeak. This changeset modifies mainly SocketStream. I also tried using
> AsyncFile for doing file writing asynchronously - and it works fine -
> but it gave no visible performance advantage. The main change from last
> changeset is the grow/move behavior of the inBuffer - now it should do
> much less copying in memory.
> Two things still make me itch:
> 1. My 81 Mb test file can be uploaded in 5-10 Mb/sec. Mostly 9-10, but
> also often around 5-6. No idea why! And no, there are only very few full
> gcs going on, so that is not it.
> 2. My 731 Mb test file uploads considerably slower - but it seems to me
> that SocketStream behaves quite in the same way - typically it grows the
> inBuffer dynamically to 8Mb and then it chews the data in 2-4 Mb chunks.
> Can it be that writing at the end of a large file is slower? Are there
> file seeks being done or something?
> If you want to test this yourself, file into Seaside 2.8, use the upload
> file test in Seaside (http://localhost:8080/seaside/tests/alltests) and
> then check Transcript for a line showing file size and Mb/sec.
Could you upgrade the SqueakSource package of Kom?
If there is enough interest I can backport the upload streaming
changes from Seaside 2.9 to Seaside 2.8.
More information about the seaside