外部記憶装置

脳みそ小さすぎるからメモしとく

R86S レビュー (Ubuntu 22.10 編 その1)

R86S レビューシリーズ

謎の小型PC、R86S を購入し、簡単な計測を行った時の記録

R86S について

R86S は aliexpress で販売されている謎の小型PCである。 SFP+ が2個と 2.5Gbps Ethernet(RJ-45) が3個搭載されていることが最大の特徴となっている。

docs.r86s.net

購入はここから。

R86S Soft Routing Multi net port, Intel mini host N5105 8GB/16GB 10 Gigabit fiber port 2.5G| | - AliExpress

購入したモデルは GW-R86S-G1 である。 CPU Intel Celeron N5105(4Core/4Thread)、メモリ 8GB、NICIntel I225(2.5Gbps x 3) と Mellanox ConnectX-3 (SFP+ x 2) が搭載されている。

OSは基本的に最新の WindowsUbuntu であれば問題なくサポートされている様子(R86S Document より)

バイスに関する詳細なレビューは yas-nyan 氏のレビューが分かりやすいため、ここでは省略する。

zenn.dev

ネットワーク処理性能の計測

R86S を高速ルーターや高速パケット処理のおもちゃとして利用するにあたり、 バニラな Ubuntu 22.10 をインストールした環境で iperf3 を用いた計測を行った。 なお、計測は SFP+x2 な部分についてのみ行った。

計測環境

計測用のネットワークはこのようになっている。MTU は全体で 9000 とした。

物理マシンと接続された10Gスイッチが10GBASE-Tしか刺さらないため、メディコン代わりに別の10Gスイッチを介して接続している。 当初は 10GBASE-T SFP+モジュールを用いる予定であったが、購入したモジュール が R86S でリンクを上げることが出来なかったため、このような構成となっている。

計測は iperf3 を用いた。

iperf3 -c 192.168.14.2 -i 0 -O 5 -M [MSS] -t 120

R86S

  • モデル: GW-R86S-G1
  • OS: Ubuntu 22.10 (Kernel: 5.19.0-31-generic)

負荷生成用マシン(仮想マシン)

2台の物理マシン上に1台ずつ負荷生成用のマシンとして仮想マシンを用意した。 vCPU の pinning やそのほかのチューニングは行わず、QEMU/libvirt の標準設定で作成した。 専用の物理マシンやパケットジェネレータを利用したわけではないため、パケットサイズが小さい場合は不正確な測定結果となっている可能性がある。

  • CPU: 4コア
  • メモリ: 8GB
  • OS: Ubuntu 22.10 (Kernel: 5.19.0-31-generic)
  • テスト用NIC: virtio

L2 フォワーディング(bridge)

10G NIC 間を bridge で接続した場合について計測した。

  bridges:
    br0:
      mtu: 9000
      interfaces:
      - enp4s0
      - enp4s0d1

計測結果は以下のとおりである。MSS が 1000bytesを超えたあたりから 9Gbps を超えている。

L3 フォワーディング(routing)

10G NIC 間で静的ルーティングを行った場合について計測した。 おおむね、L2 フォワーディングの時とほぼ同様な傾向であることが分かる。

CPU の負荷

L3 フォワーディングの計測を行っている間のCPU使用率を mpstat で計測した。 MSS を 80, 216, 472, 984, 1240, 1478, 3960, 7960, 8960 と2分ずつ計測した時のCPU使用率(全コア合算)のグラフが下図である。

MSS が大きくなるにつれて、soft(ソフトウェア割り込み) の割合が下がっていることが分かる。 しかし、MSS が 3960 以上となるとまたソフトウェア割り込みが増加している。

各コアのソフトウェア割り込みの割合についても計測した。

iperf3 では計測毎に接続を貼りなおすため、計測ごとに割り込みがかかっているコアが違っていることが分かる。 MSS が小さい場合、1つのコアがソフトウェア割り込みによってほぼ使い果たされている。 MSSが1500に近づくにつれてその割合は減るものの、MSSが1500を超えると、ソフトウェア割り込みの割合が 50%前後を遷移している。 詳細な原因は分からないため、今後調べることにする。

まとめ

R86S で iperf3 を用いて簡易的なネットワーク処理性能の計測を行った。 MSS が 1000 bytes を超えるような場合において、約 9Gbps 以上でパケットフォワーディングができた。 簡易的な高速ルーターやパケットキャプチャデバイスとしては十分に利用できそうなデバイスであると思う。