Runtime setup
You can consider various set up options to increase your computer's performance when using runtimes, runtime clusters, or private runtime clouds.
These are some factors that go into a runtime or runtime cluster runtime environment setup:
-
Hardware — the amount of memory your machine has; number of CPUs; amount of disk space; number of machines you plan to use.
-
Runtime Engine — whether you are using a single runtime or a runtime cluster; a normal or forked execution.
-
Integration Design — the number of subprocesses; a Flow Control step for parallel processing; type of parallel processing (threads or processes).
There are different options for increasing your processing.
The building blocks
Your computer contains the following resources:
-
CPU
-
Memory
-
Hard disk
-
JVM, with heap space and thread(s)
These resources can be scarce or easily consumed, so you must decide how to allocate resources depending on the needs of your runtime environment.
Options for increasing processing capacity
The following examples show different options for allocating your computer's resources to increase processing capacity:
-
Increase the JVM heap size, which provides additional working memory for a single JVM. A single JVM can use all CPUs on a computer, however a shared heap can cause contention.
-
Increase the computer’s resources, such as the CPU, memory, and hard disk. If you increase CPU capacity, you can run more simultaneous actions. If you add more memory and get more disk space, you can process more data simultaneously. Note that hard disks do not parallelize well.
-
Increase the number of threads to enable parallel processing, which means more tasks can run simultaneously.
-
Increase the number of JVMs (forked executions). By doing so, there is more working memory and threads across multiple JVMs. There is less contention for the garbage collector, so clearing the heap space (memory) is more efficient.
-
Increase the number of computers on which the runtime runs, which provides more resources of all types: CPU, memory, and hard disk. It reduces contention for the resources and gives you more JVMs.
Processing scenarios
What kind of setup does recommend? It varies by use case. What you buy and how to set up your system are determined by the following factors:
-
What you are processing
-
How you are processing the data
-
How much you are trying to process
Use the following table to identify your processing scenario, the resource in contention, and to find ’s recommended solution.
| Processing Scenario | Resource in Contention | Solution |
|---|---|---|
| Running many simultaneous processes | CPU | Increase the number of computers, Option 5 (best solution) Increase number of CPUs per computer, Option 2 |
| Memory/heap | Increase heap per JVM, Option 1 Increase memory per computer, Option 2 (assumes more heap per JVM) | |
| High volume of documents per process | Hard disk | Increase hard disk, Option 2 |
| Memory/heap | Increase heap per JVM, Option 1 Increase memory per computer, Option 2 (assumes more heap per JVM) | |
| CPU | For small-sized documents, use a Flow Control step with the multithreading option, Option 3 For large-size documents, use a Flow Control step with the multiprocess option, Option 4 | |
| Very large documents | Memory/heap | Increase heap per JVM, Option 1 (best solution) Increase memory per computer, Option 2 (assumes more heap per JVM) |
| Hard disk | Increase hard disk, Option 2 Use a Flow Control step with the multi-process option, Option 4 | |
| High volume of real-time requests | CPU | For a Cloud, use execution workers For a runtime cluster, do NOT use forked execution |
Other ways to improve processing capacity
You can improve performance by designing your processes and using process steps correctly. Refer to the “Improving performance” section of Process design and development tips.
Use the existing features in to improve performance. For example:
-
Use runtime clusters. It allows for multiple runtime processes to run concurrently. You can deploy runtime clusters across multiple computers, which makes your environment more robust.
-
Consider enabling forked execution, which causes a node to run each process in a separate JVM and forks each time another process starts running. When you use multiple JVMs, your environment becomes more robust and provides more resources for longer tasks. However, forked executions can affect your process design and performance in other ways, especially if you are using Java Message Service (JMS) or publishing web services.
-
Enable local disk support in runtime clusters to reduce unnecessary network traffic. For more information, refer to Runtime cluster and runtime cloud working data storage.
For detailed steps on how to install and setup your runtimes, refer to the following topics: