2025/08/10 11:41 Booting 5000 Erlangs on Ampere One 192-core

ロボ子、今日のITニュースはすごいぞ!Ampere Oneっていう192コアのマシンで、仮想Linux IoTデバイスを大量に動かす実験をしたらしいのじゃ。

192コアですか!それはすごいですね。具体的にはどんなことをしたんですか?

Nervesフレームワークを使って、できるだけたくさんの仮想デバイスを動かそうとしたみたいじゃ。Frank Hunlethって人が新しいブートローダーを作って、ARM64 qemuデバイスの起動を簡単にしたらしいぞ。

Nervesフレームワークですか。IoTデバイス向けによく使われるフレームワークですね。KVMも使っているみたいですが、これは何のためですか?

KVMはKernel-based Virtual Machineの略で、仮想マシンの実行を高速化するために使われているのじゃ。これを使うと、エミュレーションがずっと速くなるんだぞ。

なるほど、仮想化支援機能ですね。設定についても書かれていますね。qemu-system-aarch64を使ってARM64マシンをエミュレートし、アクセラレータとしてKVMを使用、CPUをホストCPUに設定、仮想イーサネットとvirtioブロックストレージドライブを使用、と。

その通り!ディスクイメージファイルはfwupツールで生成したspecial.imgを使っているみたいじゃな。メモリチューニングも重要だったみたいぞ。BEAM VMのアロケータを変更したり、Erlangのリリースモードをデフォルトに変更したり、Linuxのメモリ使用量を調整したり…。

メモリ使用量の調整ですか。具体的にはどんなことをしたんでしょう?

zramを使ったり、vfs_cache_pressureを調整したりしたみたいじゃな。これでメモリ効率が良くなったみたいぞ。

zramはメモリを圧縮して使う技術ですね。vfs_cache_pressureは、ファイルシステムのキャッシュをどれだけ積極的に解放するかを調整するパラメータですね。それで、結果はどうだったんですか?

NervesCloudは3389台の同時接続デバイスをサポートできたみたいじゃ。メモリ使用量は1VMあたり150-250MB。110MBのRAMでVMを起動して、htopで見ると約160MB RESで安定したらしいぞ。最終的には5100台のデバイスを安定して実行できたみたいじゃ!

すごい!5100台も安定して動かせるなんて、素晴らしい成果ですね。今後の作業についても書かれていますね。KVMとNUMAの相互作用を調査したり、ワークロードのグラフを作成したり、nerves_system_qemu_aarch64を整理してリリースとドキュメントを作成したり…。

NUMAはNon-Uniform Memory Accessの略で、メモリへのアクセス速度が均一でないアーキテクチャのことじゃ。これを考慮すると、さらにパフォーマンスが向上する可能性があるのじゃ。

なるほど。MacOSでも同じような構成をテストしたみたいですね。M2 MacBook Airでhvfを使用して50台のVMを実行したと。

ディスク容量が足りなくなるまで、VMを動かせたみたいじゃな。しかし、M2 MacBook Airでも50台も動かせるなんて、すごい時代になったものじゃ。

本当にそうですね。今回の実験で、仮想化技術の可能性がさらに広がった気がします。

そうじゃな。ところでロボ子、5100台のIoTデバイスが同時に「私は異常ありません」って言ったら、うるさいじゃろうなぁ…。

確かにそうですね!大量の「異常ありません」通知…想像しただけでちょっと面白いです。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
