[GE users] Fairness sharing.

reuti reuti at staff.uni-marburg.de
Thu Feb 4 23:23:53 GMT 2010


Hi,

Am 04.02.2010 um 18:31 schrieb jesperkrogh:

> I would like implement the following:
>
> The first 20 jobs of each user, should run at "highest" priority. So
> that if multiple users are using the cluster, one submitting at a high
> priority cannot grab "all", cpus.
>
> But if there is only one user.. that person is allowed to consume
> everything.
>
> Is that possible.

some kind of. We will need to setup:

- the global limit in the scheduler configuration can be reset to 0  
(i.e. the maxujobs entry in case you adjusted this).

- one complex for the jobs:

jobs                jb         INT         <=      YES          
JOB        1        1000

- give unlimited resources for jobs: $ qconf -me global
...
complex_values        jobs=999999
...

- one RQS like: $ qconf -arqs

{
    name         joblimits
    description  Setup job limits
    enabled      TRUE
    limit        name standard users {*} to jobs=20
}

This must also be present in two files (FALSE and TRUE only changed):

~/joblimits_unlimited =>
{
    name         joblimits
    description  Setup job limits
    enabled      FALSE
    limit        name standard users {*} to jobs=20
}

~/joblimits_default =>
{
    name         joblimits
    description  Setup job limits
    enabled      TRUE
    limit        name standard users {*} to jobs=20
}

As it's static, a cron job which can even run under the SGE-Admin  
account (crontab -e) will check the every 5 minutes:

SHELL=/bin/sh
# uncomment the following line if it works
# MAILTO=""
*/5 * * * * ~/adjust_joblimits.sh

with this script:

#!/bin/sh
. /usr/sge/default/common/settings.sh
PENDING_OTHERS=`qstat -u "*" -s p | awk 'BEGIN {FIRSTRUN=1;PENDING=0}  
(NR >= 3) {if (FIRSTRUN) {USER=$4; FIRSTRUN=0} else if (USER != $4)  
{PENDING=1;exit}} END {print PENDING}'`
if [ "$PENDING_OTHERS" -ne 0 ]; then
     qconf -Mrqs ~/joblimits_default joblimits
else
     qconf -Mrqs ~/joblimits_unlimited joblimits
fi

(Only drawback is, that jobs on hold also count as pending. If there  
are hold jobs by other users, you would need to remove the jobs you  
get with `qstat -u "*" -s h` from the list you get with `qstat -u "*"  
-s p`. AFAIK there is no option to get pending jobs except the hold  
ones.)

-- Reuti



> -- 
> Jesper
>
> ------------------------------------------------------
> http://gridengine.sunsource.net/ds/viewMessage.do? 
> dsForumId=38&dsMessageId=243282
>
> To unsubscribe from this discussion, e-mail: [users- 
> unsubscribe at gridengine.sunsource.net].

------------------------------------------------------
http://gridengine.sunsource.net/ds/viewMessage.do?dsForumId=38&dsMessageId=243353

To unsubscribe from this discussion, e-mail: [users-unsubscribe at gridengine.sunsource.net].



More information about the gridengine-users mailing list