You are here


The Scheduling options in PROOF

NB: scheduling options described in this section were experiemntal and are depercated. Scheduling in PROOF is provided via Proof-On-Demand(PoD) and the chosen underlying resource management system.

The task of the PROOF scheduler is to assign a set of workers to each query submitted to the system in accordance with the scheduling policy or to enqueue the job (if the policy allows that).

The purpose of scheduling in PROOF is to efficiently utilize resources with the best response time possible on systems ranging from multi-core machines to big clusters.

Scheduling Policies

The scheduling policy determines the algorithm of the scheduler. It's defined by the schedparam directive in the config file and by the mode of scheduling. Below some of the options are described:

Load based scheduling

This option enables the load based scheduler which decides on the number of workers assigned to a user/query based on the current load of the PROOF system, user priority and the scheduling policy.


Priorities and fair-share

The number of workers assigned to a session can also depend on the priority of the user or group. The priorities can be static or calculated dynamically in cooperation with a monitoring system like MonALISA. The interface through which PROOF scheduler reads those priorities, is the group file. Example of the group file is distributed with ROOT in:



Currently, to implement a history-based calculation of priorities, one needs a standalone cron job or a demon which will read the history from the monitoring database and edit the group file.


This option can be enabled with schedparam directive in the config file. For example:

xpd.schedparam selopt:load fraction:0.7


Even though PROOF is designed for interactive work, the system must foresee the situation of congestion where the volume of submitted jobs exceeds the processing capability. Queueing is one way of handling that situation. The alternative is to reject new queries until the system load decreases. PROOF scheduler offers the FIFO queue which can be used in conjunction with the load based scheduling or the static scheduling with a limit on the maximum number of running jobs/sessions set. For details see the schedparam directive.


To enable the FIFO queue with the load-based scheduling use the

schedparam selopt:load queue:fifo
To enable the round robin worker assignment with maximum number of concurrent jobs/sessions set to k and a FIFO queue, use:
schedparam selopt:roundrobin queue:fifo mxrun:k



Scheduling mode (per job or per session)

Dynamic per-job worker startup (available since ROOT version: 5-21-04)

In order to refine the resource utilization in a multi-user environment, it is advised to use the dynamic per-job scheduling.

In this mode the PROOF session is started only on the master node and workers are assigned when a query is submitted for processing (i.e. when TProof::Process is called).


To enable use of this mode add this line to the config file:

xpd.putrc Proof.DynamicStartup 1

Static per-session scheduling

This is the default option. The workers are assigned when the user starts a session with TProof::Open and are released only after the session is finished.

Current Developments

If you have any questions, feedback or requests for scheduling in different use cases, don't hesitate to contact Jan Iwaszkiewicz. There are new features being developed including preemption and fair-share scheduling (based on usage history).