Contents
Performance must be designed into an application. It is not realistic to expect performance to be tested in at the end of the development cycle. A common sense approach is provided to design StreamBase® applications that perform. The key metrics and trade-offs that impact application performance are:
-
Scaling versus path length
-
Horizontal versus vertical scaling
-
Contention
-
Latency versus through-put
StreamBase® features make high-performance applications possible. However, these features must be used where appropriate. Each of these StreamBase® features can have an impact on application performance. They must be used when appropriate.
-
Managed versus non-managed objects.
-
Transactional versus non-transactional code.
-
Keys and indexes.
-
Transactions versus Java monitors for concurrency control.
-
High-availability (partitioned) managed objects versus non-partitioned managed objects.
-
High-availability versus distribution.
Tuning a StreamBase® application involves both application architecture decisions and appropriate configuration of system parameters. The types of questions that must be answered are:
-
How should the JVM heap sizes be configured?
-
How to ensure that the garbage collector does not impact the latency of running applications?
-
What size of shared memory should be configured?
-
Should System V or file-mapped shared memory be used?
-
How much disk space is needed?
-
Should the application run on single or multiple nodes?
-
How should the application be deployed within a node?
-
Should application data be partitioned across multiple nodes?
-
When should distribution be used?