Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doing same voter example, It's about 17x slower than java client #22

Closed
hizhao opened this issue Nov 9, 2016 · 2 comments
Closed

doing same voter example, It's about 17x slower than java client #22

hizhao opened this issue Nov 9, 2016 · 2 comments

Comments

@hizhao
Copy link

hizhao commented Nov 9, 2016

why go-client is so slow....
tested java client and go client about voter example, same environment(ubuntu 16.04 & osx 10.12, voltdb 6.7, jdk 1.8, the latest voltdb java client and go client. the results:

#########################voter example go client test############################
examples zhaohui$ ./voter --runtype=sql

Command Line Configuration

{displayinterval:5000000000 duration:120000000000 warmup:5000000000 servers:localhost:21212 contestants:6 maxvotes:2 statsfile: goroutines:40 runtype:sql}

Setup & Initialization

Populating Static Tables

Starting Benchmark

Warming up...

Running benchmark...
5.002304686s Throughput 1949.4/s
10.003635526s Throughput 3279.6/s
15.000100098s Throughput 3158/s
20.003262775s Throughput 3211.8/s
24.999404888s Throughput 3138.4/s
30.00034808s Throughput 3146.6/s
35.004177188s Throughput 3240.4/s
40.000248712s Throughput 2965.2/s
45.004178208s Throughput 3031.4/s
50.002342076s Throughput 3156/s
55.002555168s Throughput 3168.6/s
59.999378568s Throughput 3326.6/s
1m5.002193095s Throughput 2999/s
1m10.00120124s Throughput 3097.8/s
1m14.999783328s Throughput 3070.6/s
1m20.001605045s Throughput 3002/s
1m24.999390105s Throughput 3202/s
1m30.00156567s Throughput 3115.8/s
1m35.000240522s Throughput 3227/s
1m40.000743385s Throughput 3210.2/s
1m44.999342672s Throughput 3178.2/s
1m50.000238648s Throughput 3173.6/s
1m55.001573855s Throughput 2695/s
2m0.002918152s Throughput 2858/s


Voting Results

A total of 368208 votes were received during the benchmark...

  • 337363 Accepted
  • 30845 Rejected (Invalid Contestant)
    
  •     0 Rejected (Maximum Vote Count Reached)
    
  •     0 Failed (Transaction Error)
    

Contestant Name Votes Received
Edwina Burnam 102081
Alana Bregman 79040
Tabatha Gehling 46339
Kelly Clauss 45084
Jessie Alloway 42198
Jessie Eichman 31203

The Winner is: Edwina Burnam


Client Workload Statistics

Generated 368208 votes in 120.041682676 seconds (3067 ops/second)

#########################voter example java client test############################

voter zhaohui$ ./run.sh client
./run.sh: Performing client...

Command Line Configuration

contestants = 6
displayinterval = 5
duration = 120
latencyreport = false
maxvotes = 2
password =
ratelimit = 2147483647
servers = localhost
statsfile =
user =
warmup = 5


Setup & Initialization

Connecting to VoltDB...
Connected to VoltDB node at: localhost.

Populating Static Tables

Nov 09, 2016 11:51:03 AM org.voltcore.logging.VoltUtilLoggingLogger log
WARNING: Strict java memory checking is enabled, don't do release builds or performance runs with this enabled. Invoke "ant clean" and "ant -Djmemcheck=NO_MEMCHECK" to disable.

Starting Benchmark

Warming up...

Running benchmark...
00:00:05 Throughput 48687/s, Aborts/Failures 0/0
00:00:10 Throughput 53143/s, Aborts/Failures 0/0
00:00:15 Throughput 50930/s, Aborts/Failures 0/0
00:00:20 Throughput 52800/s, Aborts/Failures 0/0
00:00:25 Throughput 49812/s, Aborts/Failures 0/0
00:00:30 Throughput 52402/s, Aborts/Failures 0/0
00:00:35 Throughput 55336/s, Aborts/Failures 0/0
00:00:40 Throughput 52393/s, Aborts/Failures 0/0
00:00:45 Throughput 50976/s, Aborts/Failures 0/0
00:00:50 Throughput 52169/s, Aborts/Failures 0/0
00:00:55 Throughput 51425/s, Aborts/Failures 0/0
00:01:00 Throughput 53289/s, Aborts/Failures 0/0
00:01:05 Throughput 52244/s, Aborts/Failures 0/0
00:01:10 Throughput 54070/s, Aborts/Failures 0/0
00:01:15 Throughput 52648/s, Aborts/Failures 0/0
00:01:20 Throughput 51019/s, Aborts/Failures 0/0
00:01:25 Throughput 52274/s, Aborts/Failures 0/0
00:01:30 Throughput 53314/s, Aborts/Failures 0/0
00:01:35 Throughput 53149/s, Aborts/Failures 0/0
00:01:40 Throughput 52974/s, Aborts/Failures 0/0
00:01:45 Throughput 52972/s, Aborts/Failures 0/0
00:01:50 Throughput 53291/s, Aborts/Failures 0/0
00:01:55 Throughput 52341/s, Aborts/Failures 0/0
00:02:00 Throughput 52994/s, Aborts/Failures 0/0


Voting Results

A total of 6,283,814 votes were received during the benchmark...

  • 6,221,136 Accepted
  • 62,674 Rejected (Invalid Contestant)
  •     4 Rejected (Maximum Vote Count Reached)
    
  •     0 Failed (Transaction Error)
    

Contestant Name Votes Received
Edwina Burnam 1,873,699
Jessie Eichman 1,279,885
Alana Bregman 988,108
Kelly Clauss 872,486
Jessie Alloway 869,409
Tabatha Gehling 865,127

The Winner is: Edwina Burnam


Client Workload Statistics

Average throughput: 52,363 txns/sec

as you can see,120 seconds: java -> 6,283,814 votes, go -> 368208 votes, actually tried other examples, results similar.

@ppontryagin
Copy link

👍 got the same issue

@gernest
Copy link
Contributor

gernest commented Jul 2, 2018

So, the voter example is an example . Comparing the results of the two (java/go) is like comparing apples to oranges.

However, the example was slow indeed and also the numbers shown were misleading. A lot of work has been done to address this already.

Some notable changes

  • PR Fix procedure invocation request timeout #53 ensures the numbers are correct for the examples (previously were not correctly taking account for procedure invocation request)

  • also in the above PR, we remove necessity of running many goroutines which was not necessary at all.

Until more work is done to have exact same implementation between the two clients, then comparing them by running the example doesn't make any sense.

For now, please let us treat the voter example in this client as just an example that traces the throughput of the client.

@abradley201 If the explanation address the issue, we can just close this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants