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

test and build infrastructure for arm64 support #24002

Closed
vielmetti opened this issue Aug 28, 2020 · 9 comments
Closed

test and build infrastructure for arm64 support #24002

vielmetti opened this issue Aug 28, 2020 · 9 comments

Comments

@vielmetti
Copy link

vielmetti commented Aug 28, 2020

Is your feature request related to a problem? Please describe.

Multiple projects on arm64 are blocked because of lack of arm64 support for grpc.

If "gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere", then it should run anywhere including on arm64.

It has been pointed out several times that arm64 support is limited in part
because of lack of test and build infrastructure.

arm64 support is relevant to several sets of devices, including the following:

  • forthcoming arm64 "Apple Silicon"
  • Windows on Arm, primarily in laptop forms
  • AWS "Graviton2" server platform
  • Ampere eMag and Altra servers
  • 64-bit operating systems for the Raspberry Pi (Raspberry Pi OS / Ubuntu 20.04)
  • CI infrastructure from Travis CI and Drone Cloud

Describe the solution you'd like

Address the question of test and build infrastructure - what is
needed, where could it be hosted, and what tooling someone
internal or external to the project would need to make progress on this.

Note that Bazel as of bazelbuild/bazel#8833 includes
arm64 support, so that there's some tooling available.

Describe alternatives you've considered

There isn't really a good alternative to working within the existing project;
the build infrastructure is sufficiently complex to make it unwise to fork
it.

Additional context

Related issues:

@stale
Copy link

stale bot commented Dec 25, 2020

This issue/PR has been automatically marked as stale because it has not had any update (including commits, comments, labels, milestones, etc) for 30 days. It will be closed automatically if no further update occurs in 7 day. Thank you for your contributions!

@guthom
Copy link

guthom commented Jan 31, 2021

Any news on this? it could be really helpful for some of my projects if there would be a way to enable arm64 builds!

Best Guthom

@jtattermusch
Copy link
Contributor

I'm not really sure what the answer should be here.

The gRPC team realizes that the importance of ARM64 is growing and we are actually making steps towards supporting it. As expressed before, the main challenge is setting up the test infrastructure and integrating it with the tests we currently have. gRPC is not a small project and its testing infrastructure is quite complicated and there are many kinds of tests in 10 languages and a ton of support scripts in bash and python. The volume of our testing is also quite high (we run hundreds of hours worth of tests on each pull request and also continuously). Our current CI plaform has currently no way of integrating with ARM64 servers. Altogether, figuring out the question of how to test on ARM in a way that's feasible, reliable maintainable and cost efficient way is not an easy task - it's not as simple as just grabbing an ARM server and starting to running tests on it, there's tens of smaller subproblems to solve (and many of them require in-depth knowledge of gRPC's testing infrastructure and the tests themselves). This is also the reason why a cannot give you a one paragraph summary of "what's needed" (there's a lot of things) and how you can make progress (which is also quite complicated once you go beyond the obvious "try to build and run on a ARM64 server and if you find a bug, come back with a PR that fixes it")

That said, ARM64 support is something we're actively investigating so over time you should be seeing more and more progress towards this goal.

Hope this makes sense and thanks for coming up with a list of the ARM related issues.

@Marcelverhoeven
Copy link

Dear Mr Tattermusch
Thank you for your quick replies.
Allow me to briefly present myself: I am the Precision Systems and Telematic Innovation manager within CNHi (https://www.cnhindustrial.com/en-us/Pages/homepage.aspx)
I would like to speak with you about our global project and the issue of the missing support for ARM64 (see discussion here above).
I believe I have a good proposal to solve this issue while not jeopardizing the potential impact at your side.
I would greatly appreciate if you could contact me on marcel.verhoeven@cnhind.com

@jtattermusch
Copy link
Contributor

Just to provide a quick update here: the gRPC team is actively working on providing official ARM64 linux support (including official packages in package managers and continuous tests in place). Please stay tuned.

@Hajime-Sugiuchi
Copy link

Hajime-Sugiuchi commented Apr 6, 2021

@jtattermusch Dear Mr Tattermusch,
It's a great news for gRPC users. We do appreciate tremendous effort to the gPRC team. Can't wait for good news :-)

@vielmetti
Copy link
Author

vielmetti commented Jun 24, 2021

A blog post at https://grpc.io/blog/grpc-on-arm64/ has lots of updates! Thanks @jtattermusch for all your work.

I note in that post that there's a gap in Ruby support. The Ruby team just spun up some systems for build/test on arm64 at @WorksOnArm - let me know if I can make any introductions.

@jtattermusch
Copy link
Contributor

A blog post at https://grpc.io/blog/grpc-on-arm64/ has lots of updates! Thanks @jtattermusch for all your work.

I note in that post that there's a gap in Ruby support. The Ruby team just spun up some systems for build/test on arm64 at @WorksOnArm - let me know if I can make any introductions.

Yes, we don't provide native ruby gems, this is tracked as #26391 and protocolbuffers/protobuf#8682. The main blocker there is lack of support for aarch64 linux crosscompilation in rake-compiler-dock (which is what we use for building the native gems) - see rake-compiler/rake-compiler-dock#47.

@jtattermusch
Copy link
Contributor

Since linux arm64 support is now official (as announced in https://grpc.io/blog/grpc-on-arm64/), it makes sense to close this issue. Feel fee to open separate issues for arm64 on Mac and arm64 on Windows - but as mentioned in the blogpost we don't have a clear plan there yet.

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

No branches or pull requests

8 participants