I want to ask if there is a support for nonconsumable resources on host with the float and long type.
I need a resource like this:
spec type=float flag=h
I added the resource on the node:
set node torque1 resources_available.spec = 30.6
When I try to run two same jobs (qsub -I -l select=spec=30) within one scheduler cycle, only the first one will start. The second one will start later (in next sched. cycle).
I then add the resource bob to the resources line in sched_config
resources: ncpus,mem,host,vnode,vmem,bob
I then restart the pbs server and run some jobs.
Last login: Mon Jan 23 17:22:44 UTC 2017 on pts/1
[centos@pbs-server ~]$ qsub -lselect=1:ncpus=1:bob=30 – /bin/sleep 120
247.pbs-server
[centos@pbs-server ~]$ qsub -lselect=1:ncpus=1:bob=30 – /bin/sleep 120
248.pbs-server
[centos@pbs-server ~]$ qsub -lselect=1:ncpus=1:bob=30 – /bin/sleep 120
249.pbs-server
[centos@pbs-server ~]$ qstat
Job id Name User Time Use S Queue
247.pbs-server STDIN centos 00:00:00 R workq
248.pbs-server STDIN centos 00:00:00 R workq
249.pbs-server STDIN centos 00:00:00 R workq
I believe that this is what your are expecting. Am I missing something?
@vchlum
It is documented in PBS Professional reference guide that only boolean, duration, string and string-array can be used as non-consumable resources.
Please refer to Chapter 5 section 5.2 in the guide on this url- http://www.pbsworks.com/pdfs/PBSReferenceGuide13.0.pdf
I want to add SPECfp2006 to each node and I want to be able to request the minimal spec. This means that the node with spec=30.6 is suitable for jobs with select=spec=10 or spec=30 or for spec=30.6.
So there is no way how to do that now and it is not a bug?
String doesn’t work. If I use string i get: Insufficient amount of resource: spec (30 != 30.6).
@vchlum Yes, I think with the proposed design to use conditional operators this might work for you.
With that change in place you can make the resource spec a string and submit jobs with “spec <= 30.6”, scheduler will select all nodes that have their spec specified as 30.6 or less.
Vasek,
What you are seeing is some legacy functionality. Until we added the ability to query the server’s resource types, the scheduler had to derive the type based on the value. Any numeric value was marked as consumable. This means within a cycle, the scheduler will treat such a resource as consumable. You didn’t make the value consumable in the server (flag=hn). This means the next cycle, the scheduler queries the world and doesn’t see any resources_assigned values and starts afresh.
Fixing this isn’t as easy as just querying the type from the server. We make resources consumable in two ways. If it is a static resource, it requires flag=hn. If it is a server_dyn_res resource, it requires flag=h.
This issue can be resolved easy enough when server periodic hooks can modify resources. At that point a hook can serve as the method to update a server_dyn_res resource and all consumable resources can be marked as flag=hn. Nonconsumable resources can be marked as flag=h and be made to work as you desire.