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 Me gusta

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 me gusta

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 Me gusta

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

https://community.scaleway.com/

7 Me gusta

Nice looks like mini racer helped here @sam!

7 Me gusta

¿Ya funciona en ARM?

¿Es solo cuestión de modificar los scripts de instalación o realmente se utilizan blobs binarios x86?

Ahora todos tienen conexiones de 100 Mbit, y muchas personas cuentan con fibra óptica de gigabit en casa. Puedes conseguir una caja TV con Cortex-A55 por 30 dólares, conectar tu antiguo disco SSD mediante USB 3.0 con un adaptador de 3 dólares, instalar Linux y ya estarás listo. El consumo de energía es prácticamente nulo. La velocidad de procesamiento y la velocidad del disco son increíbles. A menudo, el ping es incluso menor que en un centro de datos. Esto ni siquiera es el futuro del alojamiento; lleva bastante tiempo disponible. Es totalmente superior a cualquier servidor de gama media. Literalmente, solo ofrece ventajas.

1 me gusta

No todo el mundo tiene la suerte de acceder a ese tipo de velocidad de internet (ni mucho menos a internet de fibra óptica). Algunas personas incluso todavía usan conexión por módem. Esto está empezando a cambiar en Estados Unidos, pero no en las regiones de pobreza. Supongo que valdría la pena mencionar Starlink, sin embargo.

1 me gusta

Tienes un punto muy válido, pero creo que es aún más importante en el centro de datos.

La adopción generalizada de ARM en el centro de datos podría lograr enormes eficiencias energéticas (> 2x?) y reducir costos, lo que tendría un impacto masivo. Este es un objetivo realmente responsable.

Por cierto, esto se discutió recientemente en este tema: Require ARM64 Support - #3 by david, sugiriendo que varias dependencias (binarios gem) no están disponibles fuera de x86.

3 Me gusta

Esto ahora es compatible

5 Me gusta