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

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

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

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

https://community.scaleway.com/

「いいね!」 7

Nice looks like mini racer helped here @sam!

「いいね!」 7

ARMでも動作するようになりましたか?

インストールスクリプトをいじるだけで済むのでしょうか、それとも本当にx86のバイナリブロブが使われているのでしょうか?

現在は誰もが100Mビット回線を持っており、多くの人が自宅でギガビットの光ファイバーインターネットを利用しています。30ドルでCortex-A55搭載のTVボックスを購入し、3ドルのアダプターを使ってUSB 3.0で古いSSDを接続し、Linuxをインストールすればすぐに使い始められます。消費電力は実質ゼロです。処理速度もディスク速度も驚異的です。多くの場合、データセンターよりもpingが低くなります。これはまだホスティングの未来ではなく、すでにかなり前から存在しています。ミッドレンジサーバーよりも完全に優れており、利点しかないと言えます。

「いいね!」 1

そのようなインターネット速度(ましてや光ファイバーインターネットなど)を利用できるのは fortunate な人々だけではありません。中にはまだダイヤルアップ接続を使っている人もいます。アメリカでは状況が変わりつつありますが、貧困地域ではまだその通りにはなっていません。とはいえ、Starlink に触れておく価値はあるかもしれません。

「いいね!」 1

非常に鋭いご指摘ですが、データセンターにおいては、その重要性がさらに高まると思います。

データセンターにおける ARM の広範な採用は、驚異的なエネルギー効率(2 倍以上?)の実現やコスト削減をもたらす可能性があり、大きな影響を与えるでしょう。これは非常に責任ある目標です。

余談ですが、このトピックで最近議論されていました:Require ARM64 Support - #3 by david
これによると、いくつかの依存関係(gem バイナリ)が x86 以外では利用できないことが示唆されています。

「いいね!」 3

これは現在サポートされています

「いいね!」 5