Job suspension and host/consumable resources

This is pbs 19.1.3

Background:

I have an express queue, prio 150 and a normal queue at prio 50.
preempt_prio is set to “express_queue, normal_jobs” in the scheduler config ,preempt_order is “SCR”.

There is a custom consumable resource that tracks a site wide license feature I care about:
create resource mylicense, type=long, flag=q and set the number accordingly.

I have also a host resource that I assign to the execution hosts:
create resource machinetype, type=string, flag=h

set node host1 resources_available.machinetype=fast
set node host2 resources_available.machinetype=slow

And restrict_res_to_release_on_suspend is set as:
set server restrict_res_to_release_on_suspend = mylicense
set server restrict_res_to_release_on_suspend += ncpus

The problem:

A job gets submitted to the express queue with -l mylicense=1 and as expected,. a job in the normal queue is suspended, the mylicense resource is freed up and the express queue job starts.

However if I submit to the express queue with -l mylicense=1 and -l machinetype=fast a job in the normal queue will only get suspended if it has both mylicense=1 & machinetype=fast set.

I would expect that any job in the normal that has the consumable resource set is a candidate for suspension. The custom host resource has to match? I wouldn’t expect that.

Can anyone tell me what I am missing?

Thanks!

Could you please let us know the result if you submit a job to express queue without -l mylicense=1 and -l machinetype=fast requested via qsub ?

qsub -q express – /bin/sleep 1000

Will this job suspend any job in the normal queue ?

Yes, that does suspend any job in the normal queue.

Also qsub -q express -l mylicense=1 suspends jobs in the normal queue that have mylicense=1 set, regardless if they also have the machinetype resource set.

qsub -q expres -l mylicense=1 -l machinetype=fast will only suspend normal queue jobs that have both those resources set.