I am trying to implement some resource limitations for users or groups. I only want to limit the maximum number of CPUs that a user can consume in total, not per job. For example:

USERA = 4 CPUs
USERB = 16 CPUs

GROUPA = Each member can use up to 64 CPUs

Is using fairshare with the following formula the best path for accomplishing this task or is there an easier way with qmgr:

@sscluster It depends what kind of limits you want to put in your complex. There are majorly two kinds of limits that you can apply in PBS - queued limits and run limits.

If you wish to limit userA from submitting any more jobs when it has already requested for 4 CPUs previously then you may want to use queued limits.
example - qmgr -c "s s max_queued_res.ncpus=[u:userA=4]"
If you want userA to continue submitting jobs but want to restrict this user from not using more than 4 cpus at a time then you might want to use run limits.
example - qmgr -c “s s max_run_res.ncpus=[u:userA=4]”

These limits can be applied to server or a specific queue as well.

For more details please refer to section “5.15” related to “Managing Resource Usage” in admin guide - here.

I would suggest using max_queued_res.ncpus for this.
Information on the same is available in Administrator guide. Please let me know if you need further information.

I don’t think you are looking for max_queued_res.ncpus. This limits how many ncpus can be queued or running. I believe that you are looking for max_run_res.ncpus. This will limit a user to only be able to run a certain number of ncpus without also restricting the number of ncpus sitting in the queue.

@jon, @arungrover, @prakashcv13
It seems as though max_queued_res.ncpus is a server variable that can only be set once. How do I set it for mutliple users?