Hi Malith,

I'll analyze results with different number of threads.

The "Error" is related to "Score". What you have thought is correct. It's
shows the variability of the throughput. I don't know how the error is
calculated, but I'll check how that is calculated.

In JMH, we can have warm-up iterations and measurement iterations. We can
also specify how many forks we need. In the benchmark results I have
specified, 3 forks, 5 warm-up iterations and 10 measurement iterations. The
results for warm-up iterations are ignored. That's why you see 30 as the
count ("Cnt"). i.e. 3 forks x 10 measurement iterations.

We can run this benchmark in "SampleTime/sample" mode and then we can get
latency results.

I'm working on getting more results now. I'll share when it's ready.

Thanks!

Best Regards,

On Fri, Nov 11, 2016 at 9:16 PM, Malith Jayasinghe <[email protected]> wrote:

> Hi Isuru,
>
> Interesting results and findings and it would be interesting to see how
> these values vary under different conditions (e.g. number of threads). I
> notice that the error is quite high for Stormpot Blaze Pool (which has
> the highest throughput) . Any thoughts on how to interpret the "error"
> here ? (for example, does it reflect the variability of the throughput).
> When we bench mark the latency we want to see the min, max and latency
> percentiles etc. Is there a way to get this using JMH?
>
> On Fri, Nov 11, 2016 at 7:43 PM, Sanjeewa Malalgoda <[email protected]>
> wrote:
>
>> Thanks for bring this up isuru. Stack object pool is critical component
>> for API Manager.
>> We are using it to do two most critical operations (key validation and
>> throttle data process and publish) in our gateway. Also we are using it for
>> both blocking and non blocking operations. So improving this component will
>> surely help us. Please keep us update with your findings. When we implement
>> key validation for next version of API Manager we can add this improvement.
>>
>> Thanks,
>> sanjeewa.
>>
>> On Fri, Nov 11, 2016 at 3:55 PM, Isuru Perera <[email protected]> wrote:
>>
>>> Hi
>>>
>>> I wrote $subject using JMH and I committed the code to my GitHub repo
>>> [1].
>>>
>>> Currently API Manager uses a Stack Object Pool for key validation
>>> clients and we noticed that there are lot contentions when trying to use
>>> the pool. Therefore we thought of writing a benchmark to compare the
>>> performance with other Object Pool implementations.
>>>
>>> Following are the results after running the benchmark with 100 threads.
>>> The command I used is "java -jar target/objectpools-0.0.1-SNAPSHOT.jar
>>> -t 100 -f 3 -wi 5 -i 10"
>>>
>>> # Run complete. Total time: 00:12:28
>>>
>>> Benchmark                                               (poolSize)
>>> Mode  Cnt          Score          Error  Units
>>> CommonsPool2GenericObjectPoolBenchmark.useObject               100
>>> thrpt   30    2470759.779 ±   204309.885  ops/s
>>> CommonsPool2SoftReferenceObjectPoolBenchmark.useObject         100
>>> thrpt   30    1305244.745 ±    57823.313  ops/s
>>> CommonsPoolGenericObjectPoolBenchmark.useObject                100
>>> thrpt   30    2277105.922 ±    40957.282  ops/s
>>> CommonsPoolSoftReferenceObjectPoolBenchmark.useObject          100
>>> thrpt   30   11163239.940 ±   449147.426  ops/s
>>> FastObjectPoolBenchmark.useObject                              100
>>> thrpt   30   30164548.113 ±   984247.958  ops/s
>>> FuriousObjectPoolBenchmark.useObject                           100
>>> thrpt   30   14279182.642 ±   115644.976  ops/s
>>> StackObjectPoolBenchmark.useObject                             100
>>> thrpt   30    5464597.797 ±   135726.389  ops/s
>>> StormpotBlazePoolBenchmark.useObject                           100
>>> thrpt   30   77752385.827 ±  3015457.000  ops/s
>>> StormpotQueuePoolBenchmark.useObject                           100
>>> thrpt   30    7670529.272 ±   283981.943  ops/s
>>> TestObjectBenchmark.expensiveObjectCreate                      N/A
>>> thrpt   30     101870.001 ±     2872.885  ops/s
>>> TestObjectBenchmark.simpleObjectCreate                         N/A
>>> thrpt   30  917400188.941 ± 20593977.714  ops/s
>>> ViburObjectPoolBenchmark.useObject                             100
>>> thrpt   30    5924114.964 ±   281625.445  ops/s
>>>
>>>
>>> For this benchmark, Stormpot Blaze Pool [2] has the highest throughput
>>> and it performs 14 times better than the Stack Object Pool, which is used
>>> in API Manager.
>>>
>>> Stormpot is also Apache licensed.
>>>
>>> When I was writing the benchmarks, I found out that Stormpot author also
>>> has written similar benchmarks [3]. But I continued with my project and
>>> benchmark code has more implementations. I also use latest versions of all
>>> object pool implementations.
>>>
>>> I'm writing a blog about this and planning to get results for different
>>> scenarios. I need to analyze latency results as well. I'll share those
>>> results in this mail thread.
>>>
>>> Thanks!
>>>
>>> Best Regards,
>>>
>>> [1] https://github.com/chrishantha/microbenchmarks/tree/master/o
>>> bjectpools
>>> [2] https://github.com/chrisvest/stormpot
>>> [3] https://github.com/chrisvest/object-pool-benchmarks
>>>
>>> --
>>> Isuru Perera
>>> Associate Technical Lead | WSO2, Inc. | http://wso2.com/
>>> Lean . Enterprise . Middleware
>>>
>>> about.me/chrishantha
>>> Contact: +IsuruPereraWSO2
>>> <https://www.google.com/+IsuruPereraWSO2/about>
>>>
>>
>>
>>
>> --
>>
>> *Sanjeewa Malalgoda*
>> WSO2 Inc.
>> Mobile : +94713068779
>>
>> <http://sanjeewamalalgoda.blogspot.com/>blog
>> :http://sanjeewamalalgoda.blogspot.com/
>> <http://sanjeewamalalgoda.blogspot.com/>
>>
>>
>>
>> _______________________________________________
>> Architecture mailing list
>> [email protected]
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>>
>
>
> --
> Malith Jayasinghe
>
> WSO2, Inc. (http://wso2.com)
> Email   : [email protected]
> Mobile : 0770704040
> Lean . Enterprise . Middleware
>



-- 
Isuru Perera
Associate Technical Lead | WSO2, Inc. | http://wso2.com/
Lean . Enterprise . Middleware

about.me/chrishantha
Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to