ono
2015年6月25日 10時16分
Armadillo-230で受けたUDPパケットを別の装置へ転送したいと考えています。
受けるデータのレートは最大約35Mbpsで、これを一度蓄えてから準リアルタイム(約35Mbps)で転送を行いたいのですが、
蓄えるためにはSDRAMを用いることになるので、ネックとなるのがSDRAMの読み書き速度だと考えています。
上記のレート(読み書き同時で各35Mbps)での読み書きは可能でしょうか。
また、もしご存知でしたら読み書きの速度を教えて頂きたく思います。
よろしくお願い致します。
コメント
ono
ご回答ありがとうございます。非常に参考になります。
状況としては以下を想定しておりました。
PC-A <----> A230-eth0 <---> A230-eth1 <----> PC-B
UDPパケットでしたらスループットは高くなるとのことで、おおむね35Mbpsは出そうだということは理解いたしました。
追加で質問させていただきたいのですが、
想定していたコンフィグレーション(PC-A <----> A230-eth0 <---> A230-eth1 <----> PC-B)での転送速度は、
eth0のみを使う場合(PC-A <----> A230-eth0 <----> PC-B)よりも低くなっておりますが、
両者では必要なCPUパワーに大きな差はないと考えております。
このことからすると、eth01とeth02を使った場合の速度のネックはeth1のEthernetコントローラにあると考えておりますが、この推論で正しいでしょうか?
(CPUでパケットの転送とは別の軽いプログラムを同時に走らせる必要があるため、CPUパワーに少しは余裕があることを確認したく思っております。)
at_takashi.sasayama
笹山です。
> 想定していたコンフィグレーション(PC-A <----> A230-eth0 <---> A230-eth1 <----> PC-B)での転送速度は、
> eth0のみを使う場合(PC-A <----> A230-eth0 <----> PC-B)よりも低くなっておりますが、
> 両者では必要なCPUパワーに大きな差はないと考えております。
>
> このことからすると、eth01とeth02を使った場合の速度のネックはeth1のEthernetコントローラにあると考えておりますが、この推論で正しいでしょうか?
> (CPUでパケットの転送とは別の軽いプログラムを同時に走らせる必要があるため、CPUパワーに少しは余裕があることを確認したく思っております。)
vmstat 1 コマンドで、ネットワークスループット最大時のCPU使用率を、1秒毎に計測してみました。
結果としてはCPU使用率はいずれも 100% に到達していました。
以下、テスト結果を記載します。
■PC-A <----> A230-eth1 <----> A230-eth1 <----> PC-B 最大スループット:30 Mbps CPU使用率 :100 % 割り込み回数 :5096 /秒 vmstatの実行間隔:1秒をキープ vmstat結果 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 14848 7932 3140 0 0 0 0 5096 9 0 100 0 0 ■PC-A <----> A230-eth0 <----> PC-B 最大スループット:41 Mbps CPU使用率 :100 % 割り込み回数 :132090 /秒 vmstatの実行間隔:20~30秒 vmstat結果 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 4 0 0 14452 7932 3112 0 0 0 0 132090 21 0 100 0 0 ■PC-A <----> A230-eth1 <----> PC-B 最大スループット:24 Mbps CPU使用率 :100 % 割り込み回数 :302 /秒 vmstatの実行間隔:1秒をキープ vmstat結果 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 15064 7932 3112 0 0 0 0 302 8 0 100 0 0
eth1 を含む構成ですと1秒当たりの割り込み回数が eth0 だけの構成より
圧倒的に少なくなるため、アプリによっては動作は問題ないかもしれません。
(例えば、今回使用した vmstat アプリは1秒間隔で実行ができていました。)
eth0 だけの構成ですと、割り込みが頻発しておりアプリを実行する余裕は殆ど無さそうです。
■参考情報
man vmstat
http://linuxjm.osdn.jp/html/procps/man8/vmstat.8.html
at_takashi.sasayama
2015年7月1日 9時13分
笹山です。
> 上記のレート(読み書き同時で各35Mbps)での読み書きは可能でしょうか。
> また、もしご存知でしたら読み書きの速度を教えて頂きたく思います。
Armadillo-230 には 2つの Ethernet ポートが存在しますが、
それぞれ、別の Ethernet コントローラーで制御されており、
最大スループットが異なります。
どちらのポートでも最大 35 Mbps での通信は問題無さそうです。
次にパケット転送を行った場合は、どれぐらいのスループットになるかを計測してみました。
パケット転送には iptables を用い、NPtcp のTCPパケットを全て転送しています。
■NPTcp ベンチマーク結果
35 Mbps 以上で通信が可能だったのは、eth0 のみでパケット転送した場合だけでした。
精確にボトルネックとなっている箇所は解析をしていないのですが、
CPU速度と、Ethernet コントローラーの性能がネックとなっていそうです。
また、UDPパケットが転送対象とのことですので、
今回のTCPパケットでの計測結果よりは、スループットは高くなると思います。