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؟

هل الأمر مجرد التعديل على سكريبتات التثبيت، أم أن هناك حقًا كائنات ثنائية (binary blobs) مخصصة لمعمارية x86 مستخدمة؟

أصبح الجميع يمتلك خطوط اتصال بسرعة 100 ميجابت، وكثير من الناس لديهم إنترنت ألياف بصرية بسرعة جيجابت في منازلهم. يمكنك الحصول على جهاز تلفزيون يعمل بمعالج Cortex-A55 مقابل 30 دولارًا، وتوصيل قرص SSD القديم عبر منفذ USB 3.0 باستخدام محول بقيمة دولار واحد، ثم تثبيت نظام لينكس لتصبح جاهزًا للعمل. يستهلك طاقة تكاد تكون معدومة. سرعة المعالجة وسرعة القرص مذهلة. غالبًا ما يكون زمن الاستجابة (ping) أقل مما هو في مراكز البيانات. هذا ليس مستقبل الاستضافة فحسب، بل إنه موجود منذ فترة طويلة. إنه متفوق تمامًا على أي خادم متوسط النطاق. لا توجد إلا مزايا حرفيًا.

إعجاب واحد (1)

ليس الجميع محظوظًا بما يكفي للحصول على هذا النوع من سرعة الإنترنت (نادرًا ما يكون هناك إنترنت ألياف بصرية). بعض الناس لا يزالون يستخدمون الاتصال الهاتفي. هذا الأمر بدأ يتغير في الولايات المتحدة، لكنه لم يتغير بعد في مناطق الفقر. أعتقد أنه سيكون من الجدير بالذكر Starlink رغم ذلك.

إعجاب واحد (1)

لقد أثبتت نقطة ممتازة، لكنني أعتقد أنها أكثر أهمية في مركز البيانات.

الانتشار الواسع لـ ARM في مراكز البيانات قد يحقق كفاءات طاقة هائلة (أكثر من ضعف الكفاءة؟) ويقلل التكاليف، مما قد يكون له تأثير كبير. هذا هدف مسؤول للغاية.

بالمناسبة، نوقش هذا مؤخرًا في هذا الموضوع: Require ARM64 Support - #3 by david حيث أُشير إلى أن بعض التبعية (ملفات الثنائيات gem) غير متاحة خارج معمارية x86.

3 إعجابات

هذا مدعوم الآن

5 إعجابات