<div dir="ltr">We use GrpTresRunMins for this, with the idea that it's OK for users to occupy lots of resources with short-running jobs, but not so much with long-running jobs.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 7, 2018 at 8:41 AM, Bill Barth <span dir="ltr"><<a href="mailto:bbarth@tacc.utexas.edu" target="_blank">bbarth@tacc.utexas.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Of course, Matteo. Happy to help. Our job completion script is:<br>
<br>
#!/bin/bash<br>
<br>
OUTFILE=/var/log/slurm/tacc_<wbr>jobs_completed<br>
<br>
echo "$JOBID:$UID:$ACCOUNT:$BATCH:$<wbr>START:$END:$SUBMIT:$PARTITION:<wbr>$LIMIT:$JOBNAME:$JOBSTATE:$<wbr>NODECNT:$PROCS" >> $OUTFILE<br>
<br>
exit 0<br>
<br>
and our config settings (from scontrol show config) are:<br>
<br>
JobCompLoc              = /etc/slurm/tacc_job_<wbr>completion.sh<br>
JobCompType             = jobcomp/script<br>
<br>
Feel free to steal as much of that as you like, just update the lines and names to remove the “tacc” parts. This script needs to be present on the machine that slurmctld is running on. Our internal accounting system is RESTful, so we’re thinking of using this mechanism to write accounting records to it directly in this plugin script with curl/wget calls rather than appending to our flat file and shipping that info to our database via cron script nightly. That would give us the ability to do live updates of balances (which the Slurm DB already supports) to prevent overdrawn accounts. This is convoluted, but we have had to reinvent the wheel a little since we need to report usage to both our local accounting database and a national one. Yes, there were probably other ways to do this, but the infrastructure is now historical and set in some stone.<br>
<br>
Best,<br>
Bill.<br>
<br>
--<br>
Bill Barth, Ph.D., Director, HPC<br>
<a href="mailto:bbarth@tacc.utexas.edu">bbarth@tacc.utexas.edu</a>        |   Phone: <a href="tel:%28512%29%20232-7069" value="+15122327069">(512) 232-7069</a><br>
Office: ROC 1.435            |   Fax:   <a href="tel:%28512%29%20475-9445" value="+15124759445">(512) 475-9445</a><br>
<br>
<br>
<br>
On 2/7/18, 12:28 AM, "slurm-users on behalf of Matteo F" <<a href="mailto:slurm-users-bounces@lists.schedmd.com">slurm-users-bounces@lists.<wbr>schedmd.com</a> on behalf of <a href="mailto:mfasco984@gmail.com">mfasco984@gmail.com</a>> wrote:<br>
<br>
    Thanks Bill, I really appreciate the time you spent giving this detailed answer.<br>
    I will have a look at the plugin system as the integration with out accounting system would be a nice feature.<br>
<br>
<br>
<br>
<br>
    @Chris thanks, I've had a look GrpTRES but I'll probably go with the Spank route.<br>
<br>
<br>
    Best,<br>
    Matteo<br>
<br>
    On 6 February 2018 at 13:58, Bill Barth<br>
    <<a href="mailto:bbarth@tacc.utexas.edu">bbarth@tacc.utexas.edu</a>> wrote:<br>
<br>
    Chris probably gives the Slurm-iest way to do this, but we use a Spank plugin that counts the jobs that a user has in queue (running and waiting) and sets a hard cap on how many they can have. This should probably be scaled to the size of the system and the<br>
     partition they are submitting to, but on Stampede 2 (4200 KNL nodes and 1736 SKX nodes), we set this, across all queues to about 50, which has been our magic number, across numerous schedulers over the years on systems ranging from hundreds of nodes to Stamped2e<br>
     1 with 6400. Some users get more by request and most don’t even bump up against the limits. We’ve started to look at using TRES on our test system, but we haven’t gotten there yet. Our use of the DB is minimal, and our process to get every user into it when<br>
     their TACC account is created is not 100% automated yet (we use the job completion plugin to create a flat file with job records which our local accounting system consumes to decrement allocation balances, if you care to know).<br>
<br>
    Best,<br>
    Bill.<br>
<br>
    --<br>
    Bill Barth, Ph.D., Director, HPC<br>
    <a href="mailto:bbarth@tacc.utexas.edu">bbarth@tacc.utexas.edu</a>        |   Phone:<br>
    <a href="tel:%28512%29%20232-7069" value="+15122327069">(512) 232-7069</a> <tel:%28512%29%20232-7069><br>
    Office: ROC 1.435            |   Fax:   <a href="tel:%28512%29%20475-9445" value="+15124759445">(512) 475-9445</a> <tel:%28512%29%20475-9445><br>
<br>
<br>
<br>
    On 2/6/18, 6:03 AM, "slurm-users on behalf of Christopher Samuel" <<a href="mailto:slurm-users-bounces@lists.schedmd.com">slurm-users-bounces@lists.<wbr>schedmd.com</a> on behalf of<br>
    <a href="mailto:chris@csamuel.org">chris@csamuel.org</a>> wrote:<br>
<br>
        On 06/02/18 21:40, Matteo F wrote:<br>
<br>
        > I've tried to limit the number of running job using Qos -><br>
        > MaxJobsPerAccount, but this wouldn't stop a user to just fill up the<br>
        > cluster with fewer (but bigger) jobs.<br>
<br>
        You probably want to look at what you can do with the slurmdbd database<br>
        and associations. Things like GrpTRES:<br>
<br>
<br>
    <a href="https://slurm.schedmd.com/sacctmgr.html" rel="noreferrer" target="_blank">https://slurm.schedmd.com/<wbr>sacctmgr.html</a> <<a href="https://slurm.schedmd.com/sacctmgr.html" rel="noreferrer" target="_blank">https://slurm.schedmd.com/<wbr>sacctmgr.html</a>><br>
<br>
        # GrpTRES=<TRES=max TRES,...><br>
        #     Maximum number of TRES running jobs are able to be allocated in<br>
        # aggregate for this association and all associations which are children<br>
        # of this association. To clear a previously set value use the modify<br>
        # command with a new value of -1 for each TRES id.<br>
        #<br>
        #  NOTE: This limit only applies fully when using the Select Consumable<br>
        # Resource plugin.<br>
<br>
        Best of luck,<br>
        Chris<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</blockquote></div><br></div>