DHCP負荷テストツールによる測定結果
先日からDHCP負荷テストツールを無償公開していますが、自分たちでもいろいろと確認に便利に使っています。
・予告
さて、今日は負荷試験の結果を少しまとめてみました。
予告の記事では、ProDHCPとISC-DHCPを比較していますが、どうせならMS-DHCPとも比較しようと思ったところ、MS-DHCPは圧倒的に高性能だったので、まじめに調べ直してみました。
その結果、「ping(ICMP)を使った重複検知を行うかどうか」と「ログ出力」で、かなり性能が変わることが分かりました。
ProDHCPでは、pingチェックのon/offが可能ですし、ログ出力は「syslog」と「アプリログ(独自ファイル)」の2種類に出ます。それぞれログレベルの閾値を指定できますので、出さなくすることも可能です。
DHCPサーバ側の設定は予告の記事と同じで、「/24セグメントで200万IPというそこそこの規模のdhcpd.confを準備しました」です。負荷テストツールはリレーエージェントのシミュレーションができるので、この中の1つのセグメントへの要求で負荷をかけて測定してみます。
% : lease / all : subnet : shared-network-name
====================================================================================
0% : 0 / 254 : 192.168.1.0 : noname-1
0% : 0 / 254 : 192.168.2.0 : noname-2
・・・
0% : 0 / 254 : 192.198.193.0 : noname-7873
0% : 0 / 4 : 192.198.194.0 : noname-7874
0% : 0 / 254 : 10.19.254.0 : TARGET-NETWORK
0% : 0 / 0 : 10.9.0.0 : local
Total 7876 subnets ================================================================
0% : 0 / 2000000 : ALL : ALL
●ProDHCP
★ログ出力なし
ProDHCP
ping-check off;
ログ出力なし
Finished and report: 2632 transactions per second.
ping-check on;
ping-timeout 300;
ping-send-count 3;
ログ出力なし
Finished and report: 890 transactions per second.
★ファイルログのみ
ping-check off;
file-log-level LOG_INFO;
syslog-level LOG_EMERG; // 何も出ない
Finished and report: 714 transactions per second.
ping-check on;
ping-timeout 300;
ping-send-count 3;
file-log-level LOG_INFO;
syslog-level LOG_EMERG; // 何も出ない
Finished and report: 595 transactions per second.
★syslogのみ
ping-check off;
file-log-level LOG_EMERG; //何も出ない
syslog-level LOG_NOTICE;
Finished and report: 623 transactions per second.
ping-check on;
ping-timeout 300;
ping-send-count 3;
file-log-level LOG_EMERG; //何も出ない
syslog-level LOG_NOTICE;
Finished and report: 706 transactions per second.
★ログ出力あり
ping-check off;
file-log-level LOG_INFO;
syslog-level LOG_NOTICE;
Finished and report: 413 transactions per second.
ping-check on;
ping-timeout 300;
ping-send-count 3;
file-log-level LOG_INFO;
syslog-level LOG_NOTICE;
Finished and report: 702 transactions per second.
●MS-DHCP
ログ出力なし・検出の試行回数:0
Finished and report: 1224 transactions per second.
ログ出力なし・検出の試行回数:1
Finished and report: 5 transactions per second.
●ISC-DHCP(以前の結果を流用)
ping-check有効・syslog出力あり
ISC-DHCPD:Finished and report: 687 transactions per second.
MS-DHCPは設定がGUIでわかりにくいのですが、
IPv4のプロパティの詳細設定で「検出の試行回数」という設定項目があり、ここがデフォルトでゼロになっていますが、1にするとpingチェックが有効になるようです。どれだけ待つかは指定するところが見当たりません。700ms〜1sくらい待っている感じです。
MS-DHCPが爆速だとビックリしたのですが、ProDHCPもpingチェックを無効にしてログ出力をなくすと同等以上でした。MS-DHCPはログに相当するイベントには払い出し情報などは出ません。とはいえ、商用での実運用で払い出しのログが出ないというのは使い物にならないと言われそうですが。。
MS-DHCPは「検出の試行回数」を1にするとかなり性能が悪くなってしまいます。また、ゼロにして高負荷を与え続けると途中で全く応答しなくなりました。「サブネット遅延」という払い出し応答するまでに遅延する時間を指定する設定項目があり、デフォルトでゼロなのですが、1以上を指定すると止まらなくなる感じでした。
ProDHCPの場合、syslogに出力するならpingチェックが有効になっている方がやや高速でした。多少ログ出力の間隔が空く方がスムーズなのかも知れません。
いずれも同じホスト内のVMで実行していますので、条件はほとんど同じです。
MS-DHCPに払い出し性能では完敗か、と思ったのですが、ホッとしています。