-
Notifications
You must be signed in to change notification settings - Fork 54
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
Use protobuf types instead of hotstuff-defined Go types with translation layers #43
Comments
Looking at some profiles, it doesn't seem like the conversions are slowing things down much. Here's a memory profile:
Here's a cpu profile:
|
When I am doing experiments to derive the highest possible throughput from the implementation, I looked at the CPU profile and memory profile of the replicas at the current maximum of 300kops, it appears it is spending considerable time in GC around 11 % after I set GOGC to 2000, before that it was close to 16%. In the memory profile, a significant majority of the allocation is to translate from proto to hotstuff-defined structures. |
I guess this is the evidence we need for the performance impact this is having. I haven't studied this in-depth yet, but is it a large change to remove these translations? It would be interesting to see if we can boost the throughput even more without these translations. |
It would be nice to avoid translations between protobuf types and hotstuff-defined types, such as those in hotstuffpb and corresponding translations. Such translations slows things down, adds memory allocation overhead, and is prone to errors in the translation code.
The text was updated successfully, but these errors were encountered: