トラフィック計測
測った。
ひたすらシェルスクリプトで測って、ひたすらシェルスクリプトで解析。
全部サーバー1対クライアント1で実験したもの。ディスクイメージはRAMディスクに置いた。
起動時間は、ギガビットイーサネットの時は56.7秒(3回の平均)、100BASE-Tの時は66.7秒(これも3回の平均)。
非常に早い。すばらしい。
100BASE-Tはどうやって測ったかというと、ギガビットのNICとスイッチに、カテゴリ5のケーブルを使って無理矢理100BASE-Tにした。
最初はethtoolで100Mbpsと設定すれば一発!と高をくくっていたら、サポートされていない操作と言われた。
カーネルのQoS機能を使うとかスマートな方法も考えてはみたけど、近くにカテゴリ5のケーブルが転がっていたので安直に。
起動時に発生した下りトラフィックの総量は155.4MB。
トラフィックが発生しているのは、1秒〜4秒(ブートローダ)の間と、28秒周辺(足回りの起動)と、44秒(X11周りの起動)以降に集中している。
そんなこんな。グラフ書かないと。
気づいた点としては、X11の起動からGNOMEの起動完了までが2秒くらいで終わること。やけに早い。
要するにこの間の処理のボトルネックはIOなわけで、これは相手がRAMディスクで、100Mbps以上の帯域+圧縮データ転送だとHDDより早いという。
データは3倍くらいに圧縮されているから、単純に計算すると
100Mbps / 8 * 3 = 37.5MB/s
1000Mbps / 8 * 3 = 375MB/s
で、100Mbpsでも2.5インチHDDくらいは出るし、ギガビットイーサネットになると凄まじく速いわけで。
それよりもランダムアクセスが速いのがポイントか。
相手がRAMディスクじゃなくてCDだとずっと遅くなると思われる。ただし、それも2台目以降はディスクキャッシュに載るから早いと。すばらしい。
↓データの解析スクリプトを貼ってみる。VIVER 0.2を思い出す
#!/bin/bash
d=Net100-3
host=viver001635667A95
output=cal/trafic_tx_$d
echo -n > $output
endtime=$(cat $d/bootend-$host | tail -n 1 | cut -d ' ' -f 1)
cur=$(cat $d/server_tx | head -n 1 | cut -d ' ' -f 2)
wc=$(wc -l $d/server_tx | cut -d ' ' -f 1)
for num in $(seq 1 $wc);do
line=$(cat $d/server_tx | head -n $num | tail -n 1)
timer=$(echo -n $line | cut -d ' ' -f 1)
next=$(echo -n $line | cut -d ' ' -f 2)
if echo $timer | grep -q $endtime;then
break
fi
label=$(grep $timer $d/stat-$host|cut -d ' ' -f 5)
echo -e "$(expr $num - 1)\t$(expr $next - $cur)\t$(echo $label)" >> $output
cur=$next
done