オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

製品の性能向上と裏話

»

このところ高性能DHCPサーバ「ProDHCP」の話題が多いのですが、お問い合わせが多いので気分的にも盛り上がっているためでして。。

今日は、かなり大規模な状態での、ProDHCPの性能面でのメリットを紹介しながら、その背景を書いてみようかと思います。

比較対象はLinuxに標準で付いてくる、オープンソースの「ISC DHCP Server」です。ISCのDHCPサーバは実は様々な製品のDHCPサーバにもベースとして使われていて、各社で性能をUPしたり、独自拡張を行ったり、管理用のユーザインターフェースを用意したりして製品化しています。DHCPサーバというと、単にクライアントにIPアドレスを割り当てるだけ、というイメージかもしれませんが、実はそんなにシンプルではなく(気になる方はISCのDHCPサーバのソースのボリュームを見てみてください!)、非常に多くの情報を提供したり、あるいは割り当てのルールを細かく制御したりすることができ、それほど簡単に作れる規模ではありません。実は私もDHCPサーバをフルスクラッチで自作した際には「このくらい簡単だろう」と考えたのですが、3日でプロトタイプを作り、2週間後からお客さんの方で結合テストが始まるところまでは何とかなったものの、そこから非常に多くの機能の作り込みにうんざりしたものでした。ということで、実はISCのをベースにしていないフルスクラッチのDHCPサーバというのはそれほど存在しないのです。

ということで、ISCとの性能比較を見ながら行きましょう。例によってまだホームページにも公開していないデータをブログにUPしています。
20110920_200132

DHCPサーバの性能のポイントは、払い出し性能と、設定反映時間(起動に必要な時間)ではないかと思います。

今回測定したのは、100万IPでさらにホスト定義が100万個ある設定、200万IP、700万IPという感じです。実はある案件でこういう規模での相談が来ていたもので。

払い出し性能は、ProDHCPが圧倒的な高性能をたたき出しています。100万IPなら秒間600以上、200万IPでも秒間300以上、700万IPでも秒間100を超えています。実はこれだけ速いと、自作のDHCP負荷テストツールで待ちなしでリクエストを投げ続けても全てさばくことができるくらいです。先日までのバージョンだとProDHCPも秒間15くらいしかさばけなかったのです。高速化のポイントは、設定情報の検索の高速化でした。これだけの設定だと、設定自体もかなりのボリュームになり、その中からターゲットのセグメントやホストの設定情報を探すだけでもかなりのループを回る必要があったのです。そこを全てハッシュ検索に置き換え、これだけの性能にしました。払い出しIPアドレスの決定自体はもともと高速に行えるような構造にしていたのですが、ここまで設定情報が巨大な運用は、当時は全く想定していませんでした。。

次に、設定反映時間、つまり、設定を変更して再起動するのに必要な時間も運用ではとても重要です。その間クライアントにIPアドレスを払い出せないからです。測定結果では、200万IPくらいまでが限界でしょう。さすがに1分を超えるとかなりのユーザが困ると思います。もっとも、設定変更の頻度と、リース時間にもよりますが。設定変更の高速性はProDHCPの売りの一つでしたが、最近はISCのDHCPサーバも速くなってきました。リース情報の持ち方が変わってきましたね。設定変更で時間がかかるポイントは、前の設定で動いていたときのリース状態を、新しい設定に反映させる処理です。これだけの件数になるとかなり時間がかかってしまいます。もっとも、これだけの規模になると、設定情報の整合性をチェックし、読み込むだけでも相当時間がかかります。。

人間、贅沢なもので、この結果をお客さんにお見せすると、「どうせならもっと速く・・・」と思うようで・・・。
整合性チェックなどを省略すれば単純に速くなるのですが、それは運用に影響が出ますからねぇ。。

製品の性能向上と、その裏話、という感じの話題でした。

Comment(0)