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

Documentation on how to get max node performance with GraalVM #8170

Open
OlegJakushkin opened this issue Jan 24, 2025 · 3 comments
Open

Documentation on how to get max node performance with GraalVM #8170

OlegJakushkin opened this issue Jan 24, 2025 · 3 comments
Assignees

Comments

@OlegJakushkin
Copy link

Description

As a PoA chain hoster, I want to understand how to increase performance using GraaLVM to get better TPS.

Acceptance Criteria

  • There is a doc outlining how to run GraalVM-based besu nodes to achieve top performance
    • Possible compilation arguments/parameters
    • Possible runtime parameters and what they depend on

Logs (if a change in behaviour)

FROM ghcr.io/graalvm/graalvm-community:21
RUN microdnf -y install findutils 
	
COPY . /besu

WORKDIR /besu
RUN ./gradlew nativeCompile --parallel  --dependency-verification=off
RUN ./gradlew installDist  --continue --parallel   --dependency-verification=off

EXPOSE 8545 8546 8547

CMD ["/besu/build/install/besu/bin/besu", "--help"]
ENTRYPOINT ["/besu/build/install/besu/bin/besu"]

Versions (Add all that apply)

@macfarla macfarla self-assigned this Feb 3, 2025
@macfarla
Copy link
Contributor

macfarla commented Feb 3, 2025

@ahamlat think you looked at GraalVM recently - there were some issues with mainnet (no fallbacks for native/JNI libs) but will it work for PoA? Any insights on this?

@ahamlat
Copy link
Contributor

ahamlat commented Feb 4, 2025

@OlegJakushkin What documentation are your referring to and what do you mean by GraalVM-based besu nodes ?
As Besu is written in JAVA, you can change the JVM implementation to choose the GraalVM one.
For the EVM module, we can execute som tests with a native GraalVM image. I started a work to create a full native image for Besu but had faced some challenges, as all the libraries used in Besu are not supported yet by GraalVM, so debugging one by one.

@OlegJakushkin
Copy link
Author

Dear @ahamlat:

  1. Is there an option to run the main besu client with EVM compiled as a native part (what am I missing in building a pipeline in the docker file above, or maybe there is some node running option to pass it for native EVM to be used by the client)?
  2. In here, it was posted that on graalvm-based client shall have +50 tx/s in comparison with OpenJDK from roughly 350 to 400 smart contract calls per second so I wonder if there are any build/runtime args to get that speed up as so far with same args I get a slowdown in my use case.

@macfarla macfarla assigned ahamlat and unassigned macfarla Feb 5, 2025
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

3 participants