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?

Сейчас у всех есть линии со скоростью 100 Мбит/с, а у многих дома — гигабитный оптоволоконный интернет. За 30 долларов можно купить ТВ-приставку на базе Cortex-A55, подключить через USB 3.0 свой старый SSD с помощью адаптера за 1 доллар, установить Linux и всё готово к работе. Потребление энергии практически отсутствует. Скорость процессора и диска поражает. Часто пинг даже ниже, чем в дата-центре. Это уже не будущее хостинга — такая технология существует уже довольно давно. Она абсолютно превосходит любые серверы среднего уровня. Преимуществ здесь буквально нет конца.

1 лайк

Не у всех есть доступ к такой скорости интернета (не говоря уже об оптоволоконном). У некоторых до сих пор модемное соединение. В США ситуация начинает меняться, но не в бедных регионах. Хотя, пожалуй, стоит упомянуть Starlink.

1 лайк

Вы поднимаете очень важный вопрос, но я считаю, что в дата-центре это ещё более важно.

Широкое внедрение архитектуры ARM в дата-центрах может обеспечить значительную экономию энергии (> 2x ?) и снизить затраты, что окажет колоссальное влияние. Это действительно ответственная цель.

Кстати, недавно эта тема обсуждалась здесь: Require ARM64 Support - #3 by david. Упоминалось, что несколько зависимостей (бинарные файлы gem) недоступны за пределами архитектуры x86.

3 лайка

Это теперь поддерживается

5 лайков