2015年1月8日木曜日

パフォーマンスの比較

気がついてみると、もう一年も経つんですね。
はやいもんですなぁ。
どうりでおっさんになるわけだ。やむをえない。
かなりほったらかしにしていましたが、ヒマをみてぼちぼちとやっていきます。

さて、パフォーマンス比較ですがやっとこさまとめました。
といっても、たいした結果が出たわけではないのですが…
先に言っておくとほとんど変わりがありませんでした。 

時間もあいて前回とは別にまた新たにビルドしたりしましたので、
ここで現状の実験に使った環境を整理しておきます。

比較は3種類で、yoctoのGCCを使ったarmv6, armv6hfとlinaroのarmv6hfです。
linaroはプリビルドのツールチェインではなく、yoctoでビルドされたツールチェインです。
linaroのパッチはあたってるものと信じています(w 

各レイヤのハッシュは下記の通りで、実験時点でのdaisyのHEADです。
実験時点でdizzyも出ているのですが、daisyを使ったのは、
raspberrypiでdizzyのブランチが見つからないためです。
meta
meta-yocto
meta-yocto-bsp = "daisy:9bb6f7f3f00c66abe45e97286323496694ef1609"
meta-raspberrypi = "daisy:946b69299737cc2f1378c864f1b9075280db1b53"
meta-oe
meta-networking = "daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa"
meta-linaro
meta-linaro-toolchain = "daisy:bc63e777ad2748b8bfa7fa70ffd74700fa21a567"
これで、core-image-satoをビルドしました。
その時のカーネルサイズと展開後のrootfsのトータルサイズをdu -sbで調べたものが下記です。

imagearmv6armv6hflinaro-armv6hf
kernel6,371,5326,371,5326,346,956
rootfs163,050,467162,170,553161,962,637

サイズとしてはそれなりに違いますね。armv6とlinaro-armv6hfとではrootfsで1Mほどサイズが違いますね。

次に、パフォーマンスの比較に使ったのは、lmbenchです。
 今までnbenchでやってきましたが、結果の見方がいまいちよくわからないのと、
コードも古そうなので浮気しましたw
lmbenchもすべてやったわけではなく、下記の表の項目のみです。
networkやdisk ioなどは飛ばしています。


testarmv6armv6hflinaro-armv6hf
integer bit1.461.461.47
integer add1.531.531.53
integer mul7.357.347.35
integer div140.81140.66140.69
integer mod49.0749.1048.98
int64 bit2.942.942.93
uint64 add3.213.203.21
int64 mul14.7014.7314.71
int64 div543.82544.35544.77
int64 mod352.95353.23355.10
float add11.6311.6511.67
float mul11.6211.6411.63
float div27.6827.6527.70
double add11.6411.6611.67
double mul13.1013.1113.11
double div48.0648.1448.13
float bogomflops67.7767.8767.97
double bogomflops89.6389.6789.97
lat_pipe44.6943.6947.07
lat_ctx -s 128k processes 4224.94221.91247.12
lat_sem5.956.386.15
bw_mem 1M rd187.02187.16186,62
bw_mem 1M wr1484.261483.321483.03

結果はそれぞれ3回試行して平均をとってあります。

それなりに傾向が出ているところもあるんですが、
全体的にはほとんど差がないというところかと思います。
hfのほうが若干悪いようにみえるところもありますね。