[Seaside] Increasing the performances of a Seaside application
Levente Uzonyi
leves at elte.hu
Sun May 29 12:19:21 UTC 2011
On Sun, 29 May 2011, Mariano Martinez Peck wrote:
> On Sun, May 29, 2011 at 4:06 AM, Levente Uzonyi <leves at elte.hu> wrote:
>
>> On Sat, 28 May 2011, Mariano Martinez Peck wrote:
>>
>>
>>>> What are the errors that I must avoid making ?
>>>>>
>>>>
>>>> AFAIK SqueakDBX uses FFI which to my understanding means that it calls
>>>> block the entire VM. That reduces the amount of concurrency a single
>>>> image can handle. It also makes a connection pool more important.
>>>>
>>>>
>>>> Yes, FFI blocks the whole VM while a functions is being called. However,
>>> if
>>> and only if the database client library supports asynchronous queries,
>>> SqueakDBX will work asynchronously. Basically, we do a loop where we ask
>>> the
>>> backend if the query was ready. If it was not, we do a yield (we let other
>>> process of the image to run) and then continue the loop.
>>>
>>
>> FYI: The expression "Processor yield" doesn't let all processes run, just
>> those which have the same priority. So using it in a loop starves all lower
>> priority processes and results in busy waiting.
>>
>>
> Thanks. I was not clear. What we actually do is:
>
> (code = OpenDBX resultTimeout) ifTrue: [ (Delay forMilliseconds:
> (aQuerySettings timeout asMiliseconds)) wait ].
>
> Is that better? Even if it lets just run processes of the same priority,
> this is good anyway because what we want is at least be able to process
> other queries. Probably, those other processes are being done from other
> Process.
It's a bit better. There's no starvation if the timeout is greater than
zero, but it's still a form of busy waiting, and it limits the number of
queries per second per connection to at most 1000 (actually 1000 /
timeout). To compare this with our native implementation - PostgresV3 - I
measured 6k+ queries per second per connection and it's still not
optimized for Cog (#perform: is slow on Cog).
Levente
>
> Thanks
>
> Mariano
>
>
>
>>
>> Levente
>>
>>
>>
>>> http://www.squeakdbx.org/documentation/Asynchronous%20queries
>>>
>>> Eliot implemented a multi-threaded FFI for Cog but so far I am not sure if
>>> it is already working.
>>>
>>> Cheers
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
More information about the seaside
mailing list