トラフィック計測

測った。

ひたすらシェルスクリプトで測って、ひたすらシェルスクリプトで解析。

全部サーバー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