Amazonの初売りでBuffaloのSSD-PUT250U3-BKCが30% OFFくらいで売っていたので衝動買いしてしまった。3本も(?!) これはUSB接続のポータブルSSDになっていて、USBメモリやSDカードよりかなり高速に読み込み・書き込みができるのがウリになっている。 今作っている?遊んでいる?自宅サーバのk8sクラスタのストレージ用に使おうと思っている。 いまだにワークロードが載っていないのに、ガワだけ立派になっていく!!!!!!
実際にストレージとして使っていくならばベンチマークしないといけない!ということで、Crystal Disk Markとdiskspd-for-linuxでベンチマークをしてみた。
Crystal Disk Markとdiskspd-for-linuxの関係
Crystal Disk Mark(以下、CDM)は有名なので詳細は省くがWindowsのストレージベンチマークソフトで、ほぼデファクトになっていると思う。 実は、CDMはdiskspdというMicrosoft社が出しているベンチマークソフトのフロントエンドになっているのだった。 このdiskspdもWindows専用なのだが、ありがたいことにLinux版向けのコードも公開されているので、これを使うとCDMと同じベンチマークをLinuxでも行うことができるはずである。
fioではだめなのか?
Linuxでストレージのベンチマークソフトといえばfioが有名だと思う。 最初は、diskspd-for-linuxを使わずにfioを使おうと思っていろいろパラメータを作ったのだが、どうもうまくいかなかった。 CDMの30%程度の結果しかでず、うーんとなってしまった。 fioのパラメータを探っていっても面白いと思うのだが、diskspd-for-linuxがあるのでそちらを使うことにした。
SSD-PUT250U3-BKCのベンチマーク
いろいろ書いたが、SSD-PUT250U3-BKCのベンチマーク結果を貼っていく。 Crystal Disk Markで実行した結果と、diskspd-for-linuxで実行した結果をそれぞれ貼る。 なお、それぞれOSは違うが同じPCで測定を行った。
- PC
- ASUS ROG Zephyrus G14 GA402RK
- CPU: AMD Ryzen 7 6800HS
- メモリ: 32GB
- USBポート: USB3.2 (Type-A/Gen2)
- OS
- Windows 11 Pro
- Ubuntu Linux 22.04 (USBメモリブート)
Crystal Disk Mark
まずはCrystal Disk Markから。3本買ったので、それぞれのを貼っておく。
1本目
2本目
3本目
3本とも大きく差はなく、そして、メーカーの公証数値くらいのシーケンシャルリードがでていてよかった。 シーケンシャルライトもリードとそん色ない数値がでていてよい。 ランダムリード・ライトに関してもUSB接続と考えれば十分な速度が出ていると思う。 ちなみに、CDMではテストファイルのサイズを変えることができるが、このサイズを大きくしても小さくしても測定誤差はあるものの大きく値が変わらなかった(サイズの変更をしたベンチマークは1本目だけで行った)。
テストサイズ=128MiB
テストサイズ=64GiB
diskpart-for-linux
次にdiskpart-for-linnuxでの計測結果を貼る。 こちらはめんどくさくて1本しか測定していない*1。 計測は以下のようなコマンドで行った。なお、コマンドのオプションに関しては【diskspd】ストレージのベンチマーク方法(Linux版CrystalDiskMarkを作ってみた) – Hacker's Highを参考にさせていただいた、ありがとうございます。
TARGET_DIR=/data diskspd -c1G -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w0 -L $TARGET_DIR/diskspd-testfile | tee seq-read-1m-q8-t1.log diskspd -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w100 -L $TARGET_DIR/diskspd-testfile | tee seq-write-1m-q8-t1.log diskspd -Zr -b1M -d5 -o1 -t1 -W0 -Sd -w0 -L $TARGET_DIR/diskspd-testfile | tee seq-read-1m-q1-t1.log diskspd -Zr -b1M -d5 -o1 -t1 -W0 -Sd -w100 -L $TARGET_DIR/diskspd-testfile | tee seq-write-1m-q1-t1.log diskspd -Zr -b4K -d5 -o32 -t1 -W0 -Sd -w0 -L -r $TARGET_DIR/diskspd-testfile | tee random-read-4k-q32-t1.log diskspd -Zr -b4K -d5 -o32 -t1 -W0 -Sd -w100 -L -r $TARGET_DIR/diskspd-testfile | tee random-write-4k-q32-t1.log diskspd -Zr -b4K -d5 -o1 -t1 -W0 -Sd -w0 -L -r $TARGET_DIR/diskspd-testfile | tee random-read-4k-q1-t1.log diskspd -Zr -b4K -d5 -o1 -t1 -W0 -Sd -w100 -L -r $TARGET_DIR/diskspd-testfile | tee write-read-4k-q1-t1.log
テストサイズは1GiBとした。参考にCDMとの比較も載せておく。
結果(MB/s) | CDMの結果(MB/s) | 比較 | |
---|---|---|---|
シーケンシャルリード 1MiB Q8T1 | 386.80 | 405.53 | -4.6% |
シーケンシャルライト 1MiB Q8T1 | 317.60 | 377.61 | -15.9% |
シーケンシャルリード 1MiB Q1T1 | 344.00 | 385.30 | -10.7% |
シーケンシャルライト 1MiB Q1T1 | 320.00 | 359.63 | -11.0% |
ランダムリード 4KiB Q32T1 | 156.48 | 161.99 | -3.4% |
ランダムライト 4KiB Q32T1 | 46.69 | 167.29 | -72.1% |
ランダムリード 4KiB Q1T1 | 20.67 | 20.51 | +0.1% |
ランダムライト 4KiB Q1T1 | 47.06 | 48.05 | -2.1% |
全体的にdiskpart-for-linuxのほうが低い値となった。 OSごとのドライバの実装やファイルシステム、diskpartの実装*2の違いにより差が生まれるのだろうか。 特に顕著なのが、ランダムライト4KiB Q32T1でほとんどパフォーマンスがでていない。 同じランダムライトの4KIB Q1T1とほぼ同じ結果なのでもしかしたらLinuxのUSBマスストレージのiodepthが1で頭打ちになっているとかなのだろうか? 🤔 軽く調査してみたが何もわからなかったので諦め…。
まとめ
衝動買いしたとはいえSSD-PUT250U3-BKCは期待以上のパフォーマンスを発揮していてよかった。 私の使用用途として想定しているRaspberry Pi 4やNano Pi R4Sに搭載されたMicroSDよりも圧倒的に速いので、クラスタのストレージにも最適っぽくてよかった。 LinuxでもCDMと同等のベンチをとりたくdiskpart-for-linuxを試してみたが、思ったより差が出たのが意外だった。 それをもってdiskpart-for-linuxが使えないというわけではないが、CDMに比べてスコアが低いというのを前提に使用するのがよさそうな気がする。
おまけ1: Raspberry Pi4とNanoPi R4Sでベンチマークした結果
私が実際にSSD-PUT250U3-BKCを使おうと思っているRaspberry Pi 4とNanoPi R4Sでdiskpart-for-linuxでベンチマークしてみた。 それぞれ、USB3.0である。
Raspberry Pi 4(MB/s) | NanoPi R4S(MB/s) | |
---|---|---|
シーケンシャルリード 1MiB Q8T1 | 359.40 | 413.80 |
シーケンシャルライト 1MiB Q8T1 | 174.20 | 301.80 |
シーケンシャルリード 1MiB Q1T1 | 280.20 | 306.60 |
シーケンシャルライト 1MiB Q1T1 | 197.40 | 250.60 |
ランダムリード 4KiB Q32T1 | 42.96 | 40.13 |
ランダムライト 4KiB Q32T1 | 14.05 | 20.21 |
ランダムリード 4KiB Q1T1 | 14.81 | 15.47 |
ランダムライト 4KiB Q1T1 | 13.27 | 22.24 |
おまけ2: diskspd-for-linuxのバイナリ
diskspd-for-linuxのバイナリは公式にはないようなので、DockerでビルドしてGitHubにアップロードしておいた。
おまけ3
冒頭でAmazonの初売りでSSD-PUT250U3-BKCを買ったと書いた。 1個あたり3760円でめちゃやす!!!!っと思ったのだが、いま検索したらノジマオンラインで3564円で売っていた…。悲しい