2012年5月1日火曜日

10GbEのNICを挿してみた

このエントリーをはてなブックマークに追加
Ubuntu 12.04の前日にFirefox 12がリリースされることに、Ubuntu 12.04のリリースの数日前に気が付きました。Firefox 12のリリースが4月25日の朝で、Ubuntu 12.04のリリースは4月26日の22時くらいです。Firefoxの更新の初日はピークで3.7Gbpsくらい帯域を使用し、翌日も3Gbpsを超えることがあります。特に22時以降はアメリカの東海岸のFirefoxの更新が増えるので、これがUbuntu 12.04のリリースにぶつかるとftp.jaist.ac.jpの帯域の上限の4Gbpsを超える可能性があります。そこで急きょ10GbEのNICをSun Fire T2000に挿すことにしました。

10GbEのNICは、先日紹介した新しいサーバーが2ポートのを2枚持っているので、そのうち1枚を借りました。4月25日の午前1時にサーバーを止めて10GbEで接続する作業を始めましたが、完了したのは午前4時でした。10GbEを収容する上流のルータを変更したせいではまったそうです。4月25日の未明に長時間ftp.jaist.ac.jpが止まっていたのはこのせいです。

本番ではFirefox 12への更新が初日に集中して、意外にも4月25日の昼過ぎに4Gbpsを超えて4.5Gbpsに達しました。下に示したのは出力帯域のグラフです。グラフの開始が25日の10時からなのは、データを計測するプロセスが10時まで止まっていたからです、翌日の22時以降にUbuntu 12.04がリリースされてからのピークは2.4Gbpsでした。Ubuntu 12.04に関連するアクセスはピークで720Mbps程度でした。この日に10GbEが必要なかったのが残念です。
今回は4.5Gbpsを記録しましたが、Firefoxの自動更新相手にこれ以上の数字を出すのは難しいです。CPUの処理能力が足りません。下のグラフに示した5分平均のロードアベレージのピークは77です。UltraSPARC T1は32スレッド同時に処理できるので、1スレッドあたりは2.4です。正常に処理できるロードアベレージのほぼ限界です。ちなみに、朝4時からロードアベレージが跳ね上がっているのはログの圧縮のためです。
Firefoxの自動更新でCPUに負荷が掛かるのは、一回の接続で300kBダウンロードして接続を切って10分後にまた接続するからです。このような仕様になっているのは、負荷の集中を避けるためです。しかし、この挙動は裏目で、クライアントが接続を繰り返すためリクエスト/秒を押し上げます。下のグラフに示したリクエスト/秒のピークは1950です。静的コンテンツの処理なら、それほど高い数字ではありません。
問題は中途半端に一度にダウンロードするサイズが大きいため、同時接続数もふくらむことです。下に示した接続数のグラフのピークは17,000くらいです。この接続を処理しながらリクエスト/秒をあげるのは難しいです。一度リクエストを処理してしまえばレスポンスはsendfilevで送るだけなので、頻繁に接続されるよりも一回の接続で一気にダウンロードしてもらうほうが楽なのですけど。
26日の22時ごろからのUbuntu 12.04に関するアクセスは、これまでに示したグラフでわかるようにCPUの負荷は低いです。アクセスの多くはISOイメージの取得で、一度のリクエストに対するレスポンスのサイズが大きいです。アップグレードのアクセスも一度張ったTCP接続を再利用してくれるので、接続を確立する負荷も掛かりません。このようなアクセスなら、いくら集中しても大丈夫なんですけどね。

0 件のコメント:

コメントを投稿