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 Mi Piace

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 Mi Piace

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: TheRubyRacer 0.12.1 Segmentation Fault · Issue #317 · rubyjs/therubyracer · GitHub
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 Mi Piace

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

https://community.scaleway.com/

7 Mi Piace

Nice looks like mini racer helped here @sam!

7 Mi Piace

Funziona ora su ARM?

È solo una questione di modificare gli script di installazione, o vengono effettivamente utilizzati blob binari x86?

Ora tutti hanno linee da 100 Mbit, molte persone hanno connessioni in fibra ottica da gigabit a casa. Puoi acquistare una TV Box con Cortex-A55 per 30 dollari, collegare il tuo vecchio SSD tramite USB 3.0 con un adattatore da 3 dollari, installare Linux e sei pronto. Consuma praticamente zero energia. La velocità di elaborazione e quella del disco sono incredibili. Spesso il ping è inferiore rispetto a quello di un data center. Questo non è nemmeno il futuro dell’hosting: esiste da abbastanza tempo. È assolutamente superiore a qualsiasi server di fascia media. Letteralmente ci sono solo vantaggi.

1 Mi Piace

Non tutti hanno la fortuna di accedere a una velocità di internet del genere (figuriamoci a internet in fibra ottica). Alcune persone usano ancora la connessione dial-up. Questo sta iniziando a cambiare negli Stati Uniti, ma non nelle zone di povertà. Credo che varrebbe la pena menzionare Starlink, però.

1 Mi Piace

Fai un ottimo punto, ma penso che sia ancora più importante nel data center.

Una diffusa adozione di ARM nei data center potrebbe realizzare enormi efficienze energetiche (> 2x ?) e ridurre i costi, con un impatto massiccio. Questo è un obiettivo davvero responsabile.

A proposito, questo è stato recentemente discusso in questo argomento: Require ARM64 Support - #3 by david, suggerendo che diverse dipendenze (binari gem) non sono disponibili al di fuori dell’architettura x86.

3 Mi Piace

Ora è supportato

5 Mi Piace