Support for ARM servers

https://github.com/discourse/discourse_docker/issues/121

Continuing on from the discussion on ARM support at GitHub.

ARM support would be extremely useful for owners of small communities like myself because of the extremely low price (like the Scaleway 2GB ARM servers for €2.99) and for those who can’t afford the move from cheap shared hosting to the dedicated or KVM machines that Discourse requires.

https://community.scaleway.com/t/discourse-instantapp/452

There has also been some discussion of this on the Scaleway forums, although much of this has been around getting Discourse working without using the Docker method.

5 Likes

As @erlend_sh said, this is a blocker. No updates so far? Maybe Discourse could provide a list of non-ARM gems so far so that we could track here the process with respect to blocking dependencies?

1 Like

Simplest thing to do is install Ruby on a scaleway copy our Gemfile and do a bundle install… what happens?

bundle install is not an issue.

However, the therubyracer and v8 gem requires some patches/different version. Otherwise, the
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake assets:precompile
does not finish, but break with a stack trace.

Purging temp files
abort:

==== JS stack trace =========================================

Security context: 0x3fd36f3d <JS Object>#0#
    1: /* anonymous */ [<eval>:~56513] (this=0x3fd36fe5 <JS Global Object>#1#,data=0x4f74cec5 <JS Array[2]>#2#)
    2: intersection [<eval>:57141] (this=0x4f74d431 <JS Object>#3#,argument=0x4f74ce7d <JS Object>#4#)
    3: /* anonymous */ [<eval>:58617] (this=0x4f70b199 <an Object>#5#,_dereq_=0x4f70b0f1 <JS Function>#6#,module=0x4f70b1a5 <an Object>#7#,exports=0x4f70b199 <an Object>#5#)
    4: arguments adaptor frame: 7->3
    5: s [<eval>:~2] (this=0x3fd36fe5 <JS Global Object>#1#,o=591,u=0x3fd08091 <undefined>)
    6: arguments adaptor frame: 1->2
    7: /* anonymous */ [<eval>:2] (this=0x3fd36fe5 <JS Global Object>#1#,e=591)

stacktrace.txt (291 KB)

This seems to be the upstream bug: https://github.com/cowboyd/therubyracer/issues/317
I posted recently a comment, but did not get a response.

Scaleway patches the Gemfile and Gemfile.lock in order to use local versions that have been downloaded from elsewhere: https://github.com/scaleway-community/scaleway-discourse/blob/master/Dockerfile#L53

5 Likes

For those looking into this, a fair amount of progress has been made on this front:

https://community.scaleway.com/

7 Likes

Nice looks like mini racer helped here @sam!

7 Likes

Is it working on ARM now?

Is it just a matter of messing with the install scripts, or are there really x86 binary blobs used?

Everyone has 100Mbit lines now, a lot of people have gigabit fiber internet at home. You can get a Cortex-A55 TV Box for $30, plug in your old SSD drive via USB 3.0 with a $3 adapter, install Linux and you are ready to go. It consumes virtually no power. The processing speed and disk speed is incredible. Often the ping is lower than in a datacenter. This is not even the future of hosting. It has been around for quite some time. It is totally superior to any mid-range server. There literally are only advantages.

1 Like

Not everybody is fortunate enough to have access to that kind of internet speed (let alone fiber optic internet). Some people even have dial-up still. That is beginning to change in the United States, but not in regions of poverty. I guess it would be worth mentioning Starlink though.

1 Like

You make a great point, but I think it’s even more important in the datacentre.

Broad adoption of ARM in the datacentre could realise some huge energy efficiencies (> 2x ?) and lower costs which could have massive impact. This is a really responsible goal.

btw, this was recently discussed in this Topic: Require ARM64 Support - #3 by david suggesting that several dependencies (gem binaries) are not available outside of x86

3 Likes

This is now supported

5 Likes