Copyright © TIBCO Software Inc. All Rights Reserved
Copyright © TIBCO Software Inc. All Rights Reserved


Chapter 5 Running the EMS Server : Performance Tuning

Performance Tuning
By default, the TIBCO Enterprise Message Service server has the following general thread architecture:
Setting Thread Affinity for Increased Throughput
If the default behavior of the EMS server cannot provide the required throughput and the EMS server machine has multiple cores, you can assign specific cores to the EMS threads that handle network traffic and stores.
For instance, with a 4-core machine, you can use the processor_ids parameter to assign core 0 and core 1 to handle network traffic. You can also use the store configuration processor_id parameter to assign core 2 to handle the $sys.failsafe store. This configuration causes the EMS server to create two threads that handle network traffic, and sets the affinity of them to core 0 and core 1 respectively. It also sets the affinity of the thread handling the store $sys.failsafe to core 2. No affinity is set for other threads.
Increasing Network Threads without Setting Thread Affinity
If you want to increase the number of network threads without assigning them to specific cores, use the network_thread_count parameter. This lets the EMS server control the number of network threads and also lets the administrator control the thread affinity externally (for example, by using the Linux taskset command).
If you set the thread affinity externally, we recommend that you avoid setting any thread affinity in the EMS server for either network traffic or stores.
The EMS server ignores the network_thread_count if the processor_ids parameter is also specified.
Determining Core Allocation
The phrase "less is more" summarizes the best practices for EMS performance tuning.
1.
2.
3.
Transparent Huge Pages
The Transparent Huge Pages (THP) feature of Linux does not have a significant impact on the performance of EMS.
Network I/O Connections
When a client connects to the EMS server, the EMS server assigns it to one of the threads handling network traffic based on which of those threads have the fewest existing connections. This balances the total number of connections evenly across those threads.
Note that if all the connections to one thread are closed, the EMS server does not move existing connections from other threads in order to rebalance them.
Also note that the EMS server does not account for the traffic generated by those connections. For instance, the EMS server could assign ten connections to one thread and ten connections to another thread but still have an unbalanced state if the first ten connections account for 90% of all network traffic to the EMS server.
Other Considerations

Copyright © TIBCO Software Inc. All Rights Reserved
Copyright © TIBCO Software Inc. All Rights Reserved