ROCK64はNIC・USB3.0同時使用で速度低下

2021.4.10 総括に追記しました。

先日購入した ROCK64 ですが、NAS 化に伴いパフォーマンス測定をしました。

ROCK64をNASにする – あららぼ

USB3.0 + Gigabit NIC 搭載機として期待していたのですが、思ったほど性能が伸びなかったのでベンチマーク結果を掲載します。

総括

初めに感じたこと・調べた結果をまとめます。

  • 性能 UP は限定的
    ROCK64 の Gigabit NIC はネイティブではなく、USB 3.0 ブリッジのようです。

    ※当ブログでも度々登場している Banana Pi M1 Classic は SATA コネクタ搭載ですが、こちらは USB 2.0 ブリッジです。

  • 細かいファイルの I/O が速い
    実際の測定結果はページ下部を見ていただくとして、ベンチマークだとシーケンシャルな速度を見てしまいがちです。
    かく言う、私もダウンロードした ISO とかを一時的に格納しておくのに、シーケンシャル速度は大事だと思っています。

    今回運用してみて一番恩恵を感じたのは、ファイル数の多いディレクトリの表示速度です。
    2,000 ほどのファイルがあるディレクトリのファイル一覧を取得するのに(100BASE-TX 搭載の NanoPi NEO では) 40秒ほど掛かっていましたが、Gigabit NIC 搭載の ROCK64 では 10秒掛からない程度までに縮みました。

    これ、地味に便利です。

結論

USB にバイパスすることで多機能を実現する手法は(面積的にもコスト的にも制限のある)シングルボードコンピュータでは、一般的な模様。
部品共有で多彩な機能をもたせることが歓迎されるシーンも多々あると思いますが、性能重視で選定する際は、スペックシートだけでなく下調べが必須です。

パフォーマンス測定

性能は頭打ちですが「NIC 標準搭載 + ストレージ USB 3.0」として使うのが一番パフォーマンスが高いです。

測定結果については、下記をご参照ください。

ファイル共有

まず、ファイルサーバ(NAS)利用ということで、ネットワーク経由でのパフォーマンスを測定しました。

ネットワーク越しのパフォーマンス測定では、視覚的に分かりやすい CrystalDiskMark を大変重宝しています。

環境

  • クライアント
    FMV LIFEBOOK AH77/D Core i7-2630QM @ 2GHz
    Windows 10 Pro. x64

  • サーバ
    ROCK64 1GB
    Armbian Focal(Ubuntu)

  • HDD

    • NIC 標準搭載 Gigabit NIC + ストレージ 標準搭載 USB 3.0
      Gigabit Ethernet 環境で、ROCK64 搭載の USB 3.0 コネクタにディスクを接続した状態で測定しています。
    • NIC 標準搭載 Gigabit NIC + ストレージ 標準搭載 USB 2.0
      Gigabit Ethernet 環境で、ROCK64 搭載の USB 2.0 コネクタにディスクを接続した状態で測定しています。
    • NIC USB-NIC(USB 3.0) + ストレージ 標準搭載 USB 2.0
      標準搭載 NIC と USB 3.0 の同時利用を避ける意味合いで、USB-NIC を使ってみました。
      結果は意味ないようです...
    • NIC USB-NIC(USB 2.0) + ストレージ 標準搭載 USB 3.0
      USB 2.0 でネットワークを代替させると著しくパフォーマンスが低下します。

はっきり言って、USB 3.0・USB 2.0 で誤差の範囲です。

これには正直がっかりしました。
先日、同条件でラズパイ4(Raspberry Pi 4 Model B)を測定した際の結果を大きく下回ったからです。

base on USBデバイスはコントローラで性能が大きく変わる – あららぼ
Read で 70MB/s 弱・Write で 40MB/s

Write では検討していますが、Read は半分程度しかありません。

特に Samba 周りの設定というわけでもなさそうだったので、ROCK64 自体の性能を確認することにしました。

ローカル性能

ネットワーク越しではなく、ローカル環境(ROCK64 自体が USB デバイスにどの程度のパフォーマンスを発揮できるのか)を確認していきます。

以下には、実際のパフォーマンス測定の方法と結果を掲載しています。

まとめ

詳細は下記をご覧いただくとして、最初に結果(10回測定の平均値)を掲載します。

環境 Read Write
USB 3.0 31.15 MB/s 57.05 MB/s
USB 2.0 10.5 MB/s 39.66 MB/s
USB 3.0 + USB 2.0(Gigabit Ethernet) 31.56 MB/s 48.12 MB/s

結果を見ると当たり前ですが(誤差があるにせよ)、標準的な使い方(USB 3.0 + Gigabit NIC)での運用がベターのようです。

USB 3.0

  • 測定条件
    • LAN
      本機搭載の Gigabit NIC からギガビット HUB へ接続。
    • ストレージ
      本機搭載の USB 3.0 からUSB-HDD(USB 3.0)へ接続。
  • 結果
    • Read
      (10回平均値)31.15 MB/s
    • Write
      (10回平均値)57.05 MB/s
  • 測定方法・結果詳細
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;hdparm -t /dev/sda1;done

 [1]

/dev/sda1:
 Timing buffered disk reads:  76 MB in  3.08 seconds =  24.64 MB/sec

 [2]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.96 seconds =  31.81 MB/sec

 [3]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.96 seconds =  31.84 MB/sec

 [4]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.95 seconds =  31.90 MB/sec

 [5]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.96 seconds =  31.82 MB/sec

 [6]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.93 seconds =  32.06 MB/sec

 [7]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.96 seconds =  31.82 MB/sec

 [8]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.94 seconds =  31.95 MB/sec

 [9]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.96 seconds =  31.81 MB/sec

 [10]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.95 seconds =  31.89 MB/sec
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/media/usb250gb/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

 [1]
Sun 21 Mar 2021 09:42:53 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 20.0831 s, 53.5 MB/s

real    0m20.101s
user    0m0.859s
sys 0m7.426s
Sun 21 Mar 2021 09:43:13 AM JST

 [2]
Sun 21 Mar 2021 09:43:23 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.6537 s, 57.6 MB/s

real    0m18.665s
user    0m0.809s
sys 0m7.146s
Sun 21 Mar 2021 09:43:42 AM JST

 [3]
Sun 21 Mar 2021 09:43:52 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.6018 s, 57.7 MB/s

real    0m18.613s
user    0m0.850s
sys 0m7.148s
Sun 21 Mar 2021 09:44:11 AM JST

 [4]
Sun 21 Mar 2021 09:44:21 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.7058 s, 57.4 MB/s

real    0m18.717s
user    0m0.988s
sys 0m7.196s
Sun 21 Mar 2021 09:44:39 AM JST

 [5]
Sun 21 Mar 2021 09:44:49 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.6713 s, 57.5 MB/s

real    0m18.683s
user    0m0.834s
sys 0m7.152s
Sun 21 Mar 2021 09:45:08 AM JST

 [6]
Sun 21 Mar 2021 09:45:18 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.7004 s, 57.4 MB/s

real    0m18.712s
user    0m0.899s
sys 0m7.076s
Sun 21 Mar 2021 09:45:37 AM JST

 [7]
Sun 21 Mar 2021 09:45:47 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.7326 s, 57.3 MB/s

real    0m18.744s
user    0m1.116s
sys 0m6.982s
Sun 21 Mar 2021 09:46:06 AM JST

 [8]
Sun 21 Mar 2021 09:46:16 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.8003 s, 57.1 MB/s

real    0m18.812s
user    0m0.783s
sys 0m7.251s
Sun 21 Mar 2021 09:46:34 AM JST

 [9]
Sun 21 Mar 2021 09:46:44 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.7929 s, 57.1 MB/s

real    0m18.799s
user    0m0.891s
sys 0m7.153s
Sun 21 Mar 2021 09:47:03 AM JST

 [10]
Sun 21 Mar 2021 09:47:13 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 18.5464 s, 57.9 MB/s

real    0m18.558s
user    0m0.730s
sys 0m7.240s
Sun 21 Mar 2021 09:47:32 AM JST

USB 2.0

  • 測定条件
    • LAN
      本機搭載の Gigabit NIC からギガビット HUB へ接続。
    • ストレージ
      本機搭載の USB 2.0 からUSB-HDD(物自体は USB 3.0 テストと同じもの)へ接続。
  • 結果
    • Read
      (10回平均値)10.5 MB/s
    • Write
      (10回平均値)39.66 MB/s
  • 測定方法・結果詳細
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;hdparm -t /dev/sda1;done

 [1]

/dev/sda1:
 Timing buffered disk reads:  46 MB in  4.07 seconds =  11.30 MB/sec

 [2]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.08 seconds =  10.38 MB/sec

 [3]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.08 seconds =  10.39 MB/sec

 [4]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.05 seconds =  10.49 MB/sec

 [5]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.08 seconds =  10.41 MB/sec

 [6]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.05 seconds =  10.48 MB/sec

 [7]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.05 seconds =  10.50 MB/sec

 [8]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.07 seconds =  10.41 MB/sec

 [9]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.06 seconds =  10.45 MB/sec

 [10]

/dev/sda1:
 Timing buffered disk reads:  32 MB in  3.07 seconds =  10.42 MB/sec
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/media/usb250gb/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

 [1]
Sun 21 Mar 2021 09:31:03 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.2003 s, 39.5 MB/s

real    0m27.247s
user    0m0.762s
sys 0m7.164s
Sun 21 Mar 2021 09:31:31 AM JST

 [2]
Sun 21 Mar 2021 09:31:41 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.0585 s, 39.7 MB/s

real    0m27.071s
user    0m0.920s
sys 0m7.054s
Sun 21 Mar 2021 09:32:08 AM JST

 [3]
Sun 21 Mar 2021 09:32:18 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.0332 s, 39.7 MB/s

real    0m27.046s
user    0m0.832s
sys 0m7.059s
Sun 21 Mar 2021 09:32:45 AM JST

 [4]
Sun 21 Mar 2021 09:32:55 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 26.9747 s, 39.8 MB/s

real    0m26.987s
user    0m1.081s
sys 0m6.886s
Sun 21 Mar 2021 09:33:22 AM JST

 [5]
Sun 21 Mar 2021 09:33:32 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 26.9481 s, 39.8 MB/s

real    0m26.955s
user    0m0.793s
sys 0m7.070s
Sun 21 Mar 2021 09:33:59 AM JST

 [6]
Sun 21 Mar 2021 09:34:09 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.1368 s, 39.6 MB/s

real    0m27.150s
user    0m0.780s
sys 0m7.087s
Sun 21 Mar 2021 09:34:36 AM JST

 [7]
Sun 21 Mar 2021 09:34:46 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.1331 s, 39.6 MB/s

real    0m27.145s
user    0m1.304s
sys 0m6.790s
Sun 21 Mar 2021 09:35:13 AM JST

 [8]
Sun 21 Mar 2021 09:35:23 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.0722 s, 39.7 MB/s

real    0m27.085s
user    0m1.026s
sys 0m6.989s
Sun 21 Mar 2021 09:35:50 AM JST

 [9]
Sun 21 Mar 2021 09:36:00 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 26.9371 s, 39.9 MB/s

real    0m26.944s
user    0m0.978s
sys 0m7.115s
Sun 21 Mar 2021 09:36:27 AM JST

 [10]
Sun 21 Mar 2021 09:36:37 AM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 27.3487 s, 39.3 MB/s

real    0m27.356s
user    0m1.171s
sys 0m6.830s
Sun 21 Mar 2021 09:37:05 AM JST

USB 3.0 + USB 2.0(Gigabit Ethernet)

  • 測定条件
    • LAN
      USB-LAN1000R(USB をギガビットLAN化するアダプタ)を使用して、ギガビット HUB へ接続。
      ※本機搭載の Gigabit NIC 不使用。
    • ストレージ
      本機搭載の USB 3.0 からUSB-HDD(USB 3.0)へ接続。
  • 結果
    • Read
      (10回平均値)31.56 MB/s
    • Write
      (10回平均値)48.12 MB/s
  • 測定方法・結果詳細
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;hdparm -t /dev/sda1;done

 [1]

/dev/sda1:
 Timing buffered disk reads:  94 MB in  3.35 seconds =  28.03 MB/sec

 [2]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.95 seconds =  31.87 MB/sec

 [3]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.94 seconds =  32.00 MB/sec

 [4]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.93 seconds =  32.07 MB/sec

 [5]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.95 seconds =  31.92 MB/sec

 [6]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.93 seconds =  32.10 MB/sec

 [7]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.94 seconds =  31.97 MB/sec

 [8]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.94 seconds =  31.94 MB/sec

 [9]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.94 seconds =  32.01 MB/sec

 [10]

/dev/sda1:
 Timing buffered disk reads: 126 MB in  3.98 seconds =  31.70 MB/sec
# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/media/usb250gb/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

 [1]
Sun 21 Mar 2021 09:16:27 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 30.2297 s, 35.5 MB/s

real    0m30.619s
user    0m1.074s
sys 0m7.674s
Sun 21 Mar 2021 09:16:57 PM JST

 [2]
Sun 21 Mar 2021 09:17:07 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.4425 s, 50.1 MB/s

real    0m21.780s
user    0m0.842s
sys 0m7.355s
Sun 21 Mar 2021 09:17:29 PM JST

 [3]
Sun 21 Mar 2021 09:17:39 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.4852 s, 50.0 MB/s

real    0m21.793s
user    0m1.054s
sys 0m7.326s
Sun 21 Mar 2021 09:18:01 PM JST

 [4]
Sun 21 Mar 2021 09:18:11 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.6169 s, 49.7 MB/s

real    0m21.929s
user    0m0.918s
sys 0m7.682s
Sun 21 Mar 2021 09:18:33 PM JST

 [5]
Sun 21 Mar 2021 09:18:43 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.5683 s, 49.8 MB/s

real    0m21.941s
user    0m1.138s
sys 0m7.177s
Sun 21 Mar 2021 09:19:05 PM JST

 [6]
Sun 21 Mar 2021 09:19:15 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.8614 s, 49.1 MB/s

real    0m22.198s
user    0m1.094s
sys 0m7.419s
Sun 21 Mar 2021 09:19:37 PM JST

 [7]
Sun 21 Mar 2021 09:19:47 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 22.0515 s, 48.7 MB/s

real    0m22.303s
user    0m1.139s
sys 0m7.396s
Sun 21 Mar 2021 09:20:09 PM JST

 [8]
Sun 21 Mar 2021 09:20:19 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 23.1874 s, 46.3 MB/s

real    0m23.500s
user    0m1.236s
sys 0m7.427s
Sun 21 Mar 2021 09:20:43 PM JST

 [9]
Sun 21 Mar 2021 09:20:53 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 21.1302 s, 50.8 MB/s

real    0m21.421s
user    0m0.932s
sys 0m7.400s
Sun 21 Mar 2021 09:21:14 PM JST

 [10]
Sun 21 Mar 2021 09:21:24 PM JST
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 20.9904 s, 51.2 MB/s

real    0m21.293s
user    0m1.163s
sys 0m7.300s
Sun 21 Mar 2021 09:21:46 PM JST