Currently we have moved resources away from this project. So this project is stalled for now.

This is a design proposal for PBS to support job submissions with conditional operators to filter out node where the job can run.

Here is the list of Use cases and motivation behind it.


Motivation:  Resilience – ensure jobs run “correctly” and are unlikely to experience faults due to use of nodes with incompatible properties (with respect to the applications)

Use Cases: 

1.      User requests all allocated nodes will have CPU speed > 2 GHz

2.      User requests none of the allocated nodes will be node X, node Y, node Z, …

3.      User requests none of the allocated nodes will be ARM nor POWER architecture

4.      User requests all of the allocated nodes should be running Linux version 6.5 or higher, but none will be running 6.5.2


Gist of design: We can expose a way for each job to pass a python expression that can be used to filter out nodes on the basis of their resources_available and resources_assigned present on the nodes. This filter will be used to filter nodes every time a job (submitted with node-filter) is considered to run or the time scheduler tries to add this job to the calendar.

link to  forum discussion

Interface 1: Extend PBS to allow users to submit jobs with a node-filter (nfilter) resource expression.

Interface 2: Errors logged in scheduler log file while evaluating "nfilter" resource expression