Vadim Gritsenko wrote:
> A little bit on another (but connected) topic...
> 
> 
>>From: Berin Loritsch [mailto:[EMAIL PROTECTED]]
>>
>>I have been performing some performance analysis of the Avalon 
>>Excalibur code, and I discovered
>>some serious points of thread contention.  In a web environment,
>>there can be as many as 150
>>threads (or more) if the web server uses simple thread per 
>>connection technology
>>(most common aproach for Java based servers like Tomcat). 
>>I expanded the Profile tests to work
>>using 100 threads.  The default pooling implementation has 
>>some serious slowdown due to thread contention.
>>
> 
> <snip summary="Avalon enhancements"/>
>  
> 
>>In the interim, I would suggest limiting the number of threads that
>>
> your
> 
>>Servlet container will
>>allow to be used on Cocoon to around 40--but when the core is made
>>
> better, we
> 
>>won't need to have those limitations.
>>
> 
> I see one weak link in this: After you spend lots of time eliminating
> synchronization bottlenecks (which is good!!!), you will get into
> another issue: thread switching is actually done by the operating
> system, and increasing number of threads will result in larger
> performance penalties caused by thread switching in the operating
> system. Next level will be the context switch in the CPU hardware which
> is costly operation.
> 
> Better (IMHO) thing to do is to switch to the asynchronous I/O API and
> to use limited number of worker threads, which should give better
> performance then increasing number of threads. Am I correct here?


Absoposolutely!

However, as of right now, there is no Servlet Container that affords this.

I have tested the new pooled objects with 100 threads, and seen some big
improvements.  Attached is the log dumps from the profile tests.  You can
see the performance increases you can look forward to with just the pools.



-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin
Buildfile: build.xml

test-subset-check:

check-environment:

check-datasource:

setup-properties:

filter-jdbc:

nofilter-jdbc:

prepare-jdbc:

prepare:

compile:

compile-tests:
     [copy] Copying 2 files to C:\projects\jakarta-avalon-excalibur\build\testsrc
    [javac] Compiling 2 source files to 
C:\projects\jakarta-avalon-excalibur\build\testclasses

test-subset:
    [junit] Running 
org.apache.avalon.excalibur.pool.test.MultiThreadedPoolComparisonProfile
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max10_Gets10_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 541ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 901ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 440ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.6 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.22 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 2.04 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 301ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 
1312ms. to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 430ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.22 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.7 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 3.05 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 711ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 640ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 411ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 1.11 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.72 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.55 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 671ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 
3314ms. to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 1452ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.2 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.46 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 2.28 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 13940ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 701ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 541ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 19.88 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 25.76 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.29 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 12348ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 
15432ms. to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 8142ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.8 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.51 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.89 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 450ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 671ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 401ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 0.67 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.12 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.67 X as fast 
as HardResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 681ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 651ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 400ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 1.04 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.7 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.62 X as fast 
as HardResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 10485ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 681ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 451ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 15.39 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 23.24 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.5 X as fast 
as HardResourceLimitingPool.
    [junit] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 88.287 sec
    [junit] Running org.apache.avalon.excalibur.pool.test.PoolProfile
    [junit] INFO    10136   [test    ] (): SMALL Sized Objects
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 9203ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 9353ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 9193ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 9143ms 
    [junit] INFO    10136   [test    ] (): MEDIUM Sized Objects
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 8582ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 8732ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 8302ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 8121ms 
    [junit] INFO    10136   [test    ] (): LARGE Sized Objects
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 8743ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 8894ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 5489ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 3606ms 
    [junit] INFO    10136   [test    ] (): SMALL Sized Objects with thread safe pools
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4817ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4766ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 4286ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 4265ms 
    [junit] INFO    10136   [test    ] (): MEDIUM Sized Objects with thread safe pools
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4676ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4776ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 4336ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 4185ms 
    [junit] INFO    10136   [test    ] (): LARGE Sized Objects with thread safe pools
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4896ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 100% hits: 4826ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 60% hits: 4356ms 
    [junit] INFO    10136   [test    ] (): Time Saved for 50% hits: 4315ms 
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 132.07 sec
    [junit] Running 
org.apache.avalon.excalibur.pool.test.SingleThreadedPoolComparisonProfile
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets10_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 150ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 30ms. to use 
50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 80ms. to 
use 50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 5.0 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.87 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.37 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets20_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 120ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 81ms. to use 
50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 110ms. to 
use 50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 1.48 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.09 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.73 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets10_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 200ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 20ms. to use 
50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 50ms. to 
use 50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 10.0 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 4.0 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.4 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets20_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 190ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 130ms. to 
use 50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 120ms. to 
use 50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 1.46 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.58 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.08 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets10_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 1252ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 20ms. to use 
50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 41ms. to 
use 50000 objects, 10 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 62.6 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 30.53 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.48 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SingleThreadedPool_And_ResourceLimitingPool_Max10_Gets20_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 1372ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SingleThreadedPool time = 650ms. to 
use 50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 731ms. to 
use 50000 objects, 20 at a time.
    [junit] INFO    10136   [test    ] ():   => SingleThreadedPool is 2.11 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.87 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.88 X as fast 
as SingleThreadedPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max10_Gets10_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 100ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 311ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.32 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 2.5 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 7.77 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 100ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 361ms. 
to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 81ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.27 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.23 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 4.45 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 180ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 270ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.66 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 4.5 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 6.75 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 191ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 461ms. 
to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 130ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 0.41 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.46 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 3.54 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 5087ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 270ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 18.84 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 127.17 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 6.75 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
SoftResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets200_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 7201ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      SoftResourceLimitingPool time = 
5218ms. to use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 4667ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => SoftResourceLimitingPool is 1.38 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.54 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.11 X as fast 
as SoftResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 90ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 250ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 0.36 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 2.25 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 6.25 X as fast 
as HardResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 170ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 261ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 0.65 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 4.25 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 6.52 X as fast 
as HardResourceLimitingPool.
    [junit] INFO    10136   [test    ] (): Test Case: 
HardResourceLimitingPool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 4356ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      HardResourceLimitingPool time = 250ms. 
to use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => HardResourceLimitingPool is 17.42 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 108.9 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 6.25 X as fast 
as HardResourceLimitingPool.
    [junit] Tests run: 15, Failures: 0, Errors: 0, Time elapsed: 51.645 sec

BUILD SUCCESSFUL

Total time: 4 minutes 52 seconds
Buildfile: build.xml

test-subset-check:

check-environment:

check-datasource:

setup-properties:

filter-jdbc:

nofilter-jdbc:

prepare-jdbc:

prepare:

compile:

compile-tests:

test-subset:
    [junit] Running 
org.apache.avalon.excalibur.mpool.test.MultiThreadedPoolComparisonProfile
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 510ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 330ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 461ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 1.54 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.1 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.71 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 691ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 290ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 380ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 2.38 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.81 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.76 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 11857ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 420ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 460ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 28.23 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 25.77 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.91 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 701ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 330ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 370ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 2.12 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 1.89 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 0.89 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 1031ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 270ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 270ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 3.81 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 3.81 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 1.0 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 12538ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 250ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 270ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 50.15 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 46.43 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 0.92 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 590ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 721ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 450ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 0.81 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.31 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.6 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 330ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 150ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 500ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 2.2 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.66 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.3 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max10_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 1122ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 281ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 641ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 3.99 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.75 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.43 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 661ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 151ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 841ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 4.37 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.78 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.17 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 11897ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 420ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 521ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 28.32 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 22.83 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.8 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 15261ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 170ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 9894ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 89.77 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.54 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.01 X as fast 
as VariableSizePool.
    [junit] Tests run: 12, Failures: 0, Errors: 0, Time elapsed: 91.211 sec
    [junit] Running 
org.apache.avalon.excalibur.mpool.test.SingleThreadedPoolComparisonProfile
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 130ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 20ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 80ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 6.5 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.62 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.25 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 210ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 21.0 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 5.25 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.25 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 4777ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 20ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 238.85 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 119.42 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.5 X as fast 
as FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 90ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 30ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 9.0 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 3.0 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 0.33 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 200ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 20.0 X as fast as not 
pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 20.0 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 1.0 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
FixedSizePool_And_VariableSizePool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 4617ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      FixedSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => FixedSizePool is 461.7 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 461.7 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 1.0 X as fast as 
FixedSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets100_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 90ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 30ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 9.0 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 3.0 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.33 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_SmallPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 101ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 20ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 80ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 5.05 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.26 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.25 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max10_Gets100_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 501ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 40ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 50.1 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 12.52 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.25 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_MediumPoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 231ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 20ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 601ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 11.55 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.38 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.03 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets100_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 4917ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 10ms. to use 
50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 70ms. to 
use 50000 objects, 100 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 491.7 X as fast as 
not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 70.24 X as 
fast as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.14 X as fast 
as VariableSizePool.
    [junit] INFO    10136   [test    ] (): Test Case: 
VariableSizePool_And_ResourceLimitingPool_Max100_Gets200_LargePoolables
    [junit] INFO    10136   [test    ] ():      Unpooled time = 7791ms. to use 50000 
objects.
    [junit] INFO    10136   [test    ] ():      VariableSizePool time = 40ms. to use 
50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():      ResourceLimitingPool time = 4817ms. to 
use 50000 objects, 200 at a time.
    [junit] INFO    10136   [test    ] ():   => VariableSizePool is 194.77 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 1.61 X as fast 
as not pooling.
    [junit] INFO    10136   [test    ] ():   => ResourceLimitingPool is 0.0 X as fast 
as VariableSizePool.
    [junit] Tests run: 12, Failures: 0, Errors: 0, Time elapsed: 42.662 sec

BUILD SUCCESSFUL

Total time: 2 minutes 19 seconds

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to