SwiftMQ Performance Profile
Test Environment
-
AMD Quad-Core 1385, 2.7 GHz, 512 KB cache, 5799.74 bogomips
-
8 GB RAM
-
160 GB Intel SSD X-25M
-
Linux 2.6.18 SMP X86_64
-
JDK 1.6.0_21 64-Bit
-
SwiftMQ 8.1.0 with Network NIO Swiftlet 8.1.0 installed
-
JVM settings for SwiftMQ Router and client were "-server -Xmx1024M".
-
SwiftMQ Router and client were running on this machine.
Tests performed
-
Point to point tests were performed as pairs where a pair consists of 1 producer and 1 consumer, communicating over 1 dedicated queue.
-
Publish/subscribe tests were performed as 1-to-n tests over a single topic where n is the number of subscribers.
-
JMS Session modes used: non-transacted/auto-ack, non-transacted/client-ack (ack after each 10 messages), transacted (commit after each 10 messages)
-
1 KB BytesMessage were used for all tests.
For persistent messages the tests were performed with disk cache disabled and disk sync enabled (most reliable option) and also with disk cache enabled and disk sync disabled (less reliable).
Configuration for disk cache disabled and disk sync enabled:
-
disk cache disabled with: hdparm -W 0 /dev/sda3
-
transaction log disk sync enabled with: force-sync="true"
-
thread pool "jms.connection", max-threads="1"
-
thread pool "jms.session", max-threads="100"
-
Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"
Configuration for disk cache enabled and disk sync disabled:
-
disk cache enabled with: hdparm -W 1 /dev/sda3
-
transaction log disk sync disabled with: force-sync="false"
-
thread pool "jms.connection", max-threads="1"
-
thread pool "jms.session", max-threads="100"
-
Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"
Configuration for tests with non-persistent messages:
-
thread pool "jms.connection", max-threads="1"
-
thread pool "jms.session", max-threads="1"
-
Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"
Duplicate message detection were disabled for all queues, related queue controllers and the JMS client.
Test Results: Disk Cache DISABLED, Disk Sync ENABLED
Point to Point, persistent
|
Pairs
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
SwiftMQ 8.0.0 client-ack
|
SwiftMQ 8.1.0 client-ack
|
SwiftMQ 8.0.0 transacted
|
SwiftMQ 8.1.0 transacted
|
|
1
|
138
|
480
|
138
|
778
|
224
|
772
|
|
10
|
531
|
2700
|
503
|
3750
|
652
|
3707
|
|
50
|
887
|
7100
|
845
|
9250
|
936
|
8915
|
Publish/Subscribe, durable, persistent
|
Subscribers
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
SwiftMQ 8.0.0 client-ack
|
SwiftMQ 8.1.0 client-ack
|
SwiftMQ 8.0.0 transacted
|
SwiftMQ 8.1.0 transacted
|
|
1
|
138
|
463
|
138
|
775
|
226
|
764
|
|
10
|
176
|
2600
|
213
|
5865
|
241
|
5940
|
|
50
|
181
|
8900
|
232
|
17426
|
240
|
17460
|
|
100
|
181
|
10575
|
235
|
19471
|
239
|
20423
|
Test Results: Disk Cache ENABLED, Disk Sync DISABLED
Point to Point, persistent
|
Pairs
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
SwiftMQ 8.0.0 client-ack
|
SwiftMQ 8.1.0 client-ack
|
SwiftMQ 8.0.0 transacted
|
SwiftMQ 8.1.0 transacted
|
|
1
|
6214
|
8192
|
5624
|
7773
|
5705
|
7192
|
|
10
|
11203
|
13621
|
10739
|
12695
|
12187
|
13815
|
|
50
|
10877
|
13782
|
10422
|
13587
|
12044
|
13758
|
Publish/Subscribe, durable, persistent
|
Subscribers
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
SwiftMQ 8.0.0 client-ack
|
SwiftMQ 8.1.0 client-ack
|
SwiftMQ 8.0.0 transacted
|
SwiftMQ 8.1.0 transacted
|
|
1
|
5625
|
7034
|
5246
|
6769
|
5785
|
6440
|
|
10
|
11595
|
30539
|
10246
|
28148
|
11365
|
28149
|
|
50
|
12938
|
38673
|
11214
|
37776
|
12548
|
35363
|
|
100
|
12618
|
37977
|
10992
|
35217
|
12206
|
33803
|
Test Results: Non-persistent Messages
Point to Point, non-persistent
|
Pairs
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
|
1
|
32362
|
35124
|
|
10
|
93580
|
98270
|
|
50
|
89748
|
90184
|
Publish/Subscribe, non-durable, non-persistent
|
Subscribers
|
SwiftMQ 8.0.0 auto-ack
|
SwiftMQ 8.1.0 auto-ack
|
|
1
|
47573
|
57994
|
|
10
|
200360
|
249557
|
|
50
|
190497
|
256860
|
|
100
|
165467
|
251996
|