EMG 6.0 benchmark results Print

EMG 6.0 can handle approx 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).

CPU 1 x 2.25 GHz Intel Xeon E5-2430 six-core CPU (Intel HT gives 12 threads)
Memory 32 GB
Raid controller Dell Perc H310 Mini (embedded)
Disk Intel 520 SSD
Operating System CentOS 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.

Keyword Value Description
PERSISTFILES Enabled If present, messages will be persisted to disk, otherwise they are stored in-memory only
IDWINDOW=x 100 How many message ids should be obtained from message id database at a time
LOGLEVEL=level INFO General log level
DLRSSIZE=x 1000000 Max number of internal entries for open delivery reports
MAXTOTALQUEUESIZE=x 110000 Max allowed queue size (in total). When exceeded messages will be rejected
MAXTOTALQUEUESIZE_SOFT=x 100000 Max 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)