小型で低コストなSDR環境を作る!ラズパイ4でUSRP B200miniを動かす(2) ディスクベンチマーク編

こんにちはドルフィンシステム福島です。

前回に引き続いて、ラズパイ4でUSRPを動かしてみます。

前回まででUSRP関連ツールのインストールが完了しUSRPの認識を確認しましたので、今回はラズパイ4でUSRPを動かしてみます。

前回 小型で低コストなSDR環境を作る!ラズパイ4でUSRP B200miniを動かす(1)

サンプルを起動する

UHDのサンプルを動かしてみます。
UHDのサンプルは、
/usr/lib/uhd/examples/
に入っています。

下記のようにして簡易スペアナを起動し、USRP B200miniに入力した信号を観測します。入力信号は 802.11aです。

$ /usr/lib/uhd/examples/rx_ascii_art_dft --rate 50e5 --freq 20e8 --gain 50



※ 送信信号送出方法
$ /usr/lib/uhd/examples/tx_samples_from_file --rate 10e5 --freq 20e8 --file 11a\ -\ 20MHz\ -\ 64QAM\ -\ Nopeak.dat  --repeat --gain 40

ディスクベンチマークをします

無事UHDサンプルが動作しましたので、次に収録ベンチマークをします。
ですがその前にラズパイ4でIQデータ収録をさせる場合、どの程度のレートで書き込みできるのかディスクベンチマークを行います

ディスクベンチマークは、LinuxがインストールしてあるmicroSDカードと、USB 3.0接続のUSB SSDの両方で行います。

exfatを読み書きできるようにしてマウントする

事前に、USB SSDはWindowsと相互に読み書きが出来るようにWindowsでexfatでフォーマットしておきます。
そしてUbuntuでもexfatが読み書きできるように設定を行います。

まずLinuxでexfatを読み書きできるソフトをインストールします。
$ sudo apt install exfat-fuse exfat-utils

次に、ラズパイ4のUSB 3.0ポートにUSB SSDを挿入し、下記のようにfdiskでどのデバイス名で読み込まれたか確認します。
/dev/sdb1のようですね。

$ sudo fdisk -l 
デバイス   起動 開始位置  最後から    セクタ サイズ Id タイプ
/dev/sdb1           2048 250066943 250064896 119.2G  7 HPFS/NTFS/exFAT

次に、USD SSDのマウントポイントを作成し、マウントします。

$ sudo mkdir /mnt/usb
$ sudo mount -t exfat /dev/sdb1 /mnt/usb/

※マウント時に「mount: /mnt/usb: 未知のファイルシステムタイプ 'exfat' です.」と表示されたら、exfat-fuse exfat-utilsがインストールされていません。

fioコマンドのインストールとセットアップ

aptでfioをインストールし、ベンチマーク設定ファイルを作成します。
fioのインストールと使い方は以下のページを参考にしました。

LinuxでもCrystalDiskMarkぽいディスクベンチマークしたい

fioによるベンチマーク結果

Samsung EVO Plus 32GB (microSD)

fioコマンド出力結果

$ sudo fio -f /tmp/fio.txt --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Seq-Read 41.463
Seq-Write 24.32
Rand-Read-512K 38.818
Rand-Write-512K 22.723
Rand-Read-4K 7.299
Rand-Write-4K 0.504
Rand-Read-4K-QD32 9.611
Rand-Write-4K-QD32 0.3

結果は?

このmicroSDの最大転送レートはメーカーのHPによると、
Read: 95MB/s
Write: 20MB/s
です、実際にベンチマークをしてみると、
Read : 41MB/s
Write : 24MB/s
と、若干遅め。PCでは、
Read : 92MB/s
Write : 34MB/s
は出ているので、CPUが足を引っ張っているのか?

Sumsung 840 Pro 128GB (USB SSD), exfat

fioコマンド出力結果

$ sudo fio -f /tmp/fio.txt --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}'
Seq-Read 133.372
Seq-Write 248.831
Rand-Read-512K 40.081
Rand-Write-512K 53.148
Rand-Read-4K 0.478
Rand-Write-4K 0.469
Rand-Read-4K-QD32 0.483
Rand-Write-4K-QD32 0.486

結果は?

このmicroSDの最大転送レートはメーカーのHPによると、
Read: 530MB/s
Write: 390MB/s
です、実際にベンチマークをしてみると、
Read : 133MB/s
Write : 248MB/s
ReadもWriteも遅いですね。これはラズパイのCPUが原因かも。
以前、Windowsでベンチマークした際は、
Read : 446MB/s
Write : 436MB/s
でした。

Windows上での結果


まとめ

  • UHDサンプルのrx_ascii_art_dftで簡易スペアナとして動作した
  • microSDは、PCよりも遅いレートだった
  • USB SSDは、PCよりも遅いレートだった
  • ストレージのベンチマーク結果が遅いのは、CPUが足を引っ張っている可能性あり

今回はUSRPというよりも半分はラズパイのベンチマークになってしまいましたね。
UHDの使い方を期待された方は、ちょっと期待外れだったかもしれません。
ですが事前にディスクベンチマークを取っておくことは非常に大事なのです。

次回USRPを使った収録ベンチマークを行います。

以上、ドルフィンシステム福島でした。


コメント