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 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

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

https://community.scaleway.com/

7 „Gefällt mir“

Nice looks like mini racer helped here @sam!

7 „Gefällt mir“

Funktioniert es jetzt auf ARM?

Geht es nur darum, die Installations-Skripte anzupassen, oder werden wirklich x86-Binary-Blobs verwendet?

Jeder hat mittlerweile 100-Mbit-Leitungen, viele Menschen verfügen zu Hause über Gigabit-Faser-Internet. Man kann für 30 $ eine Cortex-A55-TV-Box kaufen, die alte SSD über USB 3.0 mit einem 30-Cent-Adapter anschließen, Linux installieren und loslegen. Der Stromverbrauch ist praktisch vernachlässigbar. Die Verarbeitungs- und Festplattengeschwindigkeit ist unglaublich. Oft ist die Ping-Zeit niedriger als in einem Rechenzentrum. Das ist nicht einmal die Zukunft des Hostings; es gibt das schon seit geraumer Zeit. Es ist jeder Mittelklasse-Server eindeutig überlegen. Es gibt buchstäblich nur Vorteile.

1 „Gefällt mir“

Nicht jeder hat das Glück, Zugang zu dieser Internetgeschwindigkeit zu haben (geschweige denn zu Glasfaserinternet). Manche haben sogar noch immer ein Dial-up-Internet. Das beginnt sich zwar in den Vereinigten Staaten zu ändern, aber nicht in armutsgeprägten Regionen. Ich denke, es wäre erwähnenswert, Starlink zu nennen.

1 „Gefällt mir“

Das ist ein sehr guter Punkt, aber ich finde, das ist im Rechenzentrum sogar noch wichtiger.

Eine breite Einführung von ARM im Rechenzentrum könnte enorme Energieeffizienzgewinne (> 2x?) und niedrigere Kosten ermöglichen, was massive Auswirkungen haben könnte. Das ist ein wirklich verantwortungsvolles Ziel.

Übrigens wurde dies kürzlich in diesem Thema diskutiert: Require ARM64 Support - #3 by david. Dabei wurde darauf hingewiesen, dass mehrere Abhängigkeiten (Gem-Binaries) außerhalb von x86 nicht verfügbar sind.

3 „Gefällt mir“

Dies wird jetzt unterstützt

5 „Gefällt mir“