From: Tomek Mrugalski Date: Wed, 18 Jul 2012 21:49:31 +0000 (+0200) Subject: [2040] Summary report for perfromance measurements written X-Git-Tag: trac2351_base~117^2~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f47975ecff7848cf2fa4f31e95a92022a8ed43bd;p=thirdparty%2Fkea.git [2040] Summary report for perfromance measurements written --- diff --git a/tests/tools/dhcp-ubench/Makefile b/tests/tools/dhcp-ubench/Makefile index 6ec0d83b5a..3f6d81c8b2 100644 --- a/tests/tools/dhcp-ubench/Makefile +++ b/tests/tools/dhcp-ubench/Makefile @@ -34,7 +34,10 @@ memfile_ubench: memfile_ubench.o benchmark.o clean: rm -f mysql_ubench sqlite_ubench memfile_ubench *.o -dhcp-perf-guide.html: dhcp-perf-guide.xml +version.ent: + ln -s ../../../doc/version.ent + +dhcp-perf-guide.html: dhcp-perf-guide.xml version.ent xsltproc --novalid --xinclude --nonet \ -o $@ \ --path ../../../doc \ diff --git a/tests/tools/dhcp-ubench/benchmark.cc b/tests/tools/dhcp-ubench/benchmark.cc index 7cb506b513..c74ef0e570 100644 --- a/tests/tools/dhcp-ubench/benchmark.cc +++ b/tests/tools/dhcp-ubench/benchmark.cc @@ -117,8 +117,8 @@ void uBenchmark::print_clock(const std::string& operation, uint32_t num, double oneoper = (tv_nsec/1000 + tv_sec*1000000)/num; - cout << "Operation " << operation << " repeated " << num << " times took " - << tv_sec << " seconds, " << tv_nsec/1000 << " us, 1 operation took " + cout << operation << " repeated " << num << " times took " + << tv_sec << " s, " << tv_nsec/1000 << " us, 1 operation took " << oneoper << "us (or " << (1000000/oneoper) << " oper/sec)" << endl; } diff --git a/tests/tools/dhcp-ubench/dhcp-perf-guide.html b/tests/tools/dhcp-ubench/dhcp-perf-guide.html index ec7e9df1bc..713dd40daa 100644 --- a/tests/tools/dhcp-ubench/dhcp-perf-guide.html +++ b/tests/tools/dhcp-ubench/dhcp-perf-guide.html @@ -1,11 +1,11 @@ -DHCP Performance Guide

DHCP Performance Guide

Various aspects of DHCP Performance in BIND 10

Tomasz Mrugalski

This is a companion document for BIND 10 version +DHCP Performance Guide

DHCP Performance Guide

Various aspects of DHCP Performance in BIND 10

Tomasz Mrugalski

This is a companion document for BIND 10 version 20120405.

Abstract

BIND 10 is a framework that features Domain Name System (DNS) suite and Dynamic Host Configuration Protocol (DHCP) servers with development managed by Internet Systems Consortium (ISC). This document describes various aspects of DHCP performance, measurements and tuning. It covers BIND 10 DHCP (codename Kea), existing ISC DHCP4 software, perfdhcp (a DHCP performance - measurement tool) and other related topics.


Preface

Table of Contents

1. Acknowledgements

1. Acknowledgements

ISC would like to acknowledge generous support for + measurement tool) and other related topics.


Preface

Table of Contents

1. Acknowledgements

1. Acknowledgements

ISC would like to acknowledge generous support for BIND 10 development of DHCPv4 and DHCPv6 components provided by Comcast.

Chapter 1. Introduction

This document is in its early stages of development. It is @@ -15,9 +15,9 @@ tools.

Chapter 2. ISC DHCP 4.x

TODO: Write something about ISC DHCP4 here. -

Chapter 3. Kea

-

3.1. Backend performance evaluation

+

3.1. Backend performance evaluation

Kea will support several different database backends, using both popular databases (like MySQL or SQLite) and custom-developed solutions (like in-memory database). BIND 10 @@ -91,7 +91,7 @@ overwritten using command line switches. Although all benchmarks take the same list of parameters, some of them are specific to a given backend type. To get a list of supported parameters, run your benchmark with -h option: - +

$ ./mysql_ubench -h
 This is a benchmark designed to measure expected performance
 of several backends. This particular version identifies itself
@@ -109,7 +109,7 @@ Possible command-line parameters:
  -v yes|no - verbose mode (MySQL, SQLite and memfile)
 

-

3.2.1. MySQL tweaks

One parameter that has huge impact on performance is a a backend engine. +

3.2.1. MySQL tweaks

One parameter that has huge impact on performance is a a backend engine. You can get a list of engines of your MySQL implementation by using

> show engines;

@@ -155,6 +155,22 @@ Possible command-line parameters:

memfile can run in asynchronous or synchronous mode. This mode can be controlled by using sync parameter. It uses fflush() and fsync() in synchronous mode to make sure that - data is not buffered and physically stored on disk.

Chapter 4. perfdhcp

+ data is not buffered and physically stored on disk.

3.5. Performance measurements

This section contains sample results for backend performance measurements, + taken using microbenchmarks. Tests were conducted on reasonably powerful machine: +

+        CPU: Quad-core Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz (8 logical cores)
+        HDD: 1,5TB Seagate Barracude ST31500341AS 7200rpm (used only one of them), ext4 partition
+        OS: Ubuntu 12.04, running kernel 3.2.0-26-generic SMP x86_64
+        compilers: g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+        MySQL version: 5.5.24
+        SQLite version: 3.7.9sourceid version is 2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e
+      

+

Benchmarks were run in two series: synchronous and + asynchronous. As those modes offer radically different + performances, synchronous mode was conducted for 1000 (one + thousand) repetitions and asynchronous mode was conducted for + 100000 (hundred thousand) repetitions.

Table 3.1. Synchronous results:

BackendOperationsCreateSearchUpdateDeleteAverage
MySQL100031.603978s 0.116612s27.964191s27.695209s21.844998s
SQLite100061.421356s 0.033283s59.476638s56.034150s44.241357s
memfile100041.711886s 0.000724s42.267578s42.169679s31.537467s

Following parameters were measured for asynchronous mode. + MySQL and SQLite were run with 100 thousand repetitions. Memfile + was run for 1 million repetitions due to much larger performance.

Table 3.2. Asynchronous results:

BackendOperationsCreate [s]Search [s]Update [s]Delete [s]Average [s]
MySQL10000010.584842s10.386402s10.062384s 8.890197s 9.980956s
SQLite100000 3.710356s 3.159129s 2.865354s 2.439406s 3.043561s
memfile1000000 (sic!) 6.084131s 0.862667s 6.018585s 5.146704s 4.528022s

Estimated performance:

Table 3.3. Estimated performance

BackendCreate [oper/s]Search [oper/s]Update [oper/s]Delete [oper/s]Average [oper/s]
MySQL (async)9447.479627.979938.0011248.3410065.45
SQLite (async)26951.5931654.2934899.7040993.5933624.79
memfile (async)164362.011159195.84166152.01194299.11421002.24
MySQL (sync)31.648575.4535.7636.112169.74
SQLite (sync)16.2820045.3716.8117.857524.08
memfile (sync)23.971381215.4723.6623.71345321.70

Chapter 4. perfdhcp

TODO: Write something about perfdhcp here.

diff --git a/tests/tools/dhcp-ubench/dhcp-perf-guide.xml b/tests/tools/dhcp-ubench/dhcp-perf-guide.xml index 60b4d6f0eb..dcd6254a10 100644 --- a/tests/tools/dhcp-ubench/dhcp-perf-guide.xml +++ b/tests/tools/dhcp-ubench/dhcp-perf-guide.xml @@ -27,10 +27,11 @@ DHCP Performance Guide - Various aspects of DHCP Performance in BIND 10 + - 2012Internet Systems Consortium, Inc. + 2012 + Internet Systems Consortium, Inc. ("ISC") Tomasz @@ -292,7 +293,7 @@ Possible command-line parameters: Memfile backend is custom developed prototype backend that somewhat mimics operation of ISC DHCP4. It uses in-memory storage using standard C++ and boost mechanisms (std::map and - boost::shared_ptr><). All database changes are also + boost::shared_ptr<>). All database changes are also written to a lease file. That file is strictly write-only. This approach takes advantage of the fact that simple append is faster than edition with potential whole file relocation. @@ -318,6 +319,224 @@ Possible command-line parameters: +
+ Performance measurements + This section contains sample results for backend performance measurements, + taken using microbenchmarks. Tests were conducted on reasonably powerful machine: + + CPU: Quad-core Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz (8 logical cores) + HDD: 1,5TB Seagate Barracude ST31500341AS 7200rpm (used only one of them), ext4 partition + OS: Ubuntu 12.04, running kernel 3.2.0-26-generic SMP x86_64 + compilers: g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 + MySQL version: 5.5.24 + SQLite version: 3.7.9sourceid version is 2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e + + + + Benchmarks were run in two series: synchronous and + asynchronous. As those modes offer radically different + performances, synchronous mode was conducted for 1000 (one + thousand) repetitions and asynchronous mode was conducted for + 100000 (hundred thousand) repetitions. + + + Synchronous results: + + + + + + + + + + + Backend + Operations + Create + Search + Update + Delete + Average + + + + + MySQL + 1000 + 31.603978s + 0.116612s + 27.964191s + 27.695209s + 21.844998s + + + + SQLite + 1000 + 61.421356s + 0.033283s + 59.476638s + 56.034150s + 44.241357s + + + + memfile + 1000 + 41.711886s + 0.000724s + 42.267578s + 42.169679s + 31.537467s + + + + +
+ + Following parameters were measured for asynchronous mode. + MySQL and SQLite were run with 100 thousand repetitions. Memfile + was run for 1 million repetitions due to much larger performance. + + + Asynchronous results: + + + + + + + + + + + Backend + Operations + Create [s] + Search [s] + Update [s] + Delete [s] + Average [s] + + + + + MySQL + 100000 + 10.584842s + 10.386402s + 10.062384s + 8.890197s + 9.980956s + + + + SQLite + 100000 + 3.710356s + 3.159129s + 2.865354s + 2.439406s + 3.043561s + + + + memfile + 1000000 (sic!) + 6.084131s + 0.862667s + 6.018585s + 5.146704s + 4.528022s + + + + +
+ + Estimated performance: + + Estimated performance + + + + + + + + + + Backend + Create [oper/s] + Search [oper/s] + Update [oper/s] + Delete [oper/s] + Average [oper/s] + + + + + MySQL (async) + 9447.47 + 9627.97 + 9938.00 + 11248.34 + 10065.45 + + + + SQLite (async) + 26951.59 + 31654.29 + 34899.70 + 40993.59 + 33624.79 + + + + memfile (async) + 164362.01 + 1159195.84 + 166152.01 + 194299.11 + 421002.24 + + + + + MySQL (sync) + 31.64 + 8575.45 + 35.76 + 36.11 + 2169.74 + + + + SQLite (sync) + 16.28 + 20045.37 + 16.81 + 17.85 + 7524.08 + + + + memfile (sync) + 23.97 + 1381215.47 + 23.66 + 23.71 + 345321.70 + + + + +
+ +
+