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 curtidas

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 curtida

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 curtidas

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

https://community.scaleway.com/

7 curtidas

Nice looks like mini racer helped here @sam!

7 curtidas

Está funcionando em ARM agora?

É apenas uma questão de mexer nos scripts de instalação, ou há realmente blobs binários x86 envolvidos?

Todo mundo tem linhas de 100 Mbit agora, e muitas pessoas têm internet de fibra óptica de gigabit em casa. Você pode comprar uma TV Box com Cortex-A55 por US$ 30, conectar seu antigo disco SSD via USB 3.0 com um adaptador de US$ 3, instalar o Linux e pronto. Consome praticamente nenhuma energia. A velocidade de processamento e a velocidade do disco são incríveis. Muitas vezes, o ping é menor do que em um datacenter. Isso nem é o futuro da hospedagem; já existe há bastante tempo. É totalmente superior a qualquer servidor de médio porte. Existem literalmente apenas vantagens.

1 curtida

Nem todos têm a sorte de ter acesso a esse tipo de velocidade de internet (muito menos internet de fibra óptica). Algumas pessoas ainda usam discagem. Isso está começando a mudar nos Estados Unidos, mas não em regiões de pobreza. Acho que vale a pena mencionar o Starlink, embora.

1 curtida

Você levantou um ponto muito válido, mas acho que isso é ainda mais importante no datacenter.

A adoção generalizada de ARM no datacenter poderia gerar eficiências energéticas enormes (> 2x?) e reduzir custos, o que teria um impacto massivo. Esse é um objetivo verdadeiramente responsável.

Aliás, isso foi discutido recentemente neste tópico: Require ARM64 Support - #3 by david, sugerindo que várias dependências (binários gem) não estão disponíveis fora da arquitetura x86.

3 curtidas

Isso agora é suportado

5 curtidas