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

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

ProDHCPの性能評価

»

当社のDHCPサーバ製品である「ProDHCP」の性能のお問い合わせをいただき、最新版で厳密に測定していなかったので、評価環境を何とか準備して測定してみました。

DHCPのアドレス貸し出しの基本的な動きは、

クライアント→サーバ:DISCOVER
クライアント←サーバ:OFFER
クライアント→サーバ:REQUEST
クライアント←サーバ:ACK

というやりとりをUDPで行う感じになります。これを自作したDHCP負荷テストツールで試験する感じになります。
設定により、貸し出すアドレスをICMP(ping)で重複チェックすることも可能で、その有無でも当然性能は変わってきますし、ProDHCPは冗長構成も可能なので、リース情報の同期を行うかどうかでも性能に差が出ます。そのあたりを一通り測定しました。

また、そもそも何万件まで貸し出しができる状態で運用できるか、さらに、何万件も貸しだした状態で設定変更をどのくらいの速度で反映できるかなども評価ポイントです。

8万円くらいのサーバ機にLinuxをインストールし、そこでProDHCPを実行し、他のホストから負荷ツールでテストする感じで実験しました。

一応ProDHCPは10万件以上のリースを管理した状態で、数秒で設定変更の反映が可能、というのが売りなのですが、実際にやってみると最近のサーバ機は安くても性能が高いおかげもあり、20万件でも1秒で、100万件でも15秒で設定変更が完了します。貸し出し自体も高負荷状態でも1秒程度で貸し出しを完了できます。単発であればICMPチェックなしなら0.001秒、ICMPチェックありでも0.4秒と高速です。ICMPチェックは0.3秒でタイムアウトを判断する設定なので、ほぼその通りの結果です。

ProDHCPの特徴として、マルチタスクで動いていないことがあります。サーバプログラムは一般的に並列処理を行うためにマルチプロセスやマルチスレッドを使うことが多いのですが、排他処理で性能が落ちたり、問題が残ったりすることが多いものです。DHCPはUDPでの通信なので、並列化しなくても十分作れます。そのおかげで高負荷時に不可解な問題が発生しにくいのです。某ISPさんでの運用も既に2年くらいになりますが、プログラム自体の問題は発生していません。

先日、ソリトンシステムズさんでOEM採用をいただきましたし、カスタマイズも含めたソフト提供は自社でも続けますし、ますます活躍させたいと考えています。

負荷テストや性能評価って、なぜかワクワクするのですよねぇ。

Comment(0)