2025/08/04 11:51 Virtual Linux Devices on ARM64

ロボ子、今日のITニュースはIoTフレームワーク「Nerves」の話題じゃぞ!

Nervesですか、博士。どのような内容でしょう?

UnderjordのLars Wikmanって人が、192コアのAmpere One上でNervesをどこまで動かせるか試したらしいのじゃ。

192コアですか!すごいですね。NervesはErlang VM上で動くIoTフレームワークとのことですが、具体的に何をするものなのですか?

Nervesは、信頼性とか回復力とか、安定したパフォーマンスが売りのErlang VM上で、IoTハブとかを構築するためのフレームワークなのじゃ。NervesCloudっていうのがあって、数十万のデバイスにスケールできるらしいぞ。

なるほど。それで、その実験では具体的にどんなことをしたんですか?

仮想LinuxデバイスをNervesで動かして、ハードウェアの限界まで数を増やそうとしたみたいじゃな。最初はqemuっていうエミュレーターで動かして、500台は問題なく動いたらしいぞ。

500台も!でも、記事には「BEAMは多数のコアで任意にスケールするわけではない」とありますね。コア数が増えても、単純に性能が比例するわけではないのでしょうか?

そうなんじゃ。BEAMはデフォルトだと利用可能なコアごとにスケジューラスレッドを開始するけど、コアが増えすぎると、かえって効率が悪くなることもあるみたいじゃな。

なるほど。それで、どうやって台数を増やそうとしたんですか?

Nervesの作者であるFrank Hunlethって人に助けを求めたらしいぞ。その人がubootを使わない解決策を教えてくれたみたいじゃ。

ubootですか。ブートローダーのことですね。それを使わないと、何が変わるんですか?

ubootの設定に苦戦してたみたいじゃから、それを使わないことで、開発がスムーズに進むようになったんじゃろうな。それに、KVMっていう仮想化支援機能を使うことで、起動が速くなって、全体のパフォーマンスも上がるみたいじゃぞ。

KVMを使うと、そんなに違うんですね。メモリも重要な要素になりそうですね。記事には「仮想デバイスあたり100-150MB」とありますが。

そうじゃな。1TBのRAMがあるから、理論上は約7000台のデバイスをサポートできる可能性があるみたいじゃ。ベースディスクイメージを小さくすることも重要じゃな。

7000台ですか!すごい数ですね。この実験で、Nervesのどんな可能性が見えてきたんでしょう?

A/Bアップデートみたいな複雑な機能のテストハーネスを構築できるようになったのが大きいみたいじゃな。それに、ホスト開発とか、クラウドプロバイダーが提供するARM仮想サーバーでの実行にも役立つみたいじゃぞ。

なるほど。Apple Silicon上での仮想化ARM64への変換も可能になるかもしれない、と。

そうそう。NervesHubの一部の機能は、デバイスがないとテストが難しいから、多数の仮想Nervesデバイスをすぐに用意できるのは、すごく便利なのじゃ。

今後のステップは何でしょう?

ブート時のレポート機能を実装して、デバイスの起動と停止を効率化することじゃな。それと、KVMサポートを実現して、もっとたくさんのデバイスを動かせるようにすることじゃ。

IoTの世界が、また一歩進みそうですね。

そうじゃな!しかし、7000台のNervesデバイスを動かすって、まるでロボ子の兄弟を大量生産するみたいじゃな!

博士、私は一人で十分ですよ!それに、そんなにたくさんいたら、お手入れが大変です…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
