Hi Ludovic,

I’m usually highly sceptical about any network benchmarks over localhost.  I’d 
suggest you to rerun your benchmarks using two different machines connected 
over a gigabit network.  Please make sure that your server process loads the 
CPU 100%, and ideally you should use several processes for clients.

Yury

> On Feb 14, 2016, at 1:31 PM, Ludovic Gasc <gml...@gmail.com> wrote:
> 
> Hi,
> 
> This is some values I've found during the update attempt of the AsyncIO test 
> suite for FrameworkBenchmarks: 
> https://www.techempower.com/benchmarks/#section=intro
> 
> Long story short: After Python 3.5 update, dependencies update and 
> async/await syntax usage, on my test setup, I loose around 15% of efficiency.
> You can see the difference between old test setup and now: 
> https://github.com/Eyepea/FrameworkBenchmarks/commit/a40c82ed720a53e04ebdafd7db90302ca67b5226
> 
> If somebody has any suggestion to find my mistake or how to find the new 
> bottleneck, be my guest.
> 
> However, even if the absolute values aren't exact, the relative values 
> between each test should give us an idea of the evolution.
> 
> For each test, I've launched 5 times, and I've taken the best one.
> 
> The values on this setup before to change something in the test setup (python 
> 3.4.2, aiohttp 0.16.3, aiopg 0.7.0):
> 
> $ wrk -t8 -c256 -d1m http://127.0.0.1:8080/queries?queries=20
> Running 1m test @ http://127.0.0.1:8080/queries?queries=20
>   8 threads and 256 connections
>   Thread Stats   Avg      Stdev     Max   +/- Stdev
>     Latency   216.97ms  105.14ms   1.14s    75.31%
>     Req/Sec   148.88     17.97   206.00     69.38%
>   71647 requests in 1.00m, 54.98MB read
> Requests/sec:   1194.19
> Transfer/sec:      0.92MB
> 
> Now, I upgrade only Python 3.4 to Python 3.5 (python 3.5.1, aiohttp 0.16.3, 
> aiopg 0.7.0):
> 
> $ wrk -t8 -c256 -d1m http://127.0.0.1:8080/queries?queries=20
> Running 1m test @ http://127.0.0.1:8080/queries?queries=20
>   8 threads and 256 connections
>   Thread Stats   Avg      Stdev     Max   +/- Stdev
>     Latency   237.25ms  118.33ms   1.17s    74.74%
>     Req/Sec   134.77     13.24   171.00     66.98%
>   65051 requests in 1.00m, 49.92MB read
> Requests/sec:   1084.09
> Transfer/sec:    851.93KB
> 
> And now, I update aiohttp and aiopg  (python 3.5.1, aiohttp 0.21.1, aiopg 
> 0.9.2)
> 
> $ wrk -t8 -c256 -d1m http://127.0.0.1:8080/queries?queries=20
> Running 1m test @ http://127.0.0.1:8080/queries?queries=20
>   8 threads and 256 connections
>   Thread Stats   Avg      Stdev     Max   +/- Stdev
>     Latency   254.25ms  181.80ms   1.56s    75.51%
>     Req/Sec   129.43     24.09   204.00     68.37%
>   62122 requests in 1.00m, 46.25MB read
> Requests/sec:   1035.44
> Transfer/sec:    789.32KB
> 
> And now, I use async/await syntax:
> 
> $ wrk -t8 -c256 -d1m http://127.0.0.1:8080/queries?queries=20
> Running 1m test @ http://127.0.0.1:8080/queries?queries=20
>   8 threads and 256 connections
>   Thread Stats   Avg      Stdev     Max   +/- Stdev
>     Latency   259.27ms  121.86ms 842.74ms   70.02%
>     Req/Sec   126.29     17.70   207.00     75.82%
>   60740 requests in 1.00m, 45.22MB read
> Requests/sec:   1014.01
> Transfer/sec:    772.99KB
> 
> To be sure it isn't a problem with my hardware (CPU too hot after a while...) 
> at the end, I've relaunched the first test without any updates:
> 
> $ wrk -t8 -c256 -d1m http://127.0.0.1:8080/queries?queries=20
> Running 1m test @ http://127.0.0.1:8080/queries?queries=20
>   8 threads and 256 connections
>   Thread Stats   Avg      Stdev     Max   +/- Stdev
>     Latency   220.24ms   98.73ms 798.70ms   72.78%
>     Req/Sec   147.85     19.10   215.00     70.30%
>   70967 requests in 1.00m, 54.46MB read
> Requests/sec:   1183.54
> Transfer/sec:      0.91MB
> 
> Thanks for your remarks.
> 
> On Monday, December 28, 2015 at 2:54:06 PM UTC+1, Ludovic Gasc wrote:
> Hi everybody,
> 
> For now, I can't contribute like I want because I'm handling a lot of 
> personal and professional changes.
> 
> However, I continue to keep an eye.
> FrameworkBenchmarks Round 11 results are available:
> https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test=fortune&l=1kw
> 
> If you don't know what is FrameworkBenchmarks: 
> https://www.techempower.com/benchmarks/#section=intro
> 
> No big surprises, AsyncIO+aiohttp continues to have good results, except for 
> plain text, need to dig where is the bottleneck.
> 
> For the next round, I've a small todo list:
> 1. Add tests with MySQL, because MySQL is more optimized by techempower than 
> PostgreSQL setup and all other Python frameworks with better results use 
> MySQL.
> 2. Upgrade aiohttp, because the latest version has several performance 
> improvements: https://github.com/KeepSafe/aiohttp/releases/tag/v0.20.0
> 3. Use Python 3.5 with async/await. Apparently, I could hope some performance 
> improvements.
> 4. If I have the time, take a try with MicroPython.
> 
> If somebody wants to help me or suggests other improvements, be my guest.
> 
> Happy holidays.

Reply via email to