-
-
Notifications
You must be signed in to change notification settings - Fork 272
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
Significant performance drop between v0.103.0 and v0.104.0 #340
Comments
Hello, Thanks for reporting this. That is unfortunate... I'll have to dig deeper... but quickly looking: The only real change in 0.104.0 was in #317 which adds support for sprig package functions... and if we drill down it seems to iterate over a sizable map of functions... and we do this potentially a lot of times... which isn't ideal. |
Hello can you please try v0.107.0-pre.0. From some quick rudimentary microbenchmarks... it seems definitely faster. But I am skeptical it would be the same as v0.103.0, but it would be good to see what kind of difference it makes for your use case and context. There are some other options we can try... |
Hello @bojand . I am missing this version from registry. The docker image update job seems to have used the |
Hmm sorry about this... GitHub actions were not set up properly. There should be 0.107.0-pre.3 tag now. $ docker run ghcr.io/bojand/ghz:0.107.0-pre.3 --version
v0.107.0-pre.3 |
Thanks, now it works.
|
Do you use template functions and / or call data at all in the tests? From quickly looking at the |
I'm also seeing the performance drop issue between 0.103 and 0.109 |
Hello, can you please try v0.111.0. It adds two new options --disable-template-functions and --disable-template-data. If you do not need any template functions use |
@bojand Thanks, it helped. without disabling template flags
with disabling template flags
|
Hello!
First of all, thanks for for this amazing tool. We are using it in https://github.com/LesnyRumcajs/grpc_bench to benchmark gRPC implementations across different programming languages and technologies.
I'm using
ghz
as a docker image and noticed a significant drop in performance between tag v0.103.0 and v0.104.0. Had to do some binary search to pinpoint the exact versions. :)tl;dr
Before v0.104.0, a single
ghz
container constrained to 1 CPU could generate (with a given payload / benchmark scenario) 6628 req/s to a Rust gRPC service (which would make Rust implementation use ~11% CPU). Right nowghz
is able to generate ~5-6x times less load.long story
Using locally https://hub.docker.com/r/obvionaoe/ghz (it also applies to the one that was introduced to this repo recently).
v.0.103.0
v0.104.0
You can look at global results (I believe using the latest docker image from this repo) here: https://github.com/LesnyRumcajs/grpc_bench/wiki/2022-02-18-bench-results
Same benchmark but using some old ghz: https://github.com/LesnyRumcajs/grpc_bench/wiki/2022-02-19-bench-results
In our benchmark case it is a major issue because we can't, even on a decent machine, saturate a single CPU Rust implementation, not to mention multi-CPU scenarios.
It would be nice to find the root cause and perhaps setup some tests (even manual ones, before release) to check if the performance is more or less the same. Unfortunately I'm not versed in Golang so I can't contribute more than that. :(
The text was updated successfully, but these errors were encountered: