Since the development version 5.23/02 (trunk #23270) it is possible to control the number of sessions running concurrently in a smooth, way by queueing the ones that cannot be started into a FIFO queue.
This functionality is controlled by the directive xpd.schedparam. The queue is enabled by the option 'queue=fifo'. Session running control works better in conjunction with per-query worker assignment. This mode is enabled by the directive
xpd.putrc Proof.DynamicStartup 1For load-based worker assignment this mode is mandatory (for the time being, the directive has to be explicitly put also for load-based assignment; this will be automatized in the future). For standard worker assignment (full set or sub-set), the maximum number of sessions running concurrently is defined by the parameter 'mxrun'; for example, the following setting runs only 5 sessions concurrently:
xpd.schedparam queue:fifo mxrun:5For load-based worker assignment the number of sessions running is determined by the algorithm which determines the worker assignment. Processing requests which cannot be satisfied are queued and the running mode switched to asynchronous.