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

ARM64 Spike #779

Closed
kaylareopelle opened this issue Sep 15, 2021 · 3 comments
Closed

ARM64 Spike #779

kaylareopelle opened this issue Sep 15, 2021 · 3 comments

Comments

@kaylareopelle
Copy link
Contributor

Description

What changes (if any) does the Ruby agent need to make to support ARM64?

Additional details in the Spike Document: https://docs.google.com/document/d/1BElgY5QPdH0o9P3TVYWwEdQqzBkhSDGow4pGNruLrow/edit?usp=sharing

Priority

Must Have

@kaylareopelle kaylareopelle added this to Triage in Ruby Engineering Board via automation Sep 15, 2021
@kaylareopelle kaylareopelle moved this from Triage to In progress in Ruby Engineering Board Sep 15, 2021
@kaylareopelle
Copy link
Contributor Author

Findings Summary

We initially tried to test with a t4g nano, and ran into a no memory error when trying to run the thread profiler. T4G nano has 0.5 GB RAM. We increased to a T4G instance with 8 GB RAM to run the tests and came back successful.

Successfully ran multiverse and unit tests for all suites

  • Ruby 3.0.2 used for all suites besides Rails (it’s not currently supported for Rails)
  • 2.7.4 passed successfully for Rails
  • Memcached seems like it might be incompatible with ARM64. This gem has not been updated since 2014 and as of last year's report it had fewer than 200 customers using the gem (it didn't even show up on recent reports). The more recent implementations of Memcache work on ARM64 (dalli and memcache-client).
  • One failure was found on RabbitMQ. This also exists when running locally. Tanna and I discovered RabbitMQ tests may not be running on the CI and are investigating this in the background (fixed: Fix multiverse "rest" group when running multiple groups #778)

Steps

Clone the Rails6 Blog application onto an EC2 instance using Graviton

  • Use 7.2.0 gem version for the application
  • Make sure the config file is connected to the staging collector and has an identifiable name
    Clone the Rails6 Blog application onto an EC2 using Intel
  • Use 7.2.0 gem version for the application
  • Make sure the config file is connected to the staging collector and has an identifiable name
  • Does the main path of the agent work normally?
  • Is there anything odd happening about the connection or the initial setup?
  • Is there anything the tests don’t usually cover?

Comparison of Rails 6 application on two different EC2 instances

  • One is Graviton t4g running on passenger standalone mode
  • One is regular ol' EC2 at a similar size running on nginx + passenger
  • Rails 6 does not support the latest stable version of Ruby (3.0.2). The latest version it supports is 2.7.4. We used this version for the test

Results within New Relic UI

  • During preliminary tests with traffic, the ARM64 instance seems compatible with the non-ARM64 instance
    The RubyVM page is reporting the data for each instance
  • Metrics seem to be reporting as expected too
  • The Environment page is showing the arch is aarch64 for the graviton instance
  • Thread Profiler seems to work on ARM64: https://staging.onenr.io/0eqwy1V5Xwn
  • Distributed tracing not tested yet

@kaylareopelle
Copy link
Contributor Author

@angelatan2 @elucus - Is there anything else you need for this spike before the end of the week?

@angelatan2
Copy link
Contributor

@kaylareopelle @tannalynn Thanks for the spike and the summary of the findings. Other than creating a GitHub issue to add verification to our CI, this spike is closed.

Ruby Engineering Board automation moved this from In progress to Done/Pending Release Sep 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Ruby Engineering Board
  
Code Complete/Done
Development

No branches or pull requests

3 participants