Enduro/X VS Oracle Tuxedo performance benchmark

It’s time to compare oranges with oranges. The ATR Baltic’s Enduro/X is exposing the product as direct clone to Oracle’s long standing product Tuxedo.

The benchmark will be very simple, the client (executable named benchclt) will call server process (benchsv). Benchsv is exposing service BENCHSVC, which is called with increasing size of the message, starting with 1KB and ending near to 56KB.

The code for both platforms basically is the same, there are some differences in make scripts, but those are minor.

Source code are here: https://github.com/spuhpointer/tuxbench

The test system is: Linux Mint 17.2 (ubuntu 14.04 base), 3.13 Linux kernel, Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz, 16GB RAM, SSD disks.

Tuxedo benchmark

Running the tuxedo tests. After few tests it shows up that Tuxedo better performs if in server clopt there is “-r” flag which writes some stats to stderr (the performance boost is almost 2x times)

$ cd /home/user1/projects/tuxbench/conf
$ . set_tuxedo
$ tmloadcf -b 30000 tuxcfg 
Really overwrite TUXCONFIG file: /home/user1/projects/tuxbench/conf/tuxconfig [y, q] ? y
$ cd /home/user1/projects/tuxbench/src
$ rm *.txt
$ rm *.png
$ rm benchsv benchclt
$ make -f Makefile-tux
CFLAGS="-I/home/user1/OraHome_1/tuxedo12.2.2.0.0/include " \
 TUXDIR=/home/user1/OraHome_1/tuxedo12.2.2.0.0 \
 /home/user1/OraHome_1/tuxedo12.2.2.0.0/bin/buildserver \
 -s BENCHSVC \
 -o benchsv \
 -f benchsv.o
TUXDIR=/home/user1/OraHome_1/tuxedo12.2.2.0.0 \
 /home/user1/OraHome_1/tuxedo12.2.2.0.0/bin/buildclient -o
 benchclt -f "benchclt.c -Wl,--no-as-needed"

Booting admin processes ...

exec BBL -A :
 process id=32465 ... Started.

Booting server processes ...

exec benchsv -A -r -e /tmp/BENCHSV -- :
 process id=32467 ... Started.
2 processes started.

$ benchclt 
took 2.467116 secs
calls per sec: 40533.158920 (size 1024 bytes)
took 2.973770 secs
calls per sec: 33627.349545 (size 5120 bytes)
took 14.278784 secs
calls per sec: 7003.397587 (size 9216 bytes)
took 13.617148 secs
calls per sec: 7343.681442 (size 13312 bytes)
took 14.141925 secs
calls per sec: 7071.173196 (size 17408 bytes)
took 14.866712 secs
calls per sec: 6726.437062 (size 21504 bytes)
took 15.436239 secs
calls per sec: 6478.261863 (size 25600 bytes)
took 16.189457 secs
calls per sec: 6176.859445 (size 29696 bytes)
took 17.391825 secs
calls per sec: 5749.827956 (size 33792 bytes)
took 17.740801 secs
calls per sec: 5636.724114 (size 37888 bytes)
took 18.196678 secs
calls per sec: 5495.508527 (size 41984 bytes)
took 18.923824 secs
calls per sec: 5284.344135 (size 46080 bytes)
took 19.532131 secs
calls per sec: 5119.769010 (size 50176 bytes)
took 20.154987 secs
calls per sec: 4961.551121 (size 54272 bytes)
benchclt ends: 0
$ tmshutdown -y
Shutting down all admin and server processes in /home/user1/projects/tuxbench/conf/tuxconfig

Shutting down server processes ...

Server Id = 50 Group Id = tst Machine = macintosh: shutdown succeeded
 Server Id = 25 Group Id = tmevents Machine = macintosh: shutdown succeeded
 Server Id = 20 Group Id = tst Machine = macintosh: shutdown succeeded

Shutting down admin processes ...

Server Id = 0 Group Id = macintosh Machine = macintosh: shutdown succeeded
4 processes stopped.

Enduro/X benchmark

cd /home/user1/projects/tuxbench/conf

$ . set_endurox 
$ cd /home/user1/projects/tuxbench/src
$ rm benchsv benchclt *.o
$ make -f Makefile-ex $ make -f Makefile-ex gcc -o benchsv benchsv.c \ -I. -I /home/user1/projects/endurox/dist/include \ -L /home/user1/projects/endurox/dist/lib \ -latmisrv -latmi -lubf -lnstd -lrt -ldl -lmgcc -o benchclt benchclt.c \ -I. -I /home/user1/projects/endurox/dist/include \ -L /home/user1/projects/endurox/dist/lib \ -latmiclt -latmi -lubf -lnstd -lrt -ldl -lm
$ xadmin start -y
Enduro/X 3.2.2, build Sep 1 2016 21:51:42, using epoll for LINUX (64 bits)

Enduro/X Middleware Platform for Distributed Transaction Processing
Copyright (C) 2015, 2016 ATR Baltic, SIA. All Rights Reserved.

This software is released under one of the following licenses:
GPLv2 (or later) or ATR Baltic's license for commercial use.

EnduroX back-end (ndrxd) is not running
ndrxd PID (from PID file): 26455
ndrxd idle instance started.
exec benchsv -k 0myWI5nu -i 100 -e /tmp/EX_BENCHSV -r -- :
process id=26457 ... Started.
Startup finished. 1 processes started.
$ benchclt 
took 1.556431 secs
calls per sec: 64249.553280 (size 1024 bytes)
took 1.817395 secs
calls per sec: 55023.812407 (size 5120 bytes)
took 2.103333 secs
calls per sec: 47543.589233 (size 9216 bytes)
took 2.399945 secs
calls per sec: 41667.621191 (size 13312 bytes)
took 2.675549 secs
calls per sec: 37375.506435 (size 17408 bytes)
took 2.994622 secs
calls per sec: 33393.196291 (size 21504 bytes)
took 3.352633 secs
calls per sec: 29827.302904 (size 25600 bytes)
took 3.585477 secs
calls per sec: 27890.292833 (size 29696 bytes)
took 3.897897 secs
calls per sec: 25654.859497 (size 33792 bytes)
took 4.140730 secs
calls per sec: 24150.331539 (size 37888 bytes)
took 4.477430 secs
calls per sec: 22334.241512 (size 41984 bytes)
took 4.814031 secs
calls per sec: 20772.611855 (size 46080 bytes)
took 5.014782 secs
calls per sec: 19941.046482 (size 50176 bytes)
took 5.289385 secs
calls per sec: 18905.790180 (size 54272 bytes)
benchclt ends: 0

$ xadmin stop -c -y
Enduro/X 3.2.2, build Sep 1 2016 21:51:42, using epoll for LINUX (64 bits)

Enduro/X Middleware Platform for Distributed Transaction Processing
Copyright (C) 2015, 2016 ATR Baltic, SIA. All Rights Reserved.

This software is released under one of the following licenses:
GPLv2 (or later) or ATR Baltic's license for commercial use.

Server executable = benchsv Id = 100 : Shutdown succeeded.
Shutdown finished. 1 processes stopped.

Results

To get the results chart we use build-chart.sh (we have to remove second header line for result.txt

$ cd /home/user1/projects/tuxbench/src
$ ./build-chart.sh

… and here it is:

result

Yeah, Enduro/X beats the Tuxedo in raw IPC throughput! At 1KB message size it is about 30% boost for Enduro/X, while by increasing the message size Enduro/X keeps the performance stable  and at some point, Tuxedo performance drops down dramatically and Enduro/X is multiple times ahead!!

07/09/2016 update

After thinking alot why Tuxedo performance did drop down dramatically, I suggested that it might be a message size from System-V IPC. Thus I increased the size to following (from default which on Linux is 8KB):

# sysctl -w kernel.msgmni=16384
# sysctl -w kernel.msgmax=165536
# sysctl -w kernel.msgmnb=165536

To check the values, run:

$ sysctl kernel.msg{max,mni,mnb}

And afterwards did run test again, now results looks more adequate:

result_msgsize

So we see that when message size is close to 56K both systems tend to work in same speed, but initially Enduro/X is 30% ahead.

So in case if system message size (msgmax) is smaller than packet size, Tuxedo tries to use multiple system messages to build one user message, which dramatically drops down the speed.

 

 

Advertisements

2 thoughts on “Enduro/X VS Oracle Tuxedo performance benchmark

  1. Pingback: Enduro/X vs Oracle Tuxedo performance review | ATR Baltic Software

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s