ZYNQのGigabitEtherの速度を測定
ZYNQのGigabitEtherがどの程度の速度が出るのかをもう少し丁寧に測ってみました。
昨日の結果ではWindowsのIISをサーバとして測るのが良いとわかったので、今日は様々なサイズのファイルを用意して測ってみます。
使ったZYNQボードはCosmo-Zです。
測り方は以下のとおりです。
- Windows 10のマシンでIISを動かし、FTPサーバを動かす
- ZYNQのボードとWindows10のマシンをGigabitEtherでつなぐ
- ZYNQのLinuxからFTPで16~256MByteの乱数ファイルをPUT/GETする
というものです。
まず、ddを使って乱数ファイルを作ります。
dd if=/dev/urandom of=rand16 bs=1048576 count=16
これで16MByteの乱数ファイルが出来ます。同様に32,48,64,80,96,128,160,192,256MByteのファイルを作っておきます。
そして、WindowsのFTPサーバにログインして、バイナリモードにして、PUTやGETを行います。
軽くやってみたところ、
ftp> get random
local: random remote: random
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
258207980 bytes received in 3.48 secs (72419.1 kB/s)
と、72Mバイト/秒でています。560Mbps相当だから明らかに100Mbpsを超えていてGigabitEtherの性能が出ているな・・と思ったのですが、実行するたびに速度が変わることに気が付きました。
おそらく、これらのファイルをSDカードに入れているから、何らかのキャッシュが効いてしまっているためでしょう。
そこで、連続して2回同じファイルを転送しないようにして測ってみました。
・PUT from SD・・ZYNQのLinux上でPUTする(SDカードは読み出し)
・GET to SD・・・ZYNQのLinux上でGETする(SDカードは書き込み)
を意味します。
結果としては、転送サイズが50Mバイトを超えるあたりで速度が急に下がってしまい、それ以後は20Mバイト/秒前後に収束するというものでした。おそらく、この速度はSDカード上のファイルをアクセスするためのキャッシュのサイズなのでしょう。
これだとSDカードのベンチマークをしているにすぎないので、LinuxでRAMDISKを作成し、RAMDISK上に乱数ファイルを置いて試してみました。
その結果ですが、RAMDISKの場合はほとんど速度が下がることなく転送することができました。
bpsに直してみます。
このZYNQのシステムのメモリ帯域は5Gbyte/sくらいあるので、RAMDISKの帯域がそれほど問題になることはないでしょうから、TCPによる通信速度がほぼ見えていると考えられます。
結果、GETは600Mbps弱、PUTは約400Mbpsという感じでした。
| 固定リンク





コメント