昨日のつづき。Pi 4にUSB-SSDをつけたらそこそこ快適になったので,それならばとPi 5の方を復活させてみることに。ついでに昨日のUSB-SSD比較で,MicroSDの実力を測定してみた。Pi 5につけているのでPi 4につけるより性能が出るが,それはそれということで。

どれも普及品だ。左の2つは購入時千円未満。
サンディスクExtreme 32G V30/UHS-I Class3/A1
サンディスクのMicroSDカードは灰赤と金赤と黒赤があるが,こちらは中庸な金赤。以前,あきばおーで並行輸入品が安く売っていた頃はよく使ったが,円安と,ベンダが直接Amazonなどで売るようになってからは,偽物リスクのある並行輸入品はあまり使わなくなってしまった。金赤の方はいつのまにかアプリケーションクラスがA1からA2に変更になったようで,3つ目がそれ。こいつはA1だ。カタログスペックでは読み出し最大100Mbytes/秒,書き込み最大60Mbytes/秒とのことなので,読み出し91,書き込み62もでていれば御の字か。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 91.915
Sequential Write (1M) 62.966
Random Read (512K) 89.583
Random Write (512K) 46.411
Random Read (4K) 14.851
Random Write (4K) 2.752
Random Read (4K-iodepth=32) 15.618
Random Write (4K-iodepth=32) 2.797
キオクシア EXCERIA 32G UHS-I Class1
本当はこの下に更に廉価品クラスがあるのだが,ほとんど見かけないし価格が逆転していることも多いので,事実上一番廉価で入手できるクラス。中庸を狙った性能か。読み出しは81Mbytes/秒だが書き込みが遅い。カタログスペックも読み出しは100Mbytes/秒と記載されているが書き込みの数値が無い。書き込みが遅いのはメーカー承知なのか。ただ,4KブロックのRandom Writeは試した3つの中では一番速かった。内部のブロックサイズが他より小さいと予想。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 80.958
Sequential Write (1M) 18.801
Random Read (512K) 85.118
Random Write (512K) 19.418
Random Read (4K) 14.397
Random Write (4K) 6.75
Random Read (4K-iodepth=32) 14.795
Random Write (4K-iodepth=32) 7.074
サンディスク Extreme 128G V30/UHS-I Class3/A2
こちらはアプリケーションクラスがA2なのでRandom Write 512Kが他より速い。その分,キオクシアの安物より高価だが,4Kランダムという過酷な状況になるとキオクシアの安物の方が一枚上手だ。カタログスペックは読み出しが最大190MBytes/秒,書き込みが90MBytes/秒だ。やはりRaspberry Pi 5だと読み出し90MBytes/秒あたりが限界なのかもしれない。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 85.368
Sequential Write (1M) 74.33
Random Read (512K) 83.372
Random Write (512K) 53.515
Random Read (4K) 12.823
Random Write (4K) 4.156
Random Read (4K-iodepth=32) 12.773
Random Write (4K-iodepth=32) 4.104
MicroSDのだいたいの速度はわかったが(どんなに速いのを入れても読み出し90M,書き込み75Mくらいが最大),PCIe接続のNVMeはどうだろうか。こいつにつけてある中華NVMe(去年5千2百円で買ったNetac NV3000 500GB)はこんな感じ。昨日のPi 5のUSB SSDとあまり変わらんといえば変わらんところが興味深い。スペックでは3300MBytes/秒だが,Pi 5のPCIeがデフォルトでは2.0なのでスペック上の速度は約500MBytes/秒。これ以上は無理だと思えば,450以上でているのは善戦している方か。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 455.111
Sequential Write (1M) 438.367
Random Read (512K) 423.838
Random Write (512K) 424.181
Random Read (4K) 67.117
Random Write (4K) 120.001
Random Read (4K-iodepth=32) 313.007
Random Write (4K-iodepth=32) 258.716
そこで,オフィシャルでは使えないことになっているPCIe 3.0モードにしてみるとどうなるか。PCIe 3.0のスペックでは約985MBytes/秒だ。測定してみると,およそ860くらいなのでこれも善戦している。というより,NVMeだと思うと遅いが,SSDだと思えばこの値はUSB接続だと10G以上で接続しないと出せない。それが手のひらサイズのコンピュータの内部で実現できていると考えればメチャ速なのかもしれん。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 858.081
Sequential Write (1M) 842.906
Random Read (512K) 725.156
Random Write (512K) 804.739
Random Read (4K) 39.577
Random Write (4K) 198.706
Random Read (4K-iodepth=32) 309.954
Random Write (4K-iodepth=32) 506.313
ついでにPCI3.0の状態のままUnixBenchを起動。やはりファイルの読み書きが速くなった効果はあるようで,昨年四月が1CPUで1476.2と4CPU並列で3617.3だったのに対し,1CPUで1669.3,4CPU並列で4547.3だ。1〜2割の向上はあるようだ。
------------------------------------------------------------------------
Benchmark Run: Sun Nov 02 2025 18:32:01 - 18:59:59
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 35682380.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 7008.5 MWIPS (9.9 s, 7 samples)
Execl Throughput 5842.4 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 912306.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 292555.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 2374827.1 KBps (30.0 s, 2 samples)
Pipe Throughput 1565118.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 171246.5 lps (10.0 s, 7 samples)
Process Creation 10636.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 11745.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 3599.6 lpm (60.0 s, 2 samples)
System Call Overhead 1052848.5 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 35682380.6 3057.6
Double-Precision Whetstone 55.0 7008.5 1274.3
Execl Throughput 43.0 5842.4 1358.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 912306.0 2303.8
File Copy 256 bufsize 500 maxblocks 1655.0 292555.8 1767.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 2374827.1 4094.5
Pipe Throughput 12440.0 1565118.4 1258.1
Pipe-based Context Switching 4000.0 171246.5 428.1
Process Creation 126.0 10636.4 844.2
Shell Scripts (1 concurrent) 42.4 11745.4 2770.1
Shell Scripts (8 concurrent) 6.0 3599.6 5999.3
System Call Overhead 15000.0 1052848.5 701.9
========
System Benchmarks Index Score 1669.3
------------------------------------------------------------------------
Benchmark Run: Sun Nov 02 2025 18:59:59 - 19:27:57
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 142349270.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 28054.7 MWIPS (9.9 s, 7 samples)
Execl Throughput 17238.2 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 2325940.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 1136555.2 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 2586130.5 KBps (30.0 s, 2 samples)
Pipe Throughput 6213530.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 576699.7 lps (10.0 s, 7 samples)
Process Creation 29643.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 26249.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 3544.4 lpm (60.0 s, 2 samples)
System Call Overhead 4218830.0 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 142349270.8 12197.9
Double-Precision Whetstone 55.0 28054.7 5100.9
Execl Throughput 43.0 17238.2 4008.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 2325940.0 5873.6
File Copy 256 bufsize 500 maxblocks 1655.0 1136555.2 6867.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 2586130.5 4458.8
Pipe Throughput 12440.0 6213530.0 4994.8
Pipe-based Context Switching 4000.0 576699.7 1441.7
Process Creation 126.0 29643.6 2352.7
Shell Scripts (1 concurrent) 42.4 26249.6 6190.9
Shell Scripts (8 concurrent) 6.0 3544.4 5907.4
System Call Overhead 15000.0 4218830.0 2812.6
========
System Benchmarks Index Score 4547.3
グラフィックソフトウェアのAffinityのv3が出て,しかもまさかの無料化。おいらもIntelMacでPowerPCコードのアプリが使えなくなった時点でIllustratorからAffinity(当時はv1)に乗り換えたのだが,ここにきてまさかの無料化だ。開発元のSerifが去年オーストラリアのCanvaに買収されてからしばらく動きがなかったもの。Canvaはいわゆる無料で使えるクラウド型のグラフィックソフトなのだが,その中にCanva AIっていう有料の生成AI機能がある。このAIに適当な指示を出すと,それっぽいグラフィックを出力してくれるのだ。Affinityの無料化は,従来のツールで稼ぐビジネスモデルではなく,ツールはあくまでも有料のクラウドAIの入り口であって,そのツールを幅広く使ってもらうための無料化らしい。これはもしかしたらAdobeの牙城を崩せるかも。その前にAIで安請合グラフィックデザイナーの仕事がなくなってしまうかもしれんが。で,昨日のうちにダウンロードしておいたので,動かしてみた。起動時にライセンス確認が入るが,オフラインでも起動できるらしい。縦書きは相変わらずできないが,横書きソフトで使える縦書きフォント(文字が90度横倒しになっているフォント)が存在するので,そのフォントを使う限りは大きな問題ではない。v2との違いは少しずつ消化できそうな感じ。
部屋の片付けをしていたら以前使っていたRaspberry Pi 4 8GBがでてきた。Pi 5は何かのサーバに使おうと思ってNVMeを載せた状態で温存しているのだが(単に構築する暇がないだけとも言う),Pi 4も出たときに買ってたのだっけ。こちらは完全ファンレス仕様のアルミヒートシンクケースに入れてある。うーん,ファンレスがありがたいのでサーバ用途ならこっちをUSB-SSDで運用した方が良いかなという気もしてきた。USB-SSD上にシステムを構築して,データディスクは別のUSB-SSDかNASを使用。システムが飛んだときの為にUSB-SSDはシステム構築後にイメージをどこかにコピーしておく運用とかどうだろう。交換時に分解不要な分,NVMeより楽かもしれない。さっそくバッファローの親指サイズSSD SSD-PST250U3BAをつけてRaspberry Pi Imager でOSインストール。10月から最新版はBookwormからTrixieベースになった。これだけで準備OK。USB-SSDを刺して電源を入れるだけ。microSDがついたままだとそっちから起動するので外しておく。Pi 4のUSBストレージ起動は昔は面倒だったが今は簡単なのだ。起動後,apt full-upgradeでファイル群を最新に更新した後,例によってUnixBenchを走らせてみる。CPU性能でPi 5の1/2〜1/3くらい。ファイル性能はもっと遅いがMicroSDよりは断然マシ。くらいか。
------------------------------------------------------------------------
Benchmark Run: 土 11月 01 2025 21:29:54 - 21:58:05
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 19367957.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3244.2 MWIPS (9.8 s, 7 samples)
Execl Throughput 1619.0 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 312561.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 106632.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 683031.8 KBps (30.0 s, 2 samples)
Pipe Throughput 631557.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 61308.4 lps (10.0 s, 7 samples)
Process Creation 2853.3 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3526.9 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1242.6 lpm (60.0 s, 2 samples)
System Call Overhead 408879.6 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 19367957.5 1659.6
Double-Precision Whetstone 55.0 3244.2 589.9
Execl Throughput 43.0 1619.0 376.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 312561.4 789.3
File Copy 256 bufsize 500 maxblocks 1655.0 106632.8 644.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 683031.8 1177.6
Pipe Throughput 12440.0 631557.9 507.7
Pipe-based Context Switching 4000.0 61308.4 153.3
Process Creation 126.0 2853.3 226.5
Shell Scripts (1 concurrent) 42.4 3526.9 831.8
Shell Scripts (8 concurrent) 6.0 1242.6 2071.0
System Call Overhead 15000.0 408879.6 272.6
========
System Benchmarks Index Score 591.3
------------------------------------------------------------------------
Benchmark Run: 土 11月 01 2025 21:58:05 - 22:26:18
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 77269325.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 12988.4 MWIPS (9.8 s, 7 samples)
Execl Throughput 3848.4 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 947171.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 403380.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1460320.5 KBps (30.0 s, 2 samples)
Pipe Throughput 2501387.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 223062.7 lps (10.0 s, 7 samples)
Process Creation 7209.7 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 9417.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1276.7 lpm (60.1 s, 2 samples)
System Call Overhead 1637727.1 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 77269325.3 6621.2
Double-Precision Whetstone 55.0 12988.4 2361.5
Execl Throughput 43.0 3848.4 895.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 947171.4 2391.8
File Copy 256 bufsize 500 maxblocks 1655.0 403380.9 2437.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 1460320.5 2517.8
Pipe Throughput 12440.0 2501387.7 2010.8
Pipe-based Context Switching 4000.0 223062.7 557.7
Process Creation 126.0 7209.7 572.2
Shell Scripts (1 concurrent) 42.4 9417.6 2221.1
Shell Scripts (8 concurrent) 6.0 1276.7 2127.8
System Call Overhead 15000.0 1637727.1 1091.8
========
System Benchmarks Index Score 1722.0
速度測定ツールのfioで測定するとこんな感じ。ジョブファイルは標準的なものを作成。読み書きのサイズは1G。出力はterseを指定するとセミコンマ区切りの数字の羅列になる。3番目がジョブ名,7番目がリード速度,48番目がライト速度なので,そいつらをawkで選択表示。まぁ,Pi 5のPCIe接続NVMeとPi 4のUSB-SSDを比較するのはヤボだが,それでもMicroSDよりは断然速そうだ。
$ export TARGET=/var/tmp ; fio -f /var/tmp/jobfile --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Sequential Read (1M) 307.5
Sequential Write (1M) 248.89
Random Read (512K) 269.349
Random Write (512K) 232.242
Random Read (4K) 22.822
Random Write (4K) 35.802
Random Read (4K-iodepth=32) 111.693
Random Write (4K-iodepth=32) 94.423
