On 06/05/2017 11:15 μμ, Pavlos Parissis wrote: > On 04/05/2017 01:16 μμ, Olivier Houchard wrote: >> On Thu, May 04, 2017 at 10:03:07AM +0000, Pierre Cheynier wrote: >>> Hi Olivier, >>> >>> Many thanks for that ! As you know, we are very interested on this topic. >>> We'll test your patches soon for sure. >>> >>> Pierre >> >> Hi Pierre :) >> >> Thanks ! I'm very interested in knowing how well it works for you. >> Maybe we can talk about that around a beer sometime. >> >> Olivier >> > > Hi, > > I finally managed to find time to perform some testing. > > Fristly, let me explain environment. > > Server and generator are on different servers (bare medal) with the same spec, > network interrupts are pinned to all CPUs and irqbalancer daemon is disabled. > Both nodes have 10GbE network interfaces. > > I compared HAPEE with HAProxy using the following versions: > > ### HAProxy > The git SHA isn't mentioned in the output because I created the tarball > with: > > git archive --format=tar --prefix="haproxy-1.8.0/" HEAD | gzip -9 > > haproxy-1.8.0.tar.gz > > as I had to build the rpm using a tar ball, but I used the latest haproxy > at f494977bc1a361c26f8cc0516366ef2662ac9502 commit. > > /usr/sbin/haproxy -vv > HA-Proxy version 1.8-dev1 2017/04/03 > Copyright 2000-2017 Willy Tarreau <wi...@haproxy.org> > > Build options : > TARGET = linux2628 > CPU = generic > CC = gcc > CFLAGS = -DMAX_HOSTNAME_LEN=42 > OPTIONS = USE_LINUX_TPROXY=1 USE_CPU_AFFINITY=1 USE_REGPARM=1 USE_OPENSSL=1 > USE_PCRE=1 USE_PCRE_JIT=1 > > Default settings : > maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200 > > Built with OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 > Running on OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 > OpenSSL library supports TLS extensions : yes > OpenSSL library supports SNI : yes > Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT > IP_FREEBIND > Built with network namespace support. > Built without compression support (neither USE_ZLIB nor USE_SLZ are set). > Compression algorithms supported : identity("identity") > Encrypted password support via crypt(3): yes > Built with PCRE version : 8.32 2012-11-30 > Running on PCRE version : 8.32 2012-11-30 > PCRE library supports JIT : yes > > Available polling systems : > epoll : pref=300, test result OK > poll : pref=200, test result OK > select : pref=150, test result OK > Total: 3 (3 usable), will use epoll. > > Available filters : > [SPOE] spoe > [COMP] compression > [TRACE] trace > > ### HAPEE version > /opt/hapee-1.7/sbin/hapee-lb -vv > HA-Proxy version 1.7.0-1.0.0-163.180 2017/04/10 > Copyright 2000-2016 Willy Tarreau <wi...@haproxy.org> > > Build options : > TARGET = linux2628 > CPU = generic > CC = gcc > CFLAGS = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement > -DMAX_SESS_STKCTR=10 -DSTKTABLE_EXTRA_DATA_TYPES=10 > OPTIONS = USE_MODULES=1 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 USE_SLZ=1 > USE_CPU_AFFINITY=1 USE_REGPARM=1 USE_OPENSSL=1 USE_LUA=1 USE_PCRE= > USE_PCRE_JIT=1 > USE_NS=1 > > Default settings : > maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200 > > Encrypted password support via crypt(3): yes > Built with libslz for stateless compression. > Compression algorithms supported : identity("identity"), deflate("deflate"), > raw-deflate("deflate"), gzip("gzip") > Built with OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 > Running on OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 > OpenSSL library supports TLS extensions : yes > OpenSSL library supports SNI : yes > OpenSSL library supports prefer-server-ciphers : yes > Built with PCRE version : 8.32 2012-11-30 > Running on PCRE version : 8.32 2012-11-30 > PCRE library supports JIT : yes > Built with Lua version : Lua 5.3.3 > Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT > IP_FREEBIND > Built with network namespace support > > Available polling systems : > epoll : pref=300, test result OK > poll : pref=200, test result OK > select : pref=150, test result OK > Total: 3 (3 usable), will use epoll. > > Available filters : > [COMP] compression > [TRACE] trace > [SPOE] spoe > > > The configuration is the same and it is attached. As you can use I use nbproc > >1 > and each process is pinned to different CPU. We have 12 real CPUs as Intel > hyper > threading is disabled, but we only use 10 CPUs for haproxy, the remaining two > CPUs > are left for other daemons to use. > > I experimented with wrk2 and httpress stress tools and decided to use wrk2 for > these tests. I didn't want to use the inject and other tools provided by > haproxy > as I believe using different clients provides higher chances to spot problems. > > In my tests I see that wrk2 reports higher read errors with HAProxy (3890) > than > HAPEE (36). I don't know the meaning of the read error and it could be some > stupidity in the code of wrk2. I am saying this because two years ago we spent > four weeks stress testing HAPEE and found out that all open source http stress > tool sucks and some of the errors they report are client errors rather server. > But, in this case wrk2 was always reporting higher read errors with HAProxy. > > Below is the report and I have run the same tests 3-4 times. > Another thing I would like to test is any possible performance degradation, > but this requires to build a proper stress environment and I don't have the > time > to do it right now. > \
Ignore ignore what I wrote, I am an idiot I am an idiot as I forgot the most important bit of the test, to enable the seamless reload by suppling the HAPROXY_STATS_SOCKET environment variable:-( I added to the systemd overwrite file: [Service] Environment=CONFIG="/etc/lb_engine/haproxy.cfg" "HAPROXY_STATS_SOCKET=/run/lb_engine/process-1.sock" and wrk2 reports ZERO errors where with HAPEE reports ~49. I am terrible sorry for this stupid mistake. But, this mistake revealed something interesting. The fact that with the latest code we have more errors during reload. @Olivier, great work dude. I am waiting for this to be back-ported to HAPEE-1.7r1. Once again I am sorry for my mistake, Pavlos
signature.asc
Description: OpenPGP digital signature