EMG 6.0 benchmark results

EMG 6.0 can handle approximately 8000 messages (SMS) per second with corresponding delivery reports, in total over 16000 messages per second on modest hardware. If we add logging message data to MySQL then we reach approx 2700 messages per second. In these tests we use SSD disks which we see gives a 50% performance boost as compared to traditional hard drives.

Hardware configuration

Tests were run on a single Dell PowerEdge R320 server (1U).

CPU1 x 2.25 GHz Intel Xeon E5-2430 six-core CPU (Intel HT gives 12 threads)
Memory32 GB
Raid controllerDell Perc H310 Mini (embedded)
DiskIntel 520 SSD 
Operating SystemCentOS 6.3 64-bit (RedHat Enterprise Linux 6.3) with kernel version 2.6.32-279.19.1.el6.x86_64

Test setup

For the load test a load generator (emgload) and message sinks (emgsink) were used.

A load generator sent messages to EMG via UCP protocol requesting a delivery report (DLR). The messages were then sent out over SMPP to a message sink which also generated the delivery reports with a random delay between 0 and 10 seconds. The delivery reports were sent back to EMG where they were routed to another UCP connector connected to a message sink.

emg Test setup

EMG configuration

EMG version used: ENTERPRISE MESSAGING GATEWAY 6.0.0.33510/20130307 (Linux)

The following general keywords are interesting for performance. The value mentioned is used us tests, unless otherwise indicated for each test case.

KeywordValueDescription
PERSISTFILESEnabledIf present, messages will be persisted to disk, otherwise they are stored in-memory only
IDWINDOW=x100How many message ids should be obtained from message id database at a time
LOGLEVEL=levelINFOGeneral log level
DLRSSIZE=x1000000Max number of internal entries for open delivery reports
MAXTOTALQUEUESIZE=x110000Max allowed queue size (in total). When exceeded messages will be rejected
MAXTOTALQUEUESIZE_SOFT=x100000Max allowed queue size (in total). When exceeded messages will a 0.1 sec delay will be forced

MySQL configuration

For some tests we also log messages to a MySQL database and use this additional config:

DBPROFILE=emg
ROUTELOGDB
DISABLE_MESSAGEOPTION

DB emg <
HOST=127.0.0.1
PORT=3306
USERNAME=emg
PASSWORD=xxxxxx
DBNAME=emg
TYPE=MYSQL
INSTANCES=4
>

Test runs

Message is 145 characters (text), sender and recipient are “491234” followed by 7 random digits, in total 13 digits.

Each connector is configured for 10 instances (10 simultaneous connections/threads).

The amount of memory (RAM) used by EMG during these runs is approx 1.5 GB.

All results are given in “mps” (messages/SMS per second).

Test run 1

According to the defaults above.

Result: 8000 mps (plus delivery reports)

Test run 2

According to the defaults above and logging to MySQL.

Result: 2700 mps (plus delivery reports)