Skip to content

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

Closed

Description

@sxa

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.

Activity

  1. sxa commented on Sep 28, 2021

    @sxa
    MemberAuthor

    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.

  2. sxa commented on Sep 28, 2021

    @sxa
    MemberAuthor

    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.
  3. changed the title [-]Try running arm32 test jobs in containers on aarch64 hosts[/-] [+]Try running arm32 test-commit jobs in containers on aarch64 hosts[/+] on Sep 28, 2021
  4. mhdawson commented on Sep 28, 2021

    @mhdawson
    Member

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

  5. rvagg commented on Sep 29, 2021

    @rvagg
    Member

    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!

  6. sxa commented on Sep 29, 2021

    @sxa
    MemberAuthor

    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)

  7. sxa commented on Sep 29, 2021

    @sxa
    MemberAuthor

    Changes now live. Closing.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions