- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
こんにちはドルフィンシステム福島です。
今回は、USRP B200, B200miniで収録可能なIQレートのベンチマーク結果をご紹介します。
USRP B200は何が難しいのか?
お客様からのお問い合わせで「USB接続のUSRP B200でノートPCと接続して使いたい」というものが良くあります。持ち運びも容易で手軽にソフトウェア無線の実験系を作りたいというのが趣旨で、ノートPCにケーブル一本で接続可能なUSRP Bシリーズの組み合わせを検討しているというものです。
一番問題になるのが収録IQレートのスピード。
例えば、無線LANを観測するなら最小20MHz BWが必要でIQレートは25Mspsが必要になります。
USRP→PC間のレートが100MB/s。
実は、これを安定したデータ収録をさせるのが難しいのです。
連続してIQデータを受信することが出来ず、取りこぼしてしまうことがあるのです。
以前取得したベンチマークの結果(下記のリンク)を見ると、Windowsでは20MHz BWを取得するとデータ落ちが発生します。つまりUSRPからIQデータの取得が間に合っていません。
2016/6/16
NI USRP-2900(Ettus B200)の動作は不安定。IQレートのベンチマークとGPSなど
http://mikioblog.dolphinsystem.jp/2016/06/ni-usrp-2900ettus-b200.html
上記のベンチマークは「USRPからIQデータを取得してデータ落ち回数をカウントする」だけのベンチマークでしたが、今回は実運用に近い方法でベンチマークを取得してみます。
ベンチマークの概要
ベンチマークの目的は「B200でどのIQレートまで安定的に収録できるか?」を探ります。(再生は又後日)
USRP制御用ソフトウェアUHDには"rx_samples_to_file"という、USRPからIQデータを取得し保存するサンプルソフトがありますので、これを1分間連続動作させてデータ落ちが発生する回数を計測します。
また下表のようにIQレートを変えたり、OSによる差異やCPUの動作周波数設定(CPU Governor)による差異、ファイルの保存ありなしも条件に加えて計測します。
計測内容
テスト項目
|
内容
|
OS
|
Ubuntu
Linux(18.04)とWIndows10
|
IQレート
|
5Msps~60Msps
|
ファイル保存
|
「IQデータ取得のみ」
と、 「IQデータを取得してファイルに保存」 |
CPU動作周波数
|
PowerSave
(省電力。Linuxのデフォルト)
Performance (最大動作周波数で稼働) |
ベンチマーク方法
|
連続1分間動作させ、その間のデータ落ち回数を計算する
|
※CPU動作周波数の設定法
Windows : 「電源のプロパティ」の電源プランを「究極のパフォーマンス」に設定
Linux : $ cpufreq-set performanceコマンドを実行する
ベンチマークを取得するソフトウェア
ソフトウェア名
|
内容
|
UHDのバージョン
|
3.14.1
|
rx_samples_to_file
|
USRP制御用ソフトウェアUHDに含まれているUSRPからIQデータを取得し保存するサンプルソフト
|
rx_samples_to_file_optimized
|
rx_samples_to_fileを元にドルフィンシステムで最適化したソフト。
IQ取得と保存以外にも、取得したIQデータから1秒間に1回RSSIを計算する機能もあり。 |
※コマンドライン引数(5Mspsの場合)
--duration 60 --null --freq 20e8 --rate 5e6 --spb 10000
計測に使用したPC
ベンチマークの結果
UHDサンプルソフトのベンチマーク結果 (Linux)
まずUHDサンプルソフトをLinux上で動作させた結果を見てみます。CPUの動作モードにかかわらず同じ傾向で、IQデータを取得するだけならデータ落ちは発生していません。ただしIQデータを保存させた途端、データ落ちが必ず発生しています。
5Mspsでも60Mspsでもデータ落ち回数は大きくは変わらないのは不思議なところです。
5Mspsと60Mspsでは保存するデータ量も12倍違うので、データ落ち回数も増えても良さそうですが。
IQ Rate
|
MB/s
|
powersave
IQ取得のみ
|
powersave
ファイル保存
|
performance
IQ取得のみ
|
performance
ファイル保存
|
5
|
20
|
0
|
7
|
0
|
6
|
10
|
40
|
0
|
11
|
0
|
10
|
15
|
60
|
0
|
15
|
0
|
15
|
20
|
80
|
0
|
32
|
0
|
34
|
25
|
100
|
0
|
43
|
0
|
35
|
30
|
120
|
0
|
51
|
0
|
41
|
35
|
140
|
0
|
55
|
0
|
53
|
40
|
160
|
0
|
69
|
0
|
68
|
45
|
180
|
0
|
73
|
0
|
22
|
50
|
200
|
0
|
81
|
0
|
8
|
55
|
220
|
0
|
85
|
0
|
12
|
60
|
240
|
0
|
91
|
0
|
10
|
ドルフィンで最適化したもの (Linux)
UHDサンプルをベースに弊社で最適化したソフトのベンチマーク結果を見てみます。こちらもIQデータを取得するだけならデータ落ちは発生していません。
ファイル保存を行っても30Mspsまではデータ落ち無しで、最適化の効果が大分出ています。
IQ Rate
|
MB/s
|
powersave
IQ取得のみ
|
powersave
ファイル保存
|
performance
IQ取得のみ
|
performance
ファイル保存 |
5
|
20
|
0
|
0
|
0
|
0
|
10
|
40
|
0
|
0
|
0
|
0
|
15
|
60
|
0
|
0
|
0
|
0
|
20
|
80
|
0
|
0
|
0
|
0
|
25
|
100
|
0
|
0
|
0
|
0
|
30
|
120
|
0
|
0
|
0
|
0
|
35
|
140
|
0
|
2
|
0
|
2
|
40
|
160
|
0
|
1
|
0
|
0
|
45
|
180
|
0
|
2
|
0
|
0
|
50
|
200
|
0
|
4
|
0
|
11
|
55
|
220
|
0
|
65
|
0
|
93
|
60
|
240
|
0
|
230
|
0
|
88
|
ちなみにドルフィンで最適化したものは、IQデータを取得し保存しながら1秒間隔でRSSIの計算も行っています。
RSSI計算をしない場合と、1ms間隔で計算を行った場合のベンチマーク結果も上げておきます。
RSSI計算をしないとデータ落ちは多少緩和され、1ms間隔でRSSIを行うとデータ落ちが増えます。それなりにCPU負荷が高い事が分かります。
IQ Rate
|
MB/s
|
powersave
IQ取得のみ
|
powersave
ファイル保存
|
performance
IQ取得のみ
|
performance
ファイル保存 |
5
|
20
|
0
|
0
|
0
|
0
|
10
|
40
|
0
|
0
|
0
|
0
|
15
|
60
|
0
|
0
|
0
|
0
|
20
|
80
|
0
|
0
|
0
|
0
|
25
|
100
|
0
|
0
|
0
|
0
|
30
|
120
|
0
|
0
|
0
|
0
|
35
|
140
|
0
|
2
|
0
|
2
|
40
|
160
|
0
|
1
|
0
|
0
|
45
|
180
|
0
|
2
|
0
|
0
|
50
|
200
|
0
|
4
|
0
|
11
|
55
|
220
|
0
|
65
|
0
|
93
|
60
|
240
|
0
|
230
|
0
|
88
|
更なる安定化の道筋
UHDサンプルを最適化してもデータ取得の構造上限界があります。それはキャッシュです。
USRPをPCI Express接続で接続した場合、デバイスドライバのキャッシュが数MBあります。
イーサネット接続した場合は、PC上のデバイスドライバのキャッシュが最大2MBまで拡大できます(Intelの場合)。
ですが、USB接続のB200の場合はFPGAに用意している8KB(確か)のバッファがあるのみです(USBドライバにもあるかもしれませんが手出しできないので無いものとする)。
8KBはサンプル数に直すと2K sample分になりますので、IQレート20Mspsの場合は1ms分のデータをためられるバッファになります。
という事は受信側ソフトは1ms以内にUSRPからIQデータを取得しないと、データが上書きされて=データ落ちという現象になります。60Mspsなら333usです。
これ以上安定化させるにはFPGAに手を入れるしかありません。
実は以前、ドルフィンシステムでは2016年にFPGAのバッファを増量するなどを行い安定化させたことがあります。
今回のベンチマークでは環境を構築することが出来なかったためベンチマークはしていません。
USRP B200で安定動作をお望みの場合は、ご相談下さい。
まとめ
• UHDサンプル(rx_samples_to_file)は、常にデータ落ちが発生していた• CPUの動作周波数設定で最大動作周波数で動かすとデータ落ちが減少した
• 最適化を施すことで、35Mspsまではデータ落ちを回避することが出来た
• さらに安定化させるにはFPGAに手を入れることが必要
お客様から、
「ノートPCとB200で収録 or 電力計測 もしくは信号処理をしたいのですが、出来ますか?」
という質問を頂くことが多いのですが、
「うーん。ちょっとやってみないと分からないですね。」
と言葉を濁していました。同時に実行している他のタスクがCPUパワーを使うとUSBデータ落ちが発生するので「状況による」としか答えられていませんでしたが、実のところ詳細なベンチマークを少しサボっていました。
(ちなみに次回はWindows上でのベンチマークをお届けしますが、Windows上では全然ダメな事は分かっています。)
実際にやってみないと分からないことが多いのがソフトウェア無線の宿命ですが、今回ベンチマークを取得したことでB200がどの程度使えるのか目安になるのではと思います。
USRP B200で安定動作をお望みの場合は、ご相談下さい。
コメント
コメントを投稿