The connector framework calculates an execution plan where the order of execution for each step in the synchronization workflow is determined. In the case that individual steps do not have a dependency on each other I do not see the steps executed in parallel or depicted as having the same order in the execution plan. It does not matter if I run this on a system with 1 CPU or large iron with 24 or more CPU's.
For the PowerShell connector I can define a connection pool size, and the pool is initially filled with (N -1) connections where N is equal to the connection pool size. The issue is that the amount of connections in the pool do not seem to have a direct relationship with the number of parallel operations being run towards the target system. For example the calculation of the revision counters is single threaded causing a major slowdown in case you have a few mappings/objects that take 10 minutes or more to build the slim list. During the mapping phase of the synchronization it looks like the amount of parallelization is not in the order that you would expect based on the combination of the connection pool size, CPU's and IO system of the server. Reviewing the timestamps of individual operations in the logs, it looks like a little bit better than a single threaded operation towards the target system, but much more efficient use of parallelization for the database connections to One Identity Manager.
What can I do to make the synchronization actually use the available hardware on the server? Am I missing some configuration settings to make this process more efficient?