RaspberryPi4 + ZFS で bonnie++ ベンチ

最初に結論:

  • NetBSDZFSは少なくともベンチマークを回せる程度の安定性はある
  • さすがに raidframe RAID1 と比較すると速度もCPU負荷も分が悪い
  • そもそも測定方法もいいかげんなのでぶっちゃけ話のネタ以上の意味はない

Raspberry Pi 4 と USB HDD 2台で raidframe による RAID1 と、最近になって更新された ZFS で mirror を組んだときのベンチマークを測ってみた。比較用に1台の場合も。

  • Raspberry Piは小型のヒートシンクを着けただけなので、測定中のどこかの段階で発熱によるクロックダウンが起きていると思われる。
  • コマンドは "bonnie++ -d <mount先> -b -u root"。
  • 測定が早すぎると "+++++" という結果になる。解決には例えば "-n 256:1024:1024:16" のようにオプションで調整するように紹介しているところが多いが、実際に試したら一日経っても終わらなかったので諦めた。
  • パーティションはGPTで作成。1台のとRAID1はどちらもUFS2+log。
  • USB-HDD変換はAOTECH ADK-HDCASE25BKA千石電商2号店(本店の右)でワゴン売りしてたもの。最近は見かけなくなった電源供給用のUSBプラグが生えており、Raspebrry Piで不安だった電源供給能力を回避できて実に都合が良かったりする。
  • HDDは東芝 MQ04ABF100。なんかバッファー容量でけぇな?と思っていたが、おそらくSMR(シングル磁気記憶方式)による書き込み性能悪化をフォローするためなんじゃないかという気がする。つまりベンチマークのような非現実的な書き込み負荷をかけるものとすこぶる相性が悪い。
singleraidrame RAID1ZFS mirror
Sequencial OutputPer Characterspeed 17 K/sec23 K/sec7 K/sec
CPU 99 %99 %99 %
Latency 527 ms360 ms1,161 ms
Blockspeed 44,554 K/sec47,822 K/sec39,870 K/sec
CPU 93 %92 %89 %
Latency 3,286 ms1,991 ms57,757 us
Rewritespeed 17,823 K/sec13,193 K/sec27,813 K/sec
CPU 70 %44 %83 %
Latency 3,337 ms7,757 ms872 ms
Sequencial InputPer Characterspeed 149 K/sec132 K/sec21 K/sec
CPU 96 %85 %99 %
Latency 810 ms3,408 ms469 ms
Blockspeed 96,631 K/sec88,545 K/sec87,687 K/sec
CPU 69 %66 %95 %
Latency 182 ms185 ms158 ms
Random Seeksspeed 123.2 /sec121.4 /sec99.4 /sec
CPU 22 %22 %21 %
Latency 348 ms486 ms550 ms
Sequencial CreateCreatespeed 2 /sec296 /sec62 /sec
CPU 0 %57 %4 %
Latency 596 ms43,634 us201 ms
Readspeed +++++ /sec+++++ /sec9,824 /sec
CPU +++ %+++ %98 %
Latency 84 us81 us16,000 us
Deletespeed 2 /sec784 /sec56 /sec
CPU 0 %21 %5 %
Latency 640 ms22,506 us300 ms
Random CreateCreatespeed 35 /sec295 /sec61 /sec
CPU 8 %56 %4 %
Latency 491 ms49,918 us285 ms
Readspeed +++++ /sec+++++ /sec10,041 /sec
CPU +++ %+++ %97 %
Latency 51 us72 us14,300 us
Deletespeed 37 /sec525 /sec46 /sec
CPU 5 %46 %4 %
Latency 279 ms71,794 us329 ms