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

Try running arm32 test-commit jobs in containers on aarch64 hosts #2775

Closed
sxa opened this issue Sep 28, 2021 · 6 comments
Closed

Try running arm32 test-commit jobs in containers on aarch64 hosts #2775

sxa opened this issue Sep 28, 2021 · 6 comments

Comments

@sxa
Copy link
Member

sxa commented Sep 28, 2021

Unlike the old ThunderX systems, the new Altra machines which we recently set up are capable of running 32-bit ARM code, so can run our armv7l releases on the hardware.

Since we are already using multiple docker containers on those systems, we can also deploy armv7l containers running the distribution of our choice, and try running a non-fanned test job on those systems in an expedient manner.

@sxa
Copy link
Member Author

sxa commented Sep 28, 2021

We had previously discussed adding some raspberry pi4 systems into the jenkins farm, but that seemed to go stale. This would probably provide a more stable, and faster, option at zero additional cost and hopefully lower maintenance overhead.

@sxa
Copy link
Member Author

sxa commented Sep 28, 2021

Initial testing with a copy of the node-test-commit-linuxone job:

Job Time for v17 Comment
node-test-commit-linuxone 12-15 minutes variation probably ccache dependent on different PRs
sxa-test-commit-arm32 14 minutes NOTE: This currently runs without ccache enabled

On the basis of this, I'm going to propose adding this into the main group of jobs that run under node-test-commit and run it alongside node-test-commit-arm-fanned for a while to see how it works out.

For comparison with the above figures, node-test-binary-arm-12+ has been taking over an hour for the most recent runs (and always over half an hour) so there are significant performance avantages to be had here. This would also remove the use of a cross-compiler for this platform if we wished to do so.

Questions I see with the general approach:

  • Are we happy that running on a container on an armv8l host would be ok (Technically the pi3s are armv8 but I'm guessing most are not running the RaspiOS 64-bit kernel)
  • We'd need to be comfortable that the version of glibc that's being targetted is suitable for running on all target platforms we'd be interested in. My current tests have been with libc 2.31 as I'm using an Ubuntu 20.04.3 container, but we could use something else.

@sxa sxa changed the title Try running arm32 test jobs in containers on aarch64 hosts Try running arm32 test-commit jobs in containers on aarch64 hosts Sep 28, 2021
@mhdawson
Copy link
Member

Great to hear it seems to be working. Would be great to be able to use docker images versus physical machines.

@rvagg
Copy link
Member

rvagg commented Sep 29, 2021

On the basis of this, I'm going to propose adding this into the main group of jobs that run under node-test-commit and run it alongside node-test-commit-arm-fanned for a while to see how it works out.

We used to have some alternative armv7 machines in node-test-commit-arm, but ran into technical and maintenance difficulties and pulled the plug. So it'd be nice to have them back even if just to increase the diversity of armv7 testing. Having the Pis in the cluster though gives us some confidence of running on actual armv7 hardware (particularly some that that hobbyists are using Node.js with).

There might be a point in the future where we want to entirely retire the Pi cluster, but as long as we can keep it chugging along and not holding things up too badly then it would be nice to keep it in the mix. Sadly that future date creeps closer as the test suite expands!

@sxa
Copy link
Member Author

sxa commented Sep 29, 2021

I've adjusted node-test-commit-arm to have another matrix option for ubuntu2004-armv7l and it looks to be running through ok for a Node17 build
This will require some variant of #2776 to ensure that it doesn't try to build Node12 through this (We can look at adding alternate OS docker images later so we are able to run this way on that version)

@sxa
Copy link
Member Author

sxa commented Sep 29, 2021

Changes now live. Closing.

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