中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

ARM環境まとめ

最近のARM(aarch64)周り

この1年で本番環境を全てarm64サーバーに切り替えたりDocker環境を作ったりしてarm64周りのナレッジが溜まってきた。

ハマり続けたメモ。思い出したら追記する

ブチ当たった問題の情報がネットに無い場合も多く、もしかしたらarm64周りを弄ってるエンジニアの中でもカッティングエッジに近い所まで来てるんじゃないかな・・・・

ビジネス環境

勢いがある。時間を先行投資する価値を感じる。

株主不安

SoftbankがARMの競合と目されているNVIDIAへ売却

AWS

Graviton2インスタンスが提供されており、intel CPUインスタンスより2割程安く、HWアクセラレータ周りも充実している

ElasticCache(Redis)

5%程割安で、しかし明らかに2倍くらい速度が遅い。

Redisは1CPUしか使わないので影響が出やすいのと、Speculative_executionの差なのか?

Apple

M1チップ搭載のMacが販売開始

Linux

amd64 / arm64

良く目検に失敗する・・・aarch64に統一してほしい・・・

Ubuntuパッケージ

ミラーサーバーがaarch64をサポートしていない場合がある

原因特定までメチャクチャ時間がかかる

Ubuntu 日本語環境

ubuntu-ja.listが使えない

Docker on Mac

ARM版のLinuxも一応動く

しかしカーネルエミュレータ周りの互換性がイマイチでそこかしこでエラーを吐く

遅い、固有の問題多すぎ。

互換性に問題のあるdockerコンテナなぞ価値なし!

Chrome

Chromeが提供されておらず、Chromiumを使うしかない

Ruby webdrivers

何も考えずx86_64のライブラリを引っ張ってきて起動でコケる

Feature specではOSにインストール済みのChromiumをバイナリを使う

JS karma

環境変数CHROME_BINにインストール済みのChromiumバイナリのパスを指定

JS puppeteer

launchのパラメータexecutablePathにインストール済みのChromiumバイナリのパスを指定

screen

化石エンジニア御用達の仮想コンソール

なぜかアタッチに分単位の時間がかかる

ElasticSearch

docker imageは7.8以降のみ対応

完全対応は7.13以降

大体、2020年6月以前のバージョンは非対応

7.13も起動が異常に遅い問題を確認している

rubyjs/libv8

https://github.com/rubyjs/libv8/issues/261

RailsでJS実行する際に必要だがビルド出来ない問題が2018年から放置

docker使って自前ビルドしたlibv8をvender/cacheに放り込ん動かす