Today one of Provisioner's users asked me how would he be able to measure Provisioner's throughoutput and tune Provisioner to improve it.
Provisioner is a multi-threading software, meaning that it can run more than one task in parallel. Actually what Provisioner V1.0.17 does today is to start its main thread called "Producer" and it then opens one thread for each provisioning operation that it has to execute, this threads are called "Consumers". The number of consumers Provisioner will launch can be configured by a parameter in the command line.
Having lots of threads running in parallel will not allways provide better end-to-end system throughoutput, this is highly dependent in a couple of facts:
1- Response time of the identity stores applications (i.e. PSTs)
2- Amount of cores present in the box where Provisioner is running
In detail:
1- Provisioner will perform a task as fast as the provisioning target system does. If one of the PSTs where the provisioing operation requires a task to be performed is slow, Provisioner will not be able to process that operation faster than the particular task will. Thus, an identity store network with slow elements would prevent Provisioner from performing fast.
2- Each core can process one thread at a time, thus, there is no gain in running multiple threads if you only have one core in your box.
My conclusion would be that you have to decide how many Consumer threads to launch based on the number of cores your box has and also the characteristics of the identity store network to which you are planning to send provisioning request's tasks.
I've opened this discussion wishing to gather more thoughts on how to improve and measure Provisioner's throughoutput.
Kind regards,
/GE.-
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Today one of Provisioner's users asked me how would he be able to measure Provisioner's throughoutput and tune Provisioner to improve it.
Provisioner is a multi-threading software, meaning that it can run more than one task in parallel. Actually what Provisioner V1.0.17 does today is to start its main thread called "Producer" and it then opens one thread for each provisioning operation that it has to execute, this threads are called "Consumers". The number of consumers Provisioner will launch can be configured by a parameter in the command line.
Having lots of threads running in parallel will not allways provide better end-to-end system throughoutput, this is highly dependent in a couple of facts:
1- Response time of the identity stores applications (i.e. PSTs)
2- Amount of cores present in the box where Provisioner is running
In detail:
1- Provisioner will perform a task as fast as the provisioning target system does. If one of the PSTs where the provisioing operation requires a task to be performed is slow, Provisioner will not be able to process that operation faster than the particular task will. Thus, an identity store network with slow elements would prevent Provisioner from performing fast.
2- Each core can process one thread at a time, thus, there is no gain in running multiple threads if you only have one core in your box.
My conclusion would be that you have to decide how many Consumer threads to launch based on the number of cores your box has and also the characteristics of the identity store network to which you are planning to send provisioning request's tasks.
I've opened this discussion wishing to gather more thoughts on how to improve and measure Provisioner's throughoutput.
Kind regards,
/GE.-