Process Engine (PVM)

Thread pools for the Process Engine are divided into two areas: those for persistent process instances (business processes), and those for in-memory process instances (pageflows and service processes).

Thread Pool for Persistent Process Instances (business processes)

The more threads specified of this type, the more process instances that can be started, processed, and completed in parallel. However more threads put strain on other resources, and too many threads can, under heavy load, swamp the CPU, reducing performance.

More of this type of thread within the same BPM node may not increase throughput when there is no restriction on the CPU. The number of Process Engine threads you use will depend on the design of the process flow involved. You should test the impact of adding more Process Engine threads, and how this impacts the throughput, memory usage, and host machine. More threads means the operating system must perform more context switching, which can actually slow down throughput as each thread gets a smaller and smaller time slice on the CPU.

A better approach is to add a new BPM node on the same machine, system resources permitting. The main reason for this is contention with the ActiveMatrix platform, which is why using a number of small BPM nodes on the same machine, rather than one large BPM node, is best practice.

There are two ways in which the thread pool for persisted process instances can be configured:

  • From the TIBCO Configuration Tool (TCT), using the Number of Process Engine Threads option. This can be set during the initial configuration of ActiveMatrix BPM. The available selections are:
    • Development system: 5 threads
    • Production system: 18 threads

    Also see "ActiveMatrix BPM: Sizing Configuration" in TIBCO ActiveMatrix BPM Installation and Configuration.

  • Using the persistThreadPoolSize property in the pvm.properties file. If this property is set, it overrides a value previously specified using TCT, as described above. Default = 16 threads

    Also see Process Engine Properties (pvm.properties).

Thread Pool for In-Memory Process Instances (pageflows and service processes)

Thread pools that handle in-memory process instances (pageflows and service processes) are configured using the following properties in the pvm.properties file:

  • inMemoryThreadPoolSize - This specifies the number of threads in the pool for in-memory process instances. Default = 8 threads

    The value of this property can be modified if thread monitoring indicates that the threads in the pool are consuming an excessive amount of the CPU. Very high CPU usage may indicate that the system is running excessive in-memory process instances in parallel. Reducing the number of threads in this pool may resolve the problem.

  • inMemoryThreadPoolStepCount - This controls how many pieces of work (steps) an in-memory thread will perform before it will break out of the processing, reschedule the work, and then continue. This property should be modified only under the direction of TIBCO Support. .

See also Process Engine Properties (pvm.properties).